커뮤니티

원 글(91906) 시스템 (수정) 문의 드립니다.

프로필 이미지
나스닥에센피
2025-03-17 21:19:34
747
글번호 189267
답변완료
첫째, S&P500선물로 매매하려면, S&P500선물을 기본차트로 나스닥100선물을 참조데이터로 추가하고 나에차식을 반대로 하여 적용하면 될까요? 원: 나에차 = R1-R2; 수정: 나에차 = R2-R1; 둘째, 당일손실틱수를 수정(사례에선 100을 2000으로)하려면 당일손실틱수 다음의 괄호 안 숫자를 바꿔주면 될까요? 만약 당일손실틱수가 넘어 청산됐다면 더 이상 매매가 없는 게 맞을까요? 이상을 반영하여 시스템 수식을 다음과 같이 수정하면 될까요? input : 기준(1),일중최대진입횟수(2),당일손실틱수(2000); var : ST(0,Data1),ET(0,Data1); var : C1(0,Data1),C2(0,Data2); var : R1(0,Data1),R2(0,Data2),나에차(0,Data1); var : Tcond(False),count(0,Data1); var : TT(0,Data1),N1(0,Data1),dayPL(0,Data1),Xcond(False),당일손실(0,Data1); TT = TotalTrades; if ET > 0 and Data1(sDate != sDate[1]) Then SetStopEndofday(ET); if data1(Bdate != Bdate[1]) Then { SetStopEndofday(0); if sTime >= 80000 Then { ST = 233000; ET = 060000; } Else { ST = 223000; ET = 050000; } Xcond = False; N1 = TT[1]; C1 = Data1(c[1]); } daypl = NetProfit-N1; 당일손실 = data1(PriceScale)*당일손실틱수; if TotalTrades > TotalTrades[1] then { if daypl <= -당일손실 Then Xcond = true; if (IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then Xcond = true; } if Data2(Bdate != Bdate[1]) Then C2 = Data2(c[1]); R1 = Data1((C-C1)/C1*100); R2 = Data2((C-C2)/C2*100); 나에차 = R2-R1; if data1(ET > 0 and ((sdate != sdate[1] and stime >= ET) or (sdate == sdate[1] and stime >= ET and stime[1] < ET))) Then { Tcond = False; } if data1(ST > 0 and ((sdate != sdate[1] and stime >= ST) or (sdate == sdate[1] and stime >= ST and stime[1] < ST))) Then { Tcond = true; count = 0; if MarketPosition == 0 and 나에차 >= 기준 then { count = count+1; Buy(); } if MarketPosition == 0 and 나에차 <= 기준 Then { count = count+1; Sell(); } } Else { if Tcond == true and Xcond == False Then { if MarketPosition == 1 and 나에차 < 0 and 나에차[1] < 0 and count < 일중최대진입횟수 Then { count = count+1; Sell("bs"); } if MarketPosition == -1 and 나에차 > 0 and 나에차[1] > 0 and count < 일중최대진입횟수 Then { count = count+1; Buy("sb"); } if MarketPosition == 1 and 나에차 < 0 and 나에차[1] < 0 and count == 일중최대진입횟수 Then { ExitLong("bx"); } if MarketPosition == -1 and 나에차 > 0 and 나에차[1] > 0 and count == 일중최대진입횟수 Then { ExitShort("sx"); } } } if MarketPosition == 1 then { ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } 다시 한번 감사드립니다. 꾸벅^^
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-03-18 10:06:22

안녕하세요 예스스탁입니다. 예 맞습니다. 즐거운 하루되세요 > 나스닥에센피 님이 쓴 글입니다. > 제목 : 원 글(91906) 시스템 (수정) 문의 드립니다. > 첫째, S&P500선물로 매매하려면, S&P500선물을 기본차트로 나스닥100선물을 참조데이터로 추가하고 나에차식을 반대로 하여 적용하면 될까요? 원: 나에차 = R1-R2; 수정: 나에차 = R2-R1; 둘째, 당일손실틱수를 수정(사례에선 100을 2000으로)하려면 당일손실틱수 다음의 괄호 안 숫자를 바꿔주면 될까요? 만약 당일손실틱수가 넘어 청산됐다면 더 이상 매매가 없는 게 맞을까요? 이상을 반영하여 시스템 수식을 다음과 같이 수정하면 될까요? input : 기준(1),일중최대진입횟수(2),당일손실틱수(2000); var : ST(0,Data1),ET(0,Data1); var : C1(0,Data1),C2(0,Data2); var : R1(0,Data1),R2(0,Data2),나에차(0,Data1); var : Tcond(False),count(0,Data1); var : TT(0,Data1),N1(0,Data1),dayPL(0,Data1),Xcond(False),당일손실(0,Data1); TT = TotalTrades; if ET > 0 and Data1(sDate != sDate[1]) Then SetStopEndofday(ET); if data1(Bdate != Bdate[1]) Then { SetStopEndofday(0); if sTime >= 80000 Then { ST = 233000; ET = 060000; } Else { ST = 223000; ET = 050000; } Xcond = False; N1 = TT[1]; C1 = Data1(c[1]); } daypl = NetProfit-N1; 당일손실 = data1(PriceScale)*당일손실틱수; if TotalTrades > TotalTrades[1] then { if daypl <= -당일손실 Then Xcond = true; if (IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then Xcond = true; } if Data2(Bdate != Bdate[1]) Then C2 = Data2(c[1]); R1 = Data1((C-C1)/C1*100); R2 = Data2((C-C2)/C2*100); 나에차 = R2-R1; if data1(ET > 0 and ((sdate != sdate[1] and stime >= ET) or (sdate == sdate[1] and stime >= ET and stime[1] < ET))) Then { Tcond = False; } if data1(ST > 0 and ((sdate != sdate[1] and stime >= ST) or (sdate == sdate[1] and stime >= ST and stime[1] < ST))) Then { Tcond = true; count = 0; if MarketPosition == 0 and 나에차 >= 기준 then { count = count+1; Buy(); } if MarketPosition == 0 and 나에차 <= 기준 Then { count = count+1; Sell(); } } Else { if Tcond == true and Xcond == False Then { if MarketPosition == 1 and 나에차 < 0 and 나에차[1] < 0 and count < 일중최대진입횟수 Then { count = count+1; Sell("bs"); } if MarketPosition == -1 and 나에차 > 0 and 나에차[1] > 0 and count < 일중최대진입횟수 Then { count = count+1; Buy("sb"); } if MarketPosition == 1 and 나에차 < 0 and 나에차[1] < 0 and count == 일중최대진입횟수 Then { ExitLong("bx"); } if MarketPosition == -1 and 나에차 > 0 and 나에차[1] > 0 and count == 일중최대진입횟수 Then { ExitShort("sx"); } } } if MarketPosition == 1 then { ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } 다시 한번 감사드립니다. 꾸벅^^