커뮤니티

수식 부탁드립니다.

프로필 이미지
캣피쉬
2022-12-20 18:29:02
796
글번호 164741
답변완료

첨부 이미지

사진으로 보면 네번의 진입중에 2번째만 익절이 되었는데, 진입이후 손실폭을 var: losingpt(0) 로해서 익절 = FP0 - losingpt/2; 탄력적으로 바꾸고자합니다. 첫번째 진입의 경우가 익절로 변경되는것이고 , (0.7pt까지 손실을 기록했었으니 , 익절 = 2.42-0.7/2 ) 3번째 , 4번째는 손실이겠네요 문제가 losingpt가 진입마다 따로 관리가 되어야할듯한데,, 어렵네요 buy,sell 따로 이원화해서 전략관리중이니, 따로 각각 부탁드립니다. 감사합니다. ------------------------------------------ var : 손절(1.72),익절(2.42); input : FL0(1.72),FP0(2.42); # # # # # ntotal = n5+n5v+n6+n11+n11v+n10+n12; var : firstJ(0);if sDate != sDate[1] Then {firstJ=0;} if firstJ==0 and ntotal!=0 Then { if ntotal>0 Then Buy("b1",OnClose,Def,abs(ntotal)); #if ntotal<0 Then Sell("s1",OnClose,Def,abs(ntotal)); firstJ=1; Var98=Time;} Var99=ntotal-ntotal[1]; if stime>var98 and sTime<151900 and firstJ==1 and Var99!=0 Then { if Var99>0 Then Buy("b2",OnClose,Def,abs(Var99)); #if Var99<0 Then Sell("s2",OnClose,Def,abs(Var99));} SetStopEndofday(EndTime); SetStopProfittarget(익절,PointStop); SetStoploss(손절,PointStop);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-12-21 13:50:46

안녕하세요 예스스탁입니다. 1 올려주신 내용을 구현하시려면 강제청산함수는 사용할 수 없습니다. 일반청산함수를 이용해 각진입횟차별로 구분해서 값계산해서 내열해서 작성하셔야 합니다. 2 청산함수에 진입명을 지정해서 해당 진입명으로 진입한 수량만 청산하게 해야 하는데 지금과 같이 B2로 반복해서 들어가면 처리할 방법이 없고 아래식과 같이 횟차별로 이름을 모두 별도로 주어야 합니다 3 아래는 최대 4번 진입까지만 작성해 드립니다. 수식 내용을 숙지하셔서 피라미딩으로 진입할 수 있는 최대진입횟수를 감안해서 수식 추가해서 완성하셔야 합니다. 4 var : 손절(1.72),익절(2.42); ntotal = n5+n5v+n6+n11+n11v+n10+n12; var : firstJ(0); if sDate != sDate[1] Then {firstJ=0;} if firstJ==0 and ntotal!=0 Then { if ntotal>0 Then Buy("b1",OnClose,Def,abs(ntotal)); if ntotal<0 Then Sell("s1",OnClose,Def,abs(ntotal)); firstJ=1; Var98=Time; } Var99=ntotal-ntotal[1]; if stime>var98 and sTime<151900 and firstJ==1 and Var99!=0 Then { if Var99>0 Then { if MaxEntries == 1 Then Buy("b2",OnClose,Def,abs(Var99)); if MaxEntries == 2 Then Buy("b3",OnClose,Def,abs(Var99)); if MaxEntries == 3 Then Buy("b4",OnClose,Def,abs(Var99)); } if Var99<0 Then { if MaxEntries == 1 Then Sell("s2",OnClose,Def,abs(Var99)); if MaxEntries == 1 Then Sell("s3",OnClose,Def,abs(Var99)); if MaxEntries == 1 Then Sell("s4",OnClose,Def,abs(Var99)); } } SetStopEndofday(EndTime); SetStoploss(손절,PointStop); var : BE1(0),BL1(0),BE2(0),BL2(0),BE3(0),BL3(0),BE4(0),BL4(0); var : SE1(0),SH1(0),SE2(0),SH2(0),SE3(0),SH3(0),SE4(0),SH4(0); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { if MaxEntries == 1 Then { BE1 = LatestEntryPrice(0); BL1 = L; } if MaxEntries == 1 Then { BE2 = LatestEntryPrice(0); BL2 = L; } if MaxEntries == 1 Then { BE3 = LatestEntryPrice(0); BL3 = L; } if MaxEntries == 1 Then { BE4 = LatestEntryPrice(0); BL4 = L; } } if BL1 > 0 Then { if L < BL1 Then BL1 = L; ExitLong("bx1",AtLimit,BE1+익절-abs(BE1-BL1)/2 ,"b1"); } if BL2 > 0 Then { if L < BL2 Then BL2 = L; ExitLong("bx2",AtLimit,BE2+익절-abs(BE2-BL2)/2 ,"b2"); } if BL3 > 0 Then { if L < BL3 Then BL3 = L; ExitLong("bx3",AtLimit,BE3+익절-abs(BE3-BL3)/2 ,"b3"); } if BL4 > 0 Then { if L < BL4 Then BL4 = L; ExitLong("bx4",AtLimit,BE4+익절-abs(BE4-BL4)/2 ,"b4"); } } Else { BL1 = 0; BL2 = 0; BL3 = 0; BL4 = 0; } if MarketPosition == -1 Then { if CurrentContracts > CurrentContracts[1] Then { if MaxEntries == 1 Then { SE1 = LatestEntryPrice(0); SH1 = H; } if MaxEntries == 1 Then { SE2 = LatestEntryPrice(0); SH2 = H; } if MaxEntries == 1 Then { SE3 = LatestEntryPrice(0); SH3 = H; } if MaxEntries == 1 Then { SE4 = LatestEntryPrice(0); SH4 = H; } } if SH1 > 0 Then { if H > SH1 Then SH1 = H; ExitShort("sx1",AtLimit,SE1-익절+abs(SE1-SH1)/2 ,"s1"); } if SH2 > 0 Then { if H > SH2 Then SH2 = H; ExitShort("sx2",AtLimit,SE2-익절+abs(SE2-SH2)/2 ,"s2"); } if SH3 > 0 Then { if H > SH3 Then SH3 = H; ExitShort("sx3",AtLimit,SE3-익절+abs(SE3-SH3)/2 ,"s3"); } if SH4 > 0 Then { if H > SH4 Then SH4 = H; ExitShort("sx4",AtLimit,SE4-익절+abs(SE4-SH4)/2 ,"s4"); } } Else { SH1 = 0; SH2 = 0; SH3 = 0; SH4 = 0; } 즐거운 하루되세요 > 캣피쉬 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 사진으로 보면 네번의 진입중에 2번째만 익절이 되었는데, 진입이후 손실폭을 var: losingpt(0) 로해서 익절 = FP0 - losingpt/2; 탄력적으로 바꾸고자합니다. 첫번째 진입의 경우가 익절로 변경되는것이고 , (0.7pt까지 손실을 기록했었으니 , 익절 = 2.42-0.7/2 ) 3번째 , 4번째는 손실이겠네요 문제가 losingpt가 진입마다 따로 관리가 되어야할듯한데,, 어렵네요 buy,sell 따로 이원화해서 전략관리중이니, 따로 각각 부탁드립니다. 감사합니다. ------------------------------------------ var : 손절(1.72),익절(2.42); input : FL0(1.72),FP0(2.42); # # # # # ntotal = n5+n5v+n6+n11+n11v+n10+n12; var : firstJ(0);if sDate != sDate[1] Then {firstJ=0;} if firstJ==0 and ntotal!=0 Then { if ntotal>0 Then Buy("b1",OnClose,Def,abs(ntotal)); #if ntotal<0 Then Sell("s1",OnClose,Def,abs(ntotal)); firstJ=1; Var98=Time;} Var99=ntotal-ntotal[1]; if stime>var98 and sTime<151900 and firstJ==1 and Var99!=0 Then { if Var99>0 Then Buy("b2",OnClose,Def,abs(Var99)); #if Var99<0 Then Sell("s2",OnClose,Def,abs(Var99));} SetStopEndofday(EndTime); SetStopProfittarget(익절,PointStop); SetStoploss(손절,PointStop);