커뮤니티

질문드립니다.

프로필 이미지
stockric
2017-07-03 22:59:10
176
글번호 110963
답변완료

첨부 이미지

var : WH(0),WL(0),Dcnt(0); #영업일 기준으로 한주의 시작 if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then{ WH = H;#주간 최고가를 저장할 변수(초기값 해당봉고가) WL = L;#주간 최저가를 저장할 변수(초기값 해당봉저가) Dcnt = 0; #주간 날짜수를 저장할 변수(초기값0) } #영업일이 변경되면 1씩 증가 if bdate != bdate[1] Then Dcnt = Dcnt+1; #WH에 저장된 값보다 큰 고가가 발생하면 WH에 값을 현재봉 고가로 변경 if H > WH Then WH = H; #WL에 저장된 값보다 작은 저가가 발생하면 WL에 값을 현재봉 저가로 변경 if L < WL Then WL = L; #주간 첫날이면 if Dcnt == 1 then{ var1 = max(WH,dayhigh(1)); var2 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.236)+log10(max(WH,dayhigh(1)))); var3 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.382)+log10(max(WH,dayhigh(1)))); var4 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.500)+log10(max(WH,dayhigh(1)))); var5 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.618)+log10(max(WH,dayhigh(1)))); var6 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.764)+log10(max(WH,dayhigh(1)))); var7 = min(WL,daylow(1)); } else{#두번째 날부터 var1 = WH; var2 = 10^(((log10(WH)-log10(WL))*-0.236)+log10(WH)); var3 = 10^(((log10(WH)-log10(WL))*-0.382)+log10(WH)); var4 = 10^(((log10(WH)-log10(WL))*-0.500)+log10(WH)); var5 = 10^(((log10(WH)-log10(WL))*-0.618)+log10(WH)); var6 = 10^(((log10(WH)-log10(WL))*-0.764)+log10(WH)); var7 = WL; } If DayOpen > Close Then Sell(); if MarketPosition == -1 then{ if countif(CrossDown(c,var3),BarsSinceEntry) >= 1 and crossup(C,var3) Then ExitShort(); if countif(CrossDown(c,var4),BarsSinceEntry) >= 1 and crossup(C,var4) Then ExitShort(); if countif(CrossDown(c,var5),BarsSinceEntry) >= 1 and crossup(C,var5) Then ExitShort(); if CrossDown(c,var6) Then ExitShort(); if stime == 050000 or (stime > 050000 and stime< 050000) then{ exitlong(); exitshort();} SetStopLoss(12*PriceScale); } 올려주신 수식인데요. 당일청산 넣고 했습니다. 근데 사진을 보시면 청산과 진입이 동시에 되고있습니다. barssinceEntry로 경과봉수를 count하지만 crossdown과 crossup이 같이 일어날 수 없고 동시에 신호가 나오면 신호가 나오는즉슨 팔 수 밖에 없지않나요? 실제로 봉갯수를 보면 0개에 진입과 청산이 되고있음을 볼 수 있습니다. 2. 매도시그널이 12틱에 온전히 안되는 이유가 무엇인지요? 3. 사진과 같이 종가가 var선 어디서 시작할지 모르는데 저렇게 쭉 나열해놓으면 종가가 어디에 위치하든 위치하는 시점부터 (위에선을 배제한체) 라인을 구분하여 진입하여 청산하는건가요? 거기서 에러가뜨면 동시 진입, 청산이 이루어지지 않을까 싶은데요.
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2017-07-04 14:25:38

안녕하세요 예스스탁입니다. 1 현재 작성하신 진입의 형태는 종가가 시초가보다 작기만 하면 진입하는 내용으로 청산신호봉의 종가가 시초가보다 작으면 같은봉에 신호가 들어갈수 있습니다. 진입식에 포지션확인 조건 추개해서 청산후에 들어가게 하시거나 하셔야 합니다. 2 PointStop으로 지정하셔야 합니다. SetStopLoss(12*PriceScale,PointStop); 함수 도움말 참고하시기 바랍니다. If MarketPosition == 0 and DayOpen > Close Then Sell(); if MarketPosition == -1 then{ if countif(CrossDown(c,var3),BarsSinceEntry) >= 1 and crossup(C,var3) Then ExitShort(); if countif(CrossDown(c,var4),BarsSinceEntry) >= 1 and crossup(C,var4) Then ExitShort(); if countif(CrossDown(c,var5),BarsSinceEntry) >= 1 and crossup(C,var5) Then ExitShort(); if CrossDown(c,var6) Then ExitShort(); if stime == 050000 or (stime > 050000 and stime[1] < 050000) then{ exitlong(); exitshort(); } } SetStopLoss(12*PriceScale,PointStop); 3 진입이 어느봉에서 발생하든지 진입 후 지정한 라인을 하향이탈한 봉이 있고 해당 라인을 다시 상향돌파하면 청산합니다. 즐거운 하루되세요 > stockric 님이 쓴 글입니다. > 제목 : 질문드립니다. > var : WH(0),WL(0),Dcnt(0); #영업일 기준으로 한주의 시작 if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then{ WH = H;#주간 최고가를 저장할 변수(초기값 해당봉고가) WL = L;#주간 최저가를 저장할 변수(초기값 해당봉저가) Dcnt = 0; #주간 날짜수를 저장할 변수(초기값0) } #영업일이 변경되면 1씩 증가 if bdate != bdate[1] Then Dcnt = Dcnt+1; #WH에 저장된 값보다 큰 고가가 발생하면 WH에 값을 현재봉 고가로 변경 if H > WH Then WH = H; #WL에 저장된 값보다 작은 저가가 발생하면 WL에 값을 현재봉 저가로 변경 if L < WL Then WL = L; #주간 첫날이면 if Dcnt == 1 then{ var1 = max(WH,dayhigh(1)); var2 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.236)+log10(max(WH,dayhigh(1)))); var3 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.382)+log10(max(WH,dayhigh(1)))); var4 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.500)+log10(max(WH,dayhigh(1)))); var5 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.618)+log10(max(WH,dayhigh(1)))); var6 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.764)+log10(max(WH,dayhigh(1)))); var7 = min(WL,daylow(1)); } else{#두번째 날부터 var1 = WH; var2 = 10^(((log10(WH)-log10(WL))*-0.236)+log10(WH)); var3 = 10^(((log10(WH)-log10(WL))*-0.382)+log10(WH)); var4 = 10^(((log10(WH)-log10(WL))*-0.500)+log10(WH)); var5 = 10^(((log10(WH)-log10(WL))*-0.618)+log10(WH)); var6 = 10^(((log10(WH)-log10(WL))*-0.764)+log10(WH)); var7 = WL; } If DayOpen > Close Then Sell(); if MarketPosition == -1 then{ if countif(CrossDown(c,var3),BarsSinceEntry) >= 1 and crossup(C,var3) Then ExitShort(); if countif(CrossDown(c,var4),BarsSinceEntry) >= 1 and crossup(C,var4) Then ExitShort(); if countif(CrossDown(c,var5),BarsSinceEntry) >= 1 and crossup(C,var5) Then ExitShort(); if CrossDown(c,var6) Then ExitShort(); if stime == 050000 or (stime > 050000 and stime< 050000) then{ exitlong(); exitshort();} SetStopLoss(12*PriceScale); } 올려주신 수식인데요. 당일청산 넣고 했습니다. 근데 사진을 보시면 청산과 진입이 동시에 되고있습니다. barssinceEntry로 경과봉수를 count하지만 crossdown과 crossup이 같이 일어날 수 없고 동시에 신호가 나오면 신호가 나오는즉슨 팔 수 밖에 없지않나요? 실제로 봉갯수를 보면 0개에 진입과 청산이 되고있음을 볼 수 있습니다. 2. 매도시그널이 12틱에 온전히 안되는 이유가 무엇인지요? 3. 사진과 같이 종가가 var선 어디서 시작할지 모르는데 저렇게 쭉 나열해놓으면 종가가 어디에 위치하든 위치하는 시점부터 (위에선을 배제한체) 라인을 구분하여 진입하여 청산하는건가요? 거기서 에러가뜨면 동시 진입, 청산이 이루어지지 않을까 싶은데요.
프로필 이미지

stockric

2017-07-04 14:36:57

답변감사합니다. 포지션확인후 진입은 마켓포지션 == 2 then으로 넣어도 괜찮을런지요. 전전봉값을 반환시키게되나요? 아니면 그냥 조건만족후 청산된 전전봉인가요? 틀렸으면 로직 부탁드립니다 .감사합니다.