커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2019-02-12 11:21:07
193
글번호 126084
답변완료
안녕하세요? 아래의 스크립트에 전략을 추가하고자 합니다. 추가하고자 하는 전략은 1.써머타임 적용시 가.진입 a.우리시각으로 자정 0시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오후 0시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 음봉이면 익봉시가 매도 나.손절: 포지션 진입이후 기본종목이나 참조종목이 당일 일봉상 시가를 돌파[이탈] 완성시 익봉 시가에 다.시간청산: 당일청산(오전 3시 10분 완성봉=15분 시가봉) 2.써머타임 해제시 가.진입 a.우리시각으로 오전 1시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오전 1시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 음봉이면 익봉시가 매도 나.손절: 포지션 진입이후 기본종목이나 참조종목이 당일 일봉상 시가를 돌파[이탈] 완성시 익봉 시가에 다.시간청산: 당일청산(오전 4시 10분 완성봉=15분 시가봉) ---------------------------------------------------------------------------------------- Var : ii( 0 ), st( 0 ), et( 0),Summercond(False),CMEStartTime(0) ; Var : TickValue(0); var : Year(0); Year = Floor(sdate/10000); TickValue = PriceScale; Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); // 3월 두번째 일요일 날짜 value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); // 11월 첫번째 일요일 날짜 Summercond = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; If Summercond == true Then Begin CMEStartTime = 070000; // 써머타임 적용 시, 장시작 시간 et = 060000; // 써머타임 적용 시, 장종료 시간 End Else Begin CMEStartTime = 080000; // 장 시작 시간 et = 070000; // 장 종료 시간 End; //장 시각후 첫봉에서 참조종목의 시가를 저장 if stime >= CMEStartTime And stime[1] < CMEStartTime Then value14 = Data2(O); //참조종목의 시가와 종가를 저장 value11 = Data2(C); value12 = Data2(O); //DATA2의 일봉상 양봉인지 음봉인지 계산 value13 = value11 - value14; //22시 30분에 참조종목이 일봉상 양봉이면 매수 //음봉이면 매도 if stime >= 223000 And stime[1] < 223000 Then Begin if value13 > 0 Then Buy("Buy",Atmarket); Else if value13 < 0 Then Sell("Sell",Atmarket); End; //매수 진입이후 참조종목이 일봉상 음(양)봉이 되면 청산 if MarketPosition == 1 And value11 < value14 Then ExitLong("EL",Atmarket); Else if MarketPosition == -1 And value11 > value14 Then ExitShort("ES",Atmarket); input : EXTtime(030000); if sdate != sdate[1] Then SetStopEndofday(et); if bdate != bdate[1] Then SetStopEndofday(0); //SetStopEndofday(EXTtime);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-02-13 09:44:23

안녕하세요 예스스탁입니다. Var : Summercond(False,data1),Year(0,data1); var : v1(0,data1),v2(0,data1),v3(0,data1),v4(0,data1); var : O2(0,data2); Year = data1(Floor(sdate/10000)); V1 = (10000 * Year) + (100 * 3) + 1; V2 = data1(15 - dayofweek(v1)); // 3월 두번째 일요일 날짜 v3 = (10000 * Year) + (100 * 11) + 1; v4 = data1(8 - dayofweek(v3)); // 11월 첫번째 일요일 날짜 Summercond = data1(date > (10000 * Year) + (100 * 3) + v2 And date < (10000 * Year) + (100 * 11) + v4); if data2(Bdate != bdate[1]) Then O2 = data2(O); If Summercond == true Then { if data1((sdate != sdate[1] and stime >= 000500) or (sdate == sdate[1] and stime >= 000500 and stime[1] < 000500)) Then { if data2(c) > O2 Then Buy("B1",Atmarket); if data2(c) < O2 Then Sell("S1",Atmarket); } if data1((sdate != sdate[1] and stime >= 031000) or (sdate == sdate[1] and stime >= 031000 and stime[1] < 031000)) Then { if MarketPosition == 1 Then ExitLong("bx1",AtMarket); if MarketPosition == -1 Then ExitShort("sx1",AtMarket); } } If Summercond == false Then { if data1((sdate != sdate[1] and stime >= 010500) or (sdate == sdate[1] and stime >= 010500 and stime[1] < 010500)) Then { if data2(c) > O2 Then Buy("B2",Atmarket); if data2(c) < O2 Then Sell("S2",Atmarket); } if data1((sdate != sdate[1] and stime >= 041000) or (sdate == sdate[1] and stime >= 041000 and stime[1] < 041000)) Then { if MarketPosition == 1 Then ExitLong("bx2",AtMarket); if MarketPosition == -1 Then ExitShort("sx2",AtMarket); } } if MarketPosition == 1 And (data1(C<dayopen) or data2(C<O2)) Then ExitLong("EL",Atmarket); if MarketPosition == -1 And (data1(C>dayopen) or data2(C>O2)) Then ExitShort("ES",Atmarket); 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래의 스크립트에 전략을 추가하고자 합니다. 추가하고자 하는 전략은 1.써머타임 적용시 가.진입 a.우리시각으로 자정 0시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오후 0시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 음봉이면 익봉시가 매도 나.손절: 포지션 진입이후 기본종목이나 참조종목이 당일 일봉상 시가를 돌파[이탈] 완성시 익봉 시가에 다.시간청산: 당일청산(오전 3시 10분 완성봉=15분 시가봉) 2.써머타임 해제시 가.진입 a.우리시각으로 오전 1시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오전 1시 5분 완성봉 기준으로 참조종목(data2)이 일봉상 음봉이면 익봉시가 매도 나.손절: 포지션 진입이후 기본종목이나 참조종목이 당일 일봉상 시가를 돌파[이탈] 완성시 익봉 시가에 다.시간청산: 당일청산(오전 4시 10분 완성봉=15분 시가봉) ---------------------------------------------------------------------------------------- Var : ii( 0 ), st( 0 ), et( 0),Summercond(False),CMEStartTime(0) ; Var : TickValue(0); var : Year(0); Year = Floor(sdate/10000); TickValue = PriceScale; Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); // 3월 두번째 일요일 날짜 value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); // 11월 첫번째 일요일 날짜 Summercond = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; If Summercond == true Then Begin CMEStartTime = 070000; // 써머타임 적용 시, 장시작 시간 et = 060000; // 써머타임 적용 시, 장종료 시간 End Else Begin CMEStartTime = 080000; // 장 시작 시간 et = 070000; // 장 종료 시간 End; //장 시각후 첫봉에서 참조종목의 시가를 저장 if stime >= CMEStartTime And stime[1] < CMEStartTime Then value14 = Data2(O); //참조종목의 시가와 종가를 저장 value11 = Data2(C); value12 = Data2(O); //DATA2의 일봉상 양봉인지 음봉인지 계산 value13 = value11 - value14; //22시 30분에 참조종목이 일봉상 양봉이면 매수 //음봉이면 매도 if stime >= 223000 And stime[1] < 223000 Then Begin if value13 > 0 Then Buy("Buy",Atmarket); Else if value13 < 0 Then Sell("Sell",Atmarket); End; //매수 진입이후 참조종목이 일봉상 음(양)봉이 되면 청산 if MarketPosition == 1 And value11 < value14 Then ExitLong("EL",Atmarket); Else if MarketPosition == -1 And value11 > value14 Then ExitShort("ES",Atmarket); input : EXTtime(030000); if sdate != sdate[1] Then SetStopEndofday(et); if bdate != bdate[1] Then SetStopEndofday(0); //SetStopEndofday(EXTtime);