커뮤니티

수식 문의 드립니다

프로필 이미지
toal
2019-09-27 13:20:13
186
글번호 132296
답변완료

첨부 이미지

답변주신 수식대로 적용해봤는데 몇가지 오류가 계속 발생합니다 그림1. 목표수익청산되고 매매가 멈춰야하는데 곧바로 또 진입합니다. 그림2. 1분 남기고 포지션청산되고 멈춰야하는데 기준틱봉수대로 다음5분 시작될때까지 진입청산 무한반복발생합니다. 그림3 원으로 표시된데가 10회라서 수식대로는 포지션청산되고 멈추어야 하는데 그냥지나치고 시간청산됩니다 안녕하세요 예스스탁입니다. 5분봉 완성시 변수들 초기화하게 수정해 드립니다. 5분봉 기준으로 매4분 경과시 포지션있으면 청산하게 추가해 드립니다. input : 당일수익틱수(10); var : count(0,data1),T1(0,data1),N1(0,data1),daypl(0,data1),Xcond(false,data1),당일수익(0,data1); var : T2(0,data1),O2(0,data1); 당일수익 = PriceScale*당일수익틱수; T2 = data2(NextBarStime); O2 = data2(NextBarOpen); if T2 != T2[1] Then { count = 0; N1 = NetProfit; Xcond = false; T1 = TimeToMinutes(stime); } Else count = count + (TotalTrades-TotalTrades[1]); daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true ) then Xcond = true; } if T2 != T2[1] then { buy("b",AtStop,O2+PriceScale*1); sell("s",AtStop,O2-PriceScale*1); } else { if count < 10 and Xcond == false and TimeToMinutes(stime) <= T1+4 then { buy("b1",AtStop,O2+PriceScale*1); sell("s1",AtStop,O2-PriceScale*1); } if TimeToMinutes(stime) >= T1+4 Then { exitlong("bx"); ExitShort("sx"); } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then { ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-09-27 13:48:37

안녕하세요 예스스탁입니다. 1 전일 64245번 문의에 해당 부분에 설명드린 부분이 있습니다. 진입횟수등 조건들은 if문으로만 제어가 될수 있는데 봉완성시입니다. 현재 봉미완성시에 중간에 발생하는 신호에 if조건이 적용되지 못합니다. 봉완성단위로만 진입횟수 체크해서 10회넘으면 진입을 막을수만 있습니다. 해당 부분은 랭귀지 체계상 처리가 가능하지 않습니다. 도움을 드리지 못해 죄송합니다. 2 4분대에 진입청산이 반복되는 부분은 수정했습니다. 3 10회째 진입하면 반대조건으로 청산하게 추가했습니다. 4 수정한 식입니다. input : 당일수익틱수(10); var : count(0,data1),T1(0,data1),N1(0,data1),daypl(0,data1),Xcond(false,data1),당일수익(0,data1); var : T2(0,data1),O2(0,data1); 당일수익 = PriceScale*당일수익틱수; T2 = data2(NextBarStime); O2 = data2(NextBarOpen); if T2 != T2[1] Then { count = 0; N1 = NetProfit; Xcond = false; T1 = TimeToMinutes(stime); } Else count = count + (TotalTrades-TotalTrades[1]); daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true ) then Xcond = true; } if T2 != T2[1] then { buy("b",AtStop,O2+PriceScale*1); sell("s",AtStop,O2-PriceScale*1); } else { if count < 10 and Xcond == false and TimeToMinutes(stime) < T1+4 then { buy("b1",AtStop,O2+PriceScale*1); sell("s1",AtStop,O2-PriceScale*1); } if TimeToMinutes(stime) >= T1+4 Then { ExitLong("bx"); ExitShort("sx"); } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); if MarketPosition == 1 and count >= 10 Then ExitLong("bx1",AtStop,O2-PriceScale*1); } if MarketPosition == -1 then { ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); if MarketPosition == 1 and count >= 10 Then ExitShort("sx1",AtStop,O2+PriceScale*1); } 즐거운 하루되세요 > toal 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다 > 답변주신 수식대로 적용해봤는데 몇가지 오류가 계속 발생합니다 그림1. 목표수익청산되고 매매가 멈춰야하는데 곧바로 또 진입합니다. 그림2. 1분 남기고 포지션청산되고 멈춰야하는데 기준틱봉수대로 다음5분 시작될때까지 진입청산 무한반복발생합니다. 그림3 원으로 표시된데가 10회라서 수식대로는 포지션청산되고 멈추어야 하는데 그냥지나치고 시간청산됩니다 안녕하세요 예스스탁입니다. 5분봉 완성시 변수들 초기화하게 수정해 드립니다. 5분봉 기준으로 매4분 경과시 포지션있으면 청산하게 추가해 드립니다. input : 당일수익틱수(10); var : count(0,data1),T1(0,data1),N1(0,data1),daypl(0,data1),Xcond(false,data1),당일수익(0,data1); var : T2(0,data1),O2(0,data1); 당일수익 = PriceScale*당일수익틱수; T2 = data2(NextBarStime); O2 = data2(NextBarOpen); if T2 != T2[1] Then { count = 0; N1 = NetProfit; Xcond = false; T1 = TimeToMinutes(stime); } Else count = count + (TotalTrades-TotalTrades[1]); daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true ) then Xcond = true; } if T2 != T2[1] then { buy("b",AtStop,O2+PriceScale*1); sell("s",AtStop,O2-PriceScale*1); } else { if count < 10 and Xcond == false and TimeToMinutes(stime) <= T1+4 then { buy("b1",AtStop,O2+PriceScale*1); sell("s1",AtStop,O2-PriceScale*1); } if TimeToMinutes(stime) >= T1+4 Then { exitlong("bx"); ExitShort("sx"); } } if MarketPosition == 1 then { ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then { ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); }