커뮤니티

228766 재문의

프로필 이미지
에구머니
2025-12-09 20:55:42
60
글번호 228816
답변완료

첨부 이미지

안녕하세요? 지난번 문의에 대한 답변 중 앞부분이 잘 이해가 안갑니다. 왜 이렇게 수식이 복잡해져야 하는지도 잘 이해가 안가서요... 이해가 잘 안가는 그  앞부분을 아래에 복사해 놓았습니다.

특히 sDate, sDate[1], sTime, sTime[1], Bdate?, Bdate[1]? 이런 것들의 정의를 어디서 볼 수 있나요?

뭐 느낌은 있는데, 정확한 정의를 잘 모르겠습니다.


참 그리고, 제대로 작동하지 않습니다. 그림을 보시면, 아래의 지표에서 파란색이 매수신호, 빨간색이 매도신도, 회색은 무포로 있어야 하는 신호인데, N = 9 즉, 하루 9번의 매매를 허락했는데도 매매횟수가 턱없이 모자랍니다. 이 부분도 수정 부탁드립니다.


input : N(3),st(2),tp(3),tl(1),t2(2); input : starttime(92000),Endtime(144000),Xtime(152000); var : Tcond(False),TT(0),T1(0),entry(0); TT = TotalTrades; IF Xtime > starttime Then SetStopEndofday(Xtime); Else { if sDate != sDate[1] Then SetStopEndofday(Xtime); } if (sdate != sDate[1] and sTime >= Endtime) or (sdate == sDate[1] and sTime >= Endtime and sTime[1] < Endtime) Then { Tcond = False; } if (sdate != sDate[1] and sTime >= starttime) or (sdate == sDate[1] and sTime >= starttime and sTime[1] < starttime) Then { Tcond = true; T1 = TT[1]; IF Xtime <= starttime Then { SetStopEndofday(0); } } entry = TT-T1+IFF(MarketPosition != 0,1,0); 요 부분에 대해서 간단히 주석이나 설명 좀 부탁드리고 싶습니다.


감사합니다.

image.png

시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-12-10 13:35:26

안녕하세요 예스스탁입니다. 1 sdate 날짜, stime은 시간, bdate은 봉의 영업일입니다. sdate는 0시 기준으로 변경되는 달력상 날짜이고 bdate는 거래소 영업일 변경시간 기준 날짜입니다. 2 해당 내용은 당일거래횟수, 당일청산, 지정한 시간을 체크하기 위한 내용입니다. 현재 국내 선물이 차트 셋팅에 따라 주야간 거래가 되므로 모두 공통으로 사용할 수 있게 작성된 식입니다. 3 수식에 진입횟수가 3으로 고정되어 있어 수정했습니다. 주석도 아래 식에 붙여 드립니다 input : N(3),st(2),tp(3),tl(1),t2(2); input : starttime(92000),Endtime(144000),Xtime(152000); var : Tcond(False),TT(0),T1(0),entry(0); #총거래횟수 TT = TotalTrades; #당일청산시간이 시작시간보다 크면 당일청산을 셋팅 IF Xtime > starttime Then SetStopEndofday(Xtime); Else#당일청산시간이 시작시간보다 작으면 { #날짜변경시 당일청산 셋팅 if sDate != sDate[1] Then SetStopEndofday(Xtime); } #지정한 끝시간이면 Tcond는 False if (sdate != sDate[1] and sTime >= Endtime) or (sdate == sDate[1] and sTime >= Endtime and sTime[1] < Endtime) Then { Tcond = False; } #지정한 시작시간이면 Tcond는 true if (sdate != sDate[1] and sTime >= starttime) or (sdate == sDate[1] and sTime >= starttime and sTime[1] < starttime) Then { Tcond = true; //전일까지 총거래횟수는 T1에 저장 T1 = TT[1]; //당일청산시간이 시작시간보다 작으면 당일청산 초기화 IF Xtime <= starttime Then { SetStopEndofday(0); } } #당일진입횟수 현재 총거래횟수-전일총거래횟수+진입중이면 1 추가 entry = TT-T1+IFF(MarketPosition != 0,1,0); var1 = ma(C,5); var2 = ma(C,20); var3 = ma(C,60); Condition1 = var1 > var2 and var2 > var3; Condition2 = var1 < var2 and var2 < var3; if MarketPosition <= 0 and Tcond == true and entry < N and Condition1 == true and Condition1[1] == False Then Buy("b"); if MarketPosition >= 0 and Tcond == true and entry < N and Condition2 == true and Condition2[1] == False Then Sell("s"); if MarketPosition == 1 and CrossDown(var2,var3) Then ExitLong("bx"); if MarketPosition == -1 and CrossUp(var2,var3) Then ExitShort("sx"); SetStopLoss(st,PointStop); SetStopProfittarget(tp,PointStop); SetStopTrailing(t1,t2,PointStop,0); 즐거운 하루되세요