커뮤니티

수식 수정좀 부탁드려요

프로필 이미지
천왕봉
2018-11-13 21:23:45
176
글번호 123631
답변완료
아래 작성된 청산 수식이 어떤 때는 조건을 만족하는 다음 봉에서 청산이 되고, 어떤 때는 조건을 만족하는 봉에서 청산이 되기도 하며, 또 어떤 경우는 지정된 시간을 한 참 지나서 청산됩니다. 문제점이 없는지 좀 살펴봐주세요. 예를 들면 오전 10시 ~16시 까지는 진입신호 발생후 12분 후에 청산하는 조건에서 진입 시간이 10시 00분 00초 라고 가정하면 청산은 10시 12분 00초에 청산되어야 하지만 봉의 완성이 분 단위까지 정확하게 일치하지 않으므로 10시12분 00초 후에 발생되는 첫 봉에서 청산되는게 맞는데 첫봉을 지나 두 번 째 봉에 청산되거나 여러개 봉을 지나서 청산되는 겁니다. if MarketPosition != 0 then { if EntryTime >= 100000 and EntryTime < 160000 then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+12 Then { ExitLong(); ExitShort(); } } if EntryTime >= 160000 and EntryTime < 223000 then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+6 Then { ExitLong(); ExitShort(); } } if EntryTime >= 223000 or EntryTime < 20000 then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+3 Then { ExitLong(); ExitShort(); } } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-14 13:56:52

안녕하세요 예스스탁입니다. 수식에서 시간은 완성봉의 시간으로 파악됩니다. 완성봉으로 지정한 분을 넘어가는 첫봉에서 신호가 발생합니다. 현재 수식에서 다른 부분은 큰 문제가 없습니다. 다만 진입이 22시30분~2시 사이에 발생한 것은 0시를 기준으로 포지션이 다음날로 넘어 갈수 있어 영업일 변경기준 24시간을 체크하게 변경해 드립니다. var : S1(0),D1(0),TM(0),TF(0); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(time)-S1; Else TM = TimeToMinutes(time)+1440-S1; } if MarketPosition != 0 then { if EntryTime >= 100000 and EntryTime < 160000 then { if TM >= TM[BarsSinceEntry]+12 Then { ExitLong(); ExitShort(); } } if EntryTime >= 160000 and EntryTime < 223000 then { if TM >= TM[BarsSinceEntry]+6 Then { ExitLong(); ExitShort(); } } if EntryTime >= 223000 or EntryTime < 20000 then { if TM >= TM[BarsSinceEntry]+3 Then { ExitLong(); ExitShort(); } } } 즐거우 하루되세요 > 천왕봉 님이 쓴 글입니다. > 제목 : 수식 수정좀 부탁드려요 > 아래 작성된 청산 수식이 어떤 때는 조건을 만족하는 다음 봉에서 청산이 되고, 어떤 때는 조건을 만족하는 봉에서 청산이 되기도 하며, 또 어떤 경우는 지정된 시간을 한 참 지나서 청산됩니다. 문제점이 없는지 좀 살펴봐주세요. 예를 들면 오전 10시 ~16시 까지는 진입신호 발생후 12분 후에 청산하는 조건에서 진입 시간이 10시 00분 00초 라고 가정하면 청산은 10시 12분 00초에 청산되어야 하지만 봉의 완성이 분 단위까지 정확하게 일치하지 않으므로 10시12분 00초 후에 발생되는 첫 봉에서 청산되는게 맞는데 첫봉을 지나 두 번 째 봉에 청산되거나 여러개 봉을 지나서 청산되는 겁니다. if MarketPosition != 0 then { if EntryTime >= 100000 and EntryTime < 160000 then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+12 Then { ExitLong(); ExitShort(); } } if EntryTime >= 160000 and EntryTime < 223000 then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+6 Then { ExitLong(); ExitShort(); } } if EntryTime >= 223000 or EntryTime < 20000 then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+3 Then { ExitLong(); ExitShort(); } } }