커뮤니티

섬머타임....

프로필 이미지
자마이카
2024-10-07 10:14:22
681
글번호 183993
답변완료
섬머타임을 적용하기위해서 아래와 같이 작성해 보았으나 섬머타임 수식을 추가하기 전의 성능보고서와 약간의 차이가 납니다. 그 원인이 무엇인지 가르쳐주시기 바랍니다. 늘 감사드립니다. (당일 손실합계액이 50포인트 이상이면 매매중단, 섬머타임시에는 오후8시30분부터 다음날 새벽4시30분까지 매매하고, 섬머타임 해제시에는 1시간씩 순연) var :N1(0),당일손익(0),Xcond(False); var :Year(0),V1(0),V2(0),V3(0),V4(0),summer(False),ST(0),XT(0); //=============================================================== if BDate!=BDate[1] Then {N1= NetProfit; Xcond=False;} 당일손익=NetProfit-N1 ; if 당일손익<= -50*PointStop Then Xcond=True; if NextBarSdate != sDate Then{ Year = Floor(NextBarSdate/10000); V1 = (10000 * Year) + 301; V2 = 15 - dayofweek(v1); V3 = (10000 * Year) + 1101; V4 = 8 - dayofweek(v3); Summer=Sdate>(10000*Year)+300+v2 and Sdate<(10000*Year)+1100+v4; if summer == true Then{ST = 203000 ; XT = 43000 ;} Else{ST = 203000 +10000; XT = 43000 +10000;}} //==================================================================== if !(sTime>XT && sTime<ST) && Xcond==False && marketposition==0 && TotalTrades==0 Then{ if Condition1==True Then Buy ("최초매수",AtMarket); //Condition1=매수조건 if Condition2==True Then Sell("최초매도",AtMarket);}//Condition2=매도조건 if !(sTime>XT && sTime<ST) && Xcond==False && marketposition==0 && TotalTrades>=1 Then{ if Condition1==True Then Buy ("매수",AtMarket); if Condition2==True Then Sell("매도",AtMarket);} if marketposition== 1 Then SetStopLoss(30,PointStop); Else if marketposition== -1 Then SetStopLoss(30,PointStop); Else SetStopLoss(0); if marketposition== 1 Then SetStopProfittarget(30,PointStop); Else if marketposition== -1 Then SetStopProfittarget(30,PointStop); Else SetStopProfittarget(0); if (sTime>=XT && sTime<= 55000) && marketposition<>0 Then{ ExitLong("마감1",AtMarket) ; ExitShort("마감2",AtMarket);}
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-10-07 15:59:55

안녕하세요 예스스탁입니다. 올려주신 내용만으로는 어느 부분에서 차이가 발생하지 확인이 어렵습니다. 다만 Summer타임 여부 계산에 NextBarSdate와 sdate가 혼재되어 계산되는데 봉완성시 다음봉시가 진입이므로 sdate로 통일해 드립니다. var :N1(0),당일손익(0),Xcond(False); var :Year(0),V1(0),V2(0),V3(0),V4(0),summer(False),ST(0),XT(0); //=============================================================== if BDate!=BDate[1] Then { N1= NetProfit; Xcond=False; } 당일손익=NetProfit-N1 ; if 당일손익<= -50 Then Xcond=True; if Sdate != sDate[1] Then { Year = Floor(Sdate/10000); V1 = (10000 * Year) + 301; V2 = 15 - dayofweek(v1); V3 = (10000 * Year) + 1101; V4 = 8 - dayofweek(v3); Summer=Sdate>(10000*Year)+300+v2 and Sdate<(10000*Year)+1100+v4; if summer == true Then { ST = 203000 ; XT = 43000 ; } Else { ST = 203000 +10000; XT = 43000 +10000; } } Condition1 = C > O; Condition2 = C < O; //==================================================================== if !(sTime>XT && sTime<ST) && Xcond==False && marketposition==0 && TotalTrades==0 Then{ if Condition1==True Then Buy ("최초매수",AtMarket); //Condition1=매수조건 if Condition2==True Then Sell("최초매도",AtMarket);}//Condition2=매도조건 if !(sTime>XT && sTime<ST) && Xcond==False && marketposition==0 && TotalTrades>=1 Then{ if Condition1==True Then Buy ("매수",AtMarket); if Condition2==True Then Sell("매도",AtMarket);} if marketposition== 1 Then SetStopLoss(30,PointStop); Else if marketposition== -1 Then SetStopLoss(30,PointStop); Else SetStopLoss(0); if marketposition== 1 Then SetStopProfittarget(30,PointStop); Else if marketposition== -1 Then SetStopProfittarget(30,PointStop); Else SetStopProfittarget(0); if (sTime>=XT && sTime<= 55000) && marketposition<>0 Then { ExitLong("마감1",AtMarket) ; ExitShort("마감2",AtMarket); } 즐거운 하루되세요 > 자마이카 님이 쓴 글입니다. > 제목 : 섬머타임.... > 섬머타임을 적용하기위해서 아래와 같이 작성해 보았으나 섬머타임 수식을 추가하기 전의 성능보고서와 약간의 차이가 납니다. 그 원인이 무엇인지 가르쳐주시기 바랍니다. 늘 감사드립니다. (당일 손실합계액이 50포인트 이상이면 매매중단, 섬머타임시에는 오후8시30분부터 다음날 새벽4시30분까지 매매하고, 섬머타임 해제시에는 1시간씩 순연) var :N1(0),당일손익(0),Xcond(False); var :Year(0),V1(0),V2(0),V3(0),V4(0),summer(False),ST(0),XT(0); //=============================================================== if BDate!=BDate[1] Then {N1= NetProfit; Xcond=False;} 당일손익=NetProfit-N1 ; if 당일손익<= -50*PointStop Then Xcond=True; if NextBarSdate != sDate Then{ Year = Floor(NextBarSdate/10000); V1 = (10000 * Year) + 301; V2 = 15 - dayofweek(v1); V3 = (10000 * Year) + 1101; V4 = 8 - dayofweek(v3); Summer=Sdate>(10000*Year)+300+v2 and Sdate<(10000*Year)+1100+v4; if summer == true Then{ST = 203000 ; XT = 43000 ;} Else{ST = 203000 +10000; XT = 43000 +10000;}} //==================================================================== if !(sTime>XT && sTime<ST) && Xcond==False && marketposition==0 && TotalTrades==0 Then{ if Condition1==True Then Buy ("최초매수",AtMarket); //Condition1=매수조건 if Condition2==True Then Sell("최초매도",AtMarket);}//Condition2=매도조건 if !(sTime>XT && sTime<ST) && Xcond==False && marketposition==0 && TotalTrades>=1 Then{ if Condition1==True Then Buy ("매수",AtMarket); if Condition2==True Then Sell("매도",AtMarket);} if marketposition== 1 Then SetStopLoss(30,PointStop); Else if marketposition== -1 Then SetStopLoss(30,PointStop); Else SetStopLoss(0); if marketposition== 1 Then SetStopProfittarget(30,PointStop); Else if marketposition== -1 Then SetStopProfittarget(30,PointStop); Else SetStopProfittarget(0); if (sTime>=XT && sTime<= 55000) && marketposition<>0 Then{ ExitLong("마감1",AtMarket) ; ExitShort("마감2",AtMarket);}