커뮤니티

수식 문의

프로필 이미지
에구머니
2020-12-24 16:15:54
488
글번호 144895
답변완료
수식을 정정/보완 해 주시기 바랍니다. 감사드리며, 즐겁고 복된 성탄 되세요! 메어리 크리스마스!!!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-12-24 15:14:23

안녕하세요 예스스탁입니다. 1 손절시에는 신호타입을 atstop 사용해야 합니다. atlimit으로 작성된 부분들이 있어 수정했습니다. 2 현재 추가진입 수식들이 MaxEntries로 제어되고 있습니다. 2019년 20월 2일에 청산후에도 포지션진입이후 최대누적진입이 총 4번이므로 if MaxEntries == 4 Then { if Howmany >= 4 Then { ExitShort("s4p2",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) - k익절*ATrv,"s2"); // 수정했다 ExitShort("s4p3",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) - k익절*ATrv,"s3"); ExitShort("s4p4",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) - k익절*ATrv,"s4"); } if Howmany == 4 Then { ExitShort("s4l2",Atstop, EP1 + k손절*ATrv,"s2"); // 수정했다 ExitShort("s4l3",Atstop, EP1 + k손절*ATrv,"s3"); ExitShort("s4l4",Atstop, EP1 + k손절*ATrv,"s4"); } if MaxEntries < Howmany and ((C > LatestEntryPrice(0) + k3*Atrv && C < O) or (C > LatestEntryPrice(0) + k4*ATrv)) Then Sell("s5",OnClose,DEf,n5); } 위 내용으로만 진입이 되게 됩니다. 4번 진입후 3개의 진입이 청산되고 1개만 남은 상태에서 2번째 진입부터 다시 진행하기 위해서는 추가진입에 MaxEntries를 모두 CurrentEntries로 변경하면 됩니다. 3 input : howmany(5); input : n1(1), n2(1), n3(2),n4(3),n5(4); Input: k1(2), k2(3), k3(3), k4(4), k익절(5), k손절(6); var : upp(false), dnn(false), T(0), Left(3), right(3); var : ATRV(0),HH(0),LL(0),SHV(0),SHI(0),SLV(0),SLi(0); var : HC(0),LC(0),EP1(0),EP2(0),EP3(0),EP4(0); var1 = ma(C, 20); var2 = ma(C, 60); var3 = ma(C, 180); if var1 > var2 && var2 > var3 then { upp = true; dnn = false; } // 상방 else if var1 < var2 && var2 < var3 then { upp = false; dnn = true; } // 하방 ATRV = ATR(96); if upp Then { T = 1; if MarketPosition == -1 Then ExitShort(); } if dnn Then { T = -1; if MarketPosition == 1 Then exitlong(); } if SwingHigh(1,h,Left,right,Left+right+1) != -1 Then { SHV = H[3]; SHI = 0; } if SwingLow(1,l,Left,right,Left+right+1) != -1 Then { SLV = L[3]; SLI = 0; } SHI = SHI+1; SLI = SLI+1; if T == 1 and T != T[1] Then // HH == upp로 바뀐 이후의 최고값 HH = H; if T == -1 and T != T[1] Then // LL == dnn으로 바뀐 이후의 최저값 LL = L; if T == 1 Then { if H > HH Then HH = H; if T[1] != 1 Then buy("b1",OnClose,def,n1); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then { HC = C; EP1 = LatestEntryPrice(0); EP2 = EP1[1]; EP3 = EP2[1]; EP4 = EP3[1]; } if HC > 0 and C > HC Then // 그러니까 HC 는 Highest of C 정도 되겠구나. C들의 최고값치! HC = C; if CurrentEntries == 1 Then { if CurrentEntries < Howmany and ((C < LatestEntryPrice(0) - k1*Atrv && C>O) or (C < LatestEntryPrice(0) - k2*Atrv) or (C < HC - k3*Atrv) or (C < HC - k4*ATrv and C > O)) Then Buy("b2",OnClose,DEf,n2); } if CurrentEntries == 2 Then { if Howmany >= 2 Then ExitLong("b2p2",AtLimit,LatestEntryPrice(0) + k익절*ATrv,"b2"); if Howmany == 2 Then ExitLong("b2L2",Atstop,LatestEntryPrice(0) - k손절*ATrv,"b2"); if CurrentEntries < Howmany and ((C < LatestEntryPrice(0) - k3*Atrv && C > O) or (C < LatestEntryPrice(0) - k4*ATrv)) Then Buy("b3",OnClose,DEf,n3); } if CurrentEntries == 3 Then // 현재까지 총 3번 진입했다면, 즉, 신호대로 n1개 및 물타기 2번에 걸친 n2, n3개 진입되었다면 { if Howmany >= 3 Then { ExitLong("b3p2",AtLimit,(n2*EP1+n1*EP2)/(n1+n2) + k익절*ATrv,"b2"); // 수정했다! ExitLong("b3p3",AtLimit,(n2*EP1+n1*EP2)/(n1+n2) + k익절*ATrv,"b3"); } if Howmany == 3 Then { ExitLong("b3l2",Atstop, EP1 - k손절*ATrv,"b2"); // 수정했다!! ExitLong("b3l3",Atstop, EP1 - k손절*ATrv,"b3"); } if CurrentEntries < Howmany and ((C < LatestEntryPrice(0) - k3*Atrv && C > O) or (C < LatestEntryPrice(0) - k4*ATrv)) Then Buy("b4",OnClose,DEf,n4); } if CurrentEntries == 4 Then { if Howmany >= 4 Then { ExitLong("b4p2",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) + k익절*ATrv,"b2"); // 수정했다 ExitLong("b4p3",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) + k익절*ATrv,"b3"); ExitLong("b4p4",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) + k익절*ATrv,"b4"); } if Howmany == 4 Then { ExitLong("b4l2",Atstop, EP1 - k손절*ATrv,"b2"); // 수정했다. ExitLong("b4l3",Atstop, EP1 - k손절*ATrv,"b3"); ExitLong("b4l4",Atstop, EP1 - k손절*ATrv,"b4"); } if CurrentEntries < Howmany and ((C < LatestEntryPrice(0) - k3*Atrv && C > O) or (C < LatestEntryPrice(0) - k4*ATrv)) Then Buy("b5",OnClose,DEf,n5); } if CurrentEntries == 5 Then { exitLong("b5p2",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) + k익절*ATrv,"b2"); exitLong("b5p3",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) + k익절*ATrv,"b3"); exitLong("b5p4",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) + k익절*ATrv,"b4"); exitLong("b5p5",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) + k익절*ATrv,"b5"); exitLong("b5l2",AtStop,LatestEntryPrice(0) - k손절*ATrv,"b2"); exitLong("b5l3",AtStop,LatestEntryPrice(0) - k손절*ATrv,"b3"); exitLong("b5l4",AtStop,LatestEntryPrice(0) - k손절*ATrv,"b4"); exitLong("b5l5",AtStop,LatestEntryPrice(0) - k손절*ATrv,"b5"); } } } if T == -1 Then { if L < LL Then LL = L; if T[1] != -1 Then Sell("s1",OnClose,def,n1); if MarketPosition == -1 Then { if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then { LC = L; EP1 = LatestEntryPrice(0); EP2 = EP1[1]; EP3 = EP2[1]; EP4 = EP3[1]; } if LC > 0 and C < LC Then LC = C; if CurrentEntries == 1 Then { if CurrentEntries < Howmany and ((C > LatestEntryPrice(0) + k1*Atrv && C < O) or (C > LatestEntryPrice(0) + k2*Atrv) or (C > LC + k3*Atrv) or (C > LC + k4*ATrv and C < O)) Then Sell("s2",OnClose,DEf,n2); } if CurrentEntries == 2 Then { if Howmany >= 2 Then ExitShort("s2p2",AtLimit,LatestEntryPrice(0) - k익절*ATrv,"s2"); if Howmany == 2 Then ExitShort("s2l2",Atstop,LatestEntryPrice(0) + k손절*ATrv,"s2"); if CurrentEntries < Howmany and ((C > LatestEntryPrice(0) + k3*Atrv && C < O) or (C > LatestEntryPrice(0) + k4*ATrv)) Then Sell("s3",OnClose,DEf,n3); } if CurrentEntries == 3 Then { if Howmany >= 3 Then { ExitShort("s3p2",AtLimit,(n2*EP1+n1*EP2)/(n1+n2) - k익절*ATrv,"s2"); // 수정했다 ExitShort("s3p3",AtLimit,(n2*EP1+n1*EP2)/(n1+n2) - k익절*ATrv,"s3"); } if Howmany == 3 Then { ExitShort("s3l2",Atstop, EP1 + k손절*ATrv,"s2"); // 수정했다 ExitShort("s3l3",Atstop, EP1 + k손절*ATrv,"s3"); } if CurrentEntries < Howmany and ((C > LatestEntryPrice(0) + k3*Atrv && C < O) or (C > LatestEntryPrice(0) + k4*ATrv)) Then Sell("s4",OnClose,DEf,n4); } if CurrentEntries == 4 Then { if Howmany >= 4 Then { ExitShort("s4p2",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) - k익절*ATrv,"s2"); // 수정했다 ExitShort("s4p3",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) - k익절*ATrv,"s3"); ExitShort("s4p4",AtLimit,(n3*EP1+n2*EP2+n1*EP3)/(n1+n2+n3) - k익절*ATrv,"s4"); } if Howmany == 4 Then { ExitShort("s4l2",Atstop, EP1 + k손절*ATrv,"s2"); // 수정했다 ExitShort("s4l3",Atstop, EP1 + k손절*ATrv,"s3"); ExitShort("s4l4",Atstop, EP1 + k손절*ATrv,"s4"); } if CurrentEntries < Howmany and ((C > LatestEntryPrice(0) + k3*Atrv && C < O) or (C > LatestEntryPrice(0) + k4*ATrv)) Then Sell("s5",OnClose,DEf,n5); } if CurrentEntries == 5 Then { ExitShort("s5p2",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) - k익절*ATrv,"s2"); // 수정했다 ExitShort("s5p3",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) - k익절*ATrv,"s3"); ExitShort("s5p4",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) - k익절*ATrv,"s4"); ExitShort("s5p5",AtLimit,(n4*EP1+n3*EP2+n2*EP3+n1*EP4)/(n1+n2+n3+n4) - k익절*ATrv,"s5"); ExitShort("s5l2",AtStop,LatestEntryPrice(0) + k손절*ATrv,"s2"); ExitShort("s5l3",AtStop,LatestEntryPrice(0) + k손절*ATrv,"s3"); ExitShort("s5l4",AtStop,LatestEntryPrice(0) + k손절*ATrv,"s4"); ExitShort("s5l5",AtStop,LatestEntryPrice(0) + k손절*ATrv,"s5"); } } } 즐거운 하루되세요 > 에구머니 님이 쓴 글입니다. > 제목 : 수식 문의 > 수식을 정정/보완 해 주시기 바랍니다. 감사드리며, 즐겁고 복된 성탄 되세요! 메어리 크리스마스!!!