커뮤니티

수식 부탁해요~~ 분할진입

프로필 이미지
이형지
2019-01-04 15:35:06
180
글번호 124979
답변완료
총 5회까지 진입가능하게요 매수 진입시 최초 신호떳을때 진입 최초 진입 가격 -5tick 도달시 즉시 현재가 진입 최초 진입 가격 -10tick 도달시 즉시 현재가 진입 최초 진입 가격 -15tick 도달시 즉시 현재가 진입 최초 진입 가격 -20tick 도달시 즉시 현재가 진입 하는 수식 부탁합니다 ( 매도는 반대방향으로 ) 1회만 진입하는 식은 다음과 같습니다. input : p1(3),p2(1),af(0.02), maxAF(0.2); input : 익절틱수1(55),익절틱수2(49),손절틱수1(70),손절틱수2(30); input : 매수후수익날랑말랑한틱수(35),매도후수익날랑말랑한틱수(37),매수진입후아예빠져서손절날틱수(80),매도진입한후아예빠져서손절날틱수(74); input : N1(1),N2(10); Input :N(25),매수제한(0.02),매도제한(0.18); var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0); var : sum3(0),Tcond(false); var1 = CSar(af,maxAF); Var4 = highest(H,N); Var5 = lowest(L,N); if DayClose(N2) > 0 Then { sum1 = 0; sum2 = 0; for cnt = 0 to N2-1 { if cnt < N1 Then sum1 = sum1 + DayClose(cnt); if cnt < N2 Then sum2 = sum2 + DayClose(cnt+1); } avg1 = sum1/N1; avg2 = sum2/N2; T = 0; if avg1 >= avg2 Then T = 1; if avg1 < avg2 Then T = -1; #골드가 발생하면 if var1 > C Then { #value1에 봉번호 저장 value1 = index; #value2에 종가 저장 value2 = C; } #데드가 발생하면 If var1 < C Then { #value3에 봉번호 저장 value3 = index; #value4에 종가 저장 value4 = C; } #무포지션이고 #골드이후 10개봉이상 경과했고 #종가가 직전 10봉의 최고가보다 크고 #종가가 골드봉의 종가보다 크면 #매수 if MarketPosition == 0 and T == 1 and index >= value1+P1 and C > highest(H,P1)[1] and C <= Var4-(Var4-Var5)*매수제한 and C > value2 then buy("매수",OnClose,def,1); #무포지션이고 #데드이후 10개봉이상 경과했고 #종가가 직전 10봉의 최저가보다 작고 #종가가 데드봉의 종가보다 작으면 #매도 if MarketPosition == 0 and T == -1 and index >= value3+P2 and C < Lowest(L,P2)[1] and C >= Var5+(Var4-Var5)*매도제한 and C < value4 then Sell("매도",OnClose,def,1); ==================================================================================== 청산 수식도 부탁해요~~ 이식은 분할진입하지 않고 단발 진입할때의 청산 수식이구요... 분할진입할때의 청산시 수식은 다음과 같이 부탁드려요... 모든 기준 금액은 최초 진입했던 가격을 기준으로 하고요.. 청산시는 분할진입한것 일괄 청산 if T == 1 then SetStopProfittarget(PriceScale*익절틱수1, PointStop); SetStopLoss(PriceScale*손절틱수1, PointStop); if T == -1 then SetStopProfittarget(PriceScale*익절틱수2, PointStop); SetStopLoss(PriceScale*손절틱수2, PointStop); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*매수후수익날랑말랑한틱수 Then ExitLong("본전탈출1",AtStop,EntryPrice+PriceScale*2); Else ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*매수진입후아예빠져서손절날틱수); } if MarketPosition == -1 Then { if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*매도후수익날랑말랑한틱수 Then ExitShort("본전탈출2",AtStop,EntryPrice-PriceScale*2); Else ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*매도진입한후아예빠져서손절날틱수); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-01-04 16:38:12

안녕하세요 예스스탁입니다. 1 input : p1(3),p2(1),af(0.02), maxAF(0.2); input : 익절틱수1(55),익절틱수2(49),손절틱수1(70),손절틱수2(30); input : 매수후수익날랑말랑한틱수(35),매도후수익날랑말랑한틱수(37),매수진입후아예빠져서손절날틱수(80),매도진입한후아예빠져서손절날틱수(74); input : N1(1),N2(10); Input :N(25),매수제한(0.02),매도제한(0.18); var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0); var : sum3(0),Tcond(false); var1 = CSar(af,maxAF); Var4 = highest(H,N); Var5 = lowest(L,N); if DayClose(N2) > 0 Then { sum1 = 0; sum2 = 0; for cnt = 0 to N2-1 { if cnt < N1 Then sum1 = sum1 + DayClose(cnt); if cnt < N2 Then sum2 = sum2 + DayClose(cnt+1); } avg1 = sum1/N1; avg2 = sum2/N2; T = 0; if avg1 >= avg2 Then T = 1; if avg1 < avg2 Then T = -1; #골드가 발생하면 if var1 > C Then { #value1에 봉번호 저장 value1 = index; #value2에 종가 저장 value2 = C; } #데드가 발생하면 If var1 < C Then { #value3에 봉번호 저장 value3 = index; #value4에 종가 저장 value4 = C; } #무포지션이고 #골드이후 10개봉이상 경과했고 #종가가 직전 10봉의 최고가보다 크고 #종가가 골드봉의 종가보다 크면 #매수 if MarketPosition == 0 and T == 1 and index >= value1+P1 and C > highest(H,P1)[1] and C <= Var4-(Var4-Var5)*매수제한 and C > value2 then buy("매수1",OnClose,def,1); #무포지션이고 #데드이후 10개봉이상 경과했고 #종가가 직전 10봉의 최저가보다 작고 #종가가 데드봉의 종가보다 작으면 #매도 if MarketPosition == 0 and T == -1 and index >= value3+P2 and C < Lowest(L,P2)[1] and C >= Var5+(Var4-Var5)*매도제한 and C < value4 then Sell("매도",OnClose,def,1); } if MarketPosition == 1 Then { if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*5 Then buy("매수2",AtLimit,EntryPrice-PriceScale*5,1); if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*10 Then buy("매수3",AtLimit,EntryPrice-PriceScale*10,1); if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*15 Then buy("매수4",AtLimit,EntryPrice-PriceScale*15,1); if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*20 Then buy("매수5",AtLimit,EntryPrice-PriceScale*20,1); } if MarketPosition == -1 Then { if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*5 Then sell("매도2",AtLimit,EntryPrice+PriceScale*5,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*10 Then sell("매도3",AtLimit,EntryPrice+PriceScale*10,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*15 Then sell("매도4",AtLimit,EntryPrice+PriceScale*15,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*20 Then sell("매도5",AtLimit,EntryPrice+PriceScale*20,1); } 2 강제청산은 신호별로 동작하므로 삭제하시고 아래식으로 대체하시면 됩니다. if MarketPosition == 1 Then { if T == 1 then { ExitLong("bl1",AtStop,EntryPrice-손절틱수1); ExitLong("bp1",AtLimit,EntryPrice+익절틱수1); } if T == -1 Then { ExitLong("bl2",AtStop,EntryPrice-손절틱수2); ExitLong("bp2",AtLimit,EntryPrice+익절틱수2); } if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*매수후수익날랑말랑한틱수 Then ExitLong("본전탈출1",AtStop,EntryPrice+PriceScale*2); Else ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*매수진입후아예빠져서손절날틱수); } if MarketPosition == -1 Then { if T == 1 then { ExitShort("sl1",AtStop,EntryPrice+손절틱수1); ExitShort("sp1",AtLimit,EntryPrice-익절틱수1); } if T == -1 Then { ExitShort("sl2",AtStop,EntryPrice+손절틱수2); ExitShort("sp2",AtLimit,EntryPrice-익절틱수2); } if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*매도후수익날랑말랑한틱수 Then ExitShort("본전탈출2",AtStop,EntryPrice-PriceScale*2); Else ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*매도진입한후아예빠져서손절날틱수); } 즐거운 하루되세요 > 이형지 님이 쓴 글입니다. > 제목 : 수식 부탁해요~~ 분할진입 > 총 5회까지 진입가능하게요 매수 진입시 최초 신호떳을때 진입 최초 진입 가격 -5tick 도달시 즉시 현재가 진입 최초 진입 가격 -10tick 도달시 즉시 현재가 진입 최초 진입 가격 -15tick 도달시 즉시 현재가 진입 최초 진입 가격 -20tick 도달시 즉시 현재가 진입 하는 수식 부탁합니다 ( 매도는 반대방향으로 ) 1회만 진입하는 식은 다음과 같습니다. input : p1(3),p2(1),af(0.02), maxAF(0.2); input : 익절틱수1(55),익절틱수2(49),손절틱수1(70),손절틱수2(30); input : 매수후수익날랑말랑한틱수(35),매도후수익날랑말랑한틱수(37),매수진입후아예빠져서손절날틱수(80),매도진입한후아예빠져서손절날틱수(74); input : N1(1),N2(10); Input :N(25),매수제한(0.02),매도제한(0.18); var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0); var : sum3(0),Tcond(false); var1 = CSar(af,maxAF); Var4 = highest(H,N); Var5 = lowest(L,N); if DayClose(N2) > 0 Then { sum1 = 0; sum2 = 0; for cnt = 0 to N2-1 { if cnt < N1 Then sum1 = sum1 + DayClose(cnt); if cnt < N2 Then sum2 = sum2 + DayClose(cnt+1); } avg1 = sum1/N1; avg2 = sum2/N2; T = 0; if avg1 >= avg2 Then T = 1; if avg1 < avg2 Then T = -1; #골드가 발생하면 if var1 > C Then { #value1에 봉번호 저장 value1 = index; #value2에 종가 저장 value2 = C; } #데드가 발생하면 If var1 < C Then { #value3에 봉번호 저장 value3 = index; #value4에 종가 저장 value4 = C; } #무포지션이고 #골드이후 10개봉이상 경과했고 #종가가 직전 10봉의 최고가보다 크고 #종가가 골드봉의 종가보다 크면 #매수 if MarketPosition == 0 and T == 1 and index >= value1+P1 and C > highest(H,P1)[1] and C <= Var4-(Var4-Var5)*매수제한 and C > value2 then buy("매수",OnClose,def,1); #무포지션이고 #데드이후 10개봉이상 경과했고 #종가가 직전 10봉의 최저가보다 작고 #종가가 데드봉의 종가보다 작으면 #매도 if MarketPosition == 0 and T == -1 and index >= value3+P2 and C < Lowest(L,P2)[1] and C >= Var5+(Var4-Var5)*매도제한 and C < value4 then Sell("매도",OnClose,def,1); ==================================================================================== 청산 수식도 부탁해요~~ 이식은 분할진입하지 않고 단발 진입할때의 청산 수식이구요... 분할진입할때의 청산시 수식은 다음과 같이 부탁드려요... 모든 기준 금액은 최초 진입했던 가격을 기준으로 하고요.. 청산시는 분할진입한것 일괄 청산 if T == 1 then SetStopProfittarget(PriceScale*익절틱수1, PointStop); SetStopLoss(PriceScale*손절틱수1, PointStop); if T == -1 then SetStopProfittarget(PriceScale*익절틱수2, PointStop); SetStopLoss(PriceScale*손절틱수2, PointStop); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*매수후수익날랑말랑한틱수 Then ExitLong("본전탈출1",AtStop,EntryPrice+PriceScale*2); Else ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*매수진입후아예빠져서손절날틱수); } if MarketPosition == -1 Then { if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*매도후수익날랑말랑한틱수 Then ExitShort("본전탈출2",AtStop,EntryPrice-PriceScale*2); Else ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*매도진입한후아예빠져서손절날틱수); } }