커뮤니티

신뢰성에 점점 금이 가고 있네요..ㅠㅠ 청산이 되다 안되다 그래요~~~

프로필 이미지
이형지
2018-10-24 16:03:46
234
글번호 122999
답변완료

첨부 이미지

30분봉으로 하고 있으며 청산을 enditime 으로 150000(오후 3시) 에 청산하는 수식을 하고 있는데 첨부화일에 보듯이 청산이 먹이지 않을니... 현재시간 오후 3시 40분.... 청산이 3시 또는 3시 30분에 되어야하는데... 미치겠네요~~ endtime을 150000(오후3시)로 설정하면 3시에 청산되어야하는거 아닌가요? 어쩔때는 15:30 분에 청산될때도 있고 어떨때는 15:00에 청산될때도 있고 어쩔때는 아예 안먹 일때도 있고 미치겠네요~~~뭐가 문제인가요?? input : P1(1),P2(1),P3(1),P4(1),P5(1),p6(1000),starttime(223000),endtime(150000),P7(1.9),P8(0.5); var : cnt(0),sum(0),sum1(0),mav(0),mav1(0),T(0),mav2(0),mav3(0); var : sum3(0),Tcond(false); Condition1 = MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("StopLoss",1) or IsExitName("StopProfitTarget",1)) and TimeToMinutes(stime) <= TimeToMinutes(ExitTime(1))+p6; #설정 if sdate != sdate[1] then SetStopEndofday(endtime); if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; SetStopEndofday(0);#해제 } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; } if DayClose(P3) > 0 Then { sum = 0; sum1 = 0; for cnt = 0 to P3-1 { sum = sum + DayClose(cnt); sum1 = sum1 + DayClose(cnt+1); } mav = sum/P3; mav1 = sum1/P3; T = 0; if mav > mav1 Then T = 1; if mav < mav1 Then T = -1; if T == 1 Then mav2=p2 ; if T == -1 Then mav2=p5; if T == 1 Then mav3=p1 ; if T == -1 Then mav3=p4 ; sum3 = 0; for cnt = 1 to 20 { sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt)); } value1 = sum3/20 ; If MarketPosition == 0 and C >= (dayopen+value1*mav3) and C<C[1] and Condition1 == false Then { Buy("매수"); } if MaxEntries == 1 and MarketPosition == 1 Then { buy("추가매수",atlimit,EntryPrice-P7); } If MarketPosition == 0 and C <= (dayopen-value1*mav2) and C>C[1] and Condition1 == false Then { sell("매도"); } if MaxEntries == 1 and MarketPosition == -1 Then { Sell("추가매도",atlimit,EntryPrice+P8); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-10-25 09:38:52

안녕하세요 예스스탁입니다. 설정창의 강제청산탭에서 청산시점 설정 확인하시기 바랍니다. 랭귀지에서 시간은 수신되는 데이터의 시간으로 판단합니다. 지정한 시간이후의 첫틱이 수신되면 청산하는데 설정창의 강제청산의 시점이 조건만족즉시이면 시간조건 충족되는 시세가 수신되는 즉시 청산이 발생하고 봉완성시이면 해당 시간이 포함된 봉이 완성될때 청산이 발생합니다. 하나의 봉의 완성되는 시점은 다음봉시가가 수신될때 입니다. 해당식 테스트 해보았지만 청산신호가 정상적으로 발생되는 수식입니다. 즐거운 하루되세요 > 이형지 님이 쓴 글입니다. > 제목 : 신뢰성에 점점 금이 가고 있네요..ㅠㅠ 청산이 되다 안되다 그래요~~~ > 30분봉으로 하고 있으며 청산을 enditime 으로 150000(오후 3시) 에 청산하는 수식을 하고 있는데 첨부화일에 보듯이 청산이 먹이지 않을니... 현재시간 오후 3시 40분.... 청산이 3시 또는 3시 30분에 되어야하는데... 미치겠네요~~ endtime을 150000(오후3시)로 설정하면 3시에 청산되어야하는거 아닌가요? 어쩔때는 15:30 분에 청산될때도 있고 어떨때는 15:00에 청산될때도 있고 어쩔때는 아예 안먹 일때도 있고 미치겠네요~~~뭐가 문제인가요?? input : P1(1),P2(1),P3(1),P4(1),P5(1),p6(1000),starttime(223000),endtime(150000),P7(1.9),P8(0.5); var : cnt(0),sum(0),sum1(0),mav(0),mav1(0),T(0),mav2(0),mav3(0); var : sum3(0),Tcond(false); Condition1 = MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("StopLoss",1) or IsExitName("StopProfitTarget",1)) and TimeToMinutes(stime) <= TimeToMinutes(ExitTime(1))+p6; #설정 if sdate != sdate[1] then SetStopEndofday(endtime); if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; SetStopEndofday(0);#해제 } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; } if DayClose(P3) > 0 Then { sum = 0; sum1 = 0; for cnt = 0 to P3-1 { sum = sum + DayClose(cnt); sum1 = sum1 + DayClose(cnt+1); } mav = sum/P3; mav1 = sum1/P3; T = 0; if mav > mav1 Then T = 1; if mav < mav1 Then T = -1; if T == 1 Then mav2=p2 ; if T == -1 Then mav2=p5; if T == 1 Then mav3=p1 ; if T == -1 Then mav3=p4 ; sum3 = 0; for cnt = 1 to 20 { sum3 = sum3 + (DayHigh(cnt)-DayLow(cnt)); } value1 = sum3/20 ; If MarketPosition == 0 and C >= (dayopen+value1*mav3) and C<C[1] and Condition1 == false Then { Buy("매수"); } if MaxEntries == 1 and MarketPosition == 1 Then { buy("추가매수",atlimit,EntryPrice-P7); } If MarketPosition == 0 and C <= (dayopen-value1*mav2) and C>C[1] and Condition1 == false Then { sell("매도"); } if MaxEntries == 1 and MarketPosition == -1 Then { Sell("추가매도",atlimit,EntryPrice+P8); } }