커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2019-01-29 15:50:20
153
글번호 125720
답변완료
안녕하세요? 스크립트 작성 요청드립니다. 이전 요청드렸던 글번호 60878번 질문으로 답변주셨던 내용을 수정하여 작성 부탁드립니다. 요청드리는 거래종목은 해외선물 5분봉 거래입니다. 1.써머타임 적용시 가.진입 a.우리시각으로 오후 10시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오후 10시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (data2)이 일봉상 음봉이면 익봉시가 매도 나.손절: 포지션 진입이후 기본종목이나 참조종목이 당일 일봉상 시가를 돌파[이탈] 완성시 익봉 시가에 다.시간청산: 당일청산(오전 3시 10분 완성봉=15분 시가봉) 2.써머타임 해제시 가.진입 a.우리시각으로 오후 11시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오후 11시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (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 = 223000; // 써머타임 적용 시, 장시작 시간 et = 0305500; // 써머타임 적용 시, 장종료 시간 End Else Begin CMEStartTime = 233000; // 장 시작 시간 et = 040500; // 장 종료 시간 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-01-30 11:03:48

안녕하세요 예스스탁입니다. 올려주신 내용이 61083번에 질문 주신 내용과 어느부분이 다른지 모르겠습니다. 수식답변은 사용자분이 수식에 대하 공부하는데 일부 도움을 드리고자 함입니다. 비슷한 내용에 대해서 사용자분이 수정보완하셔야 합니다. 이전 질문에 대한 답변 참고하셔서 수정보완하시기 바랍니다. 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 스크립트 작성 요청드립니다. 이전 요청드렸던 글번호 60878번 질문으로 답변주셨던 내용을 수정하여 작성 부탁드립니다. 요청드리는 거래종목은 해외선물 5분봉 거래입니다. 1.써머타임 적용시 가.진입 a.우리시각으로 오후 10시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오후 10시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (data2)이 일봉상 음봉이면 익봉시가 매도 나.손절: 포지션 진입이후 기본종목이나 참조종목이 당일 일봉상 시가를 돌파[이탈] 완성시 익봉 시가에 다.시간청산: 당일청산(오전 3시 10분 완성봉=15분 시가봉) 2.써머타임 해제시 가.진입 a.우리시각으로 오후 11시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (data2)이 일봉상 양봉이면 익봉시가 매수 b.우리시각으로 오후 11시 30분 기준으로(35분 완성봉) 기본종목(data1)과 참조종목 (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 = 223000; // 써머타임 적용 시, 장시작 시간 et = 0305500; // 써머타임 적용 시, 장종료 시간 End Else Begin CMEStartTime = 233000; // 장 시작 시간 et = 040500; // 장 종료 시간 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);