커뮤니티

선물만기 롤오버 시스템식 질문입니다

프로필 이미지
cinamon
2021-11-08 19:35:50
854
글번호 153463
답변완료
시뮬레이션시 선물 만기일 당일청산 하고 다음날 같은 포지션으로 재진입 시스템을 만들고 싶습니다 Input : shortPeriod(5), longPeriod(20); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } var1 = date - int(date/100)*100; //일 var2 = DayOfWeek(date); //요일 if var1 >= 8 and var1 <= 14 and // 8일에서 14일 사이이고 var2 == 4 then // 목요일 Condition1 = True; Else Condition1 = False; if Condition1 == true Then#만기일에는 SetStopEndofday(144000);#14시 40분에 청산 Else SetStopEndofday(0);#만기일이 아닌날에는 당일청산하지 않음 #만기다음날 첫봉 if date != date[1] and condition1 == false and condition1[1] == true then{ if MarketPosition(1) == 1 Then buy(); if MarketPosition(1) == -1 Then sell();} 당일청산 신호가 만기일이 아닌날에도 뜨네요 수식 수정 부탁드립니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-11-10 09:29:32

안녕하세요 예스스탁입니다. 작성하신 수식은 옵션만기입니다. 3,6,8,12월만 동작하게 아래와 같이 변경하셔야 합니다. Input : shortPeriod(5), longPeriod(20); var : month(0),nday(0),week(0),X(False); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } month = int(date/100)-int(date/10000)*100; nday = date - int(date/100)*100; Week = DayOfWeek(date); if Month%3 == 0 and nday >= 8 and nday <= 14 and // 8일에서 14일 사이이고 Week == 4 then // 목요일 Condition1 = True; Else Condition1 = False; if Condition1 == true Then#만기일에는 SetStopEndofday(144000);#14시 40분에 청산 Else SetStopEndofday(0);#만기일이 아닌날에는 당일청산하지 않음 #만기다음날 첫봉 if date != date[1] and condition1 == false and condition1[1] == true then{ if MarketPosition(1) == 1 Then buy(); if MarketPosition(1) == -1 Then sell();} 즐거운 하루되세요 > cinamon 님이 쓴 글입니다. > 제목 : 선물만기 롤오버 시스템식 질문입니다 > 시뮬레이션시 선물 만기일 당일청산 하고 다음날 같은 포지션으로 재진입 시스템을 만들고 싶습니다 Input : shortPeriod(5), longPeriod(20); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } var1 = date - int(date/100)*100; //일 var2 = DayOfWeek(date); //요일 if var1 >= 8 and var1 <= 14 and // 8일에서 14일 사이이고 var2 == 4 then // 목요일 Condition1 = True; Else Condition1 = False; if Condition1 == true Then#만기일에는 SetStopEndofday(144000);#14시 40분에 청산 Else SetStopEndofday(0);#만기일이 아닌날에는 당일청산하지 않음 #만기다음날 첫봉 if date != date[1] and condition1 == false and condition1[1] == true then{ if MarketPosition(1) == 1 Then buy(); if MarketPosition(1) == -1 Then sell();} 당일청산 신호가 만기일이 아닌날에도 뜨네요 수식 수정 부탁드립니다