커뮤니티

문의 드립니다

프로필 이미지
가이츠
2018-07-13 12:23:14
122
글번호 120555
답변완료
아래 시스템에서 진입시점 이후 지정한 시간(5분)내에 지정한 수익률(3%)이 나오지 않으면 청산하는 수식 추가부탁드립니다. 두 변수는 input값으로 부탁드립니다. 아울러 검증도 한번 부탁드립니다. 아래 외부변수 중 per값이 지정수익률(3%)보다 작을때 수식에 오류가 생길까요? input : 매수금액(1000000); input : Per(5); var : Evol(0),Xcnt(0),OpenCond(false),Xcond1(false),Xcond2(false),Xcond3(false); if stime == 153000 and NextBarOpen <= C*1.08 and NextBarOpen > C*1.00 Then { buy("b",AtMarket,def,Floor(매수금액/C)); } //SetStopTrailing(2,10,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산 if MarketPosition == 1 Then { SetStopLoss(4); #봉완성시 다음봉 시가가 진입가 대비 5% 이상 상승하면 true if NextBarOpen >= EntryPrice*(1+Per/100) Then OpenCond = true; #BP1 청산이 발생하면 Xcond1은 true if LatestExitName(0) == "BP1" Then Xcond1 = true; #BP2 청산이 발생하면 Xcond2은 true if LatestExitName(0) == "BP2" Then Xcond2 = true; #BP3 청산이 발생하면 Xcond3은 true if LatestExitName(0) == "BP3" Then Xcond3 = True; #OpenCond가 false일때 if OpenCond == false Then{ if Xcond1 == false then ExitLong("BP1",atlimit,EntryPrice(0)*1.03,"",Floor(MaxContracts*0.3),1); if Xcond2 == false then ExitLong("BP2",atlimit,EntryPrice(0)*1.04,"",Floor(MaxContracts*0.4),1); if Xcond3 == false then ExitLong("BP3",atlimit,EntryPrice(0)*1.05); } #OpenCond가 true일&#46468; if OpenCond == true Then { #BP1로 청산이 안된 경우만 발생 if Xcond1 == false Then ExitLong("BP6",atlimit,EntryPrice*(1+(Per+3)/100),"",Floor(MaxContracts*0.3),1); #BP2로 청산이 안된 경우만 발생 if Xcond2 == false Then ExitLong("BP7",atlimit,EntryPrice*(1+(Per+4)/100),"",Floor(MaxContracts*0.4),1); #BP3로 청산이 안된 경우만 발생 if Xcond3 == false Then ExitLong("BP8",atlimit,EntryPrice*(1+(Per+5)/100)); #5%이하로 가격하락하면 전량처산 exitlong("BP5",AtStop,EntryPrice*(1+Per/100)); } SetStopEndofday(151000); } #매수포지션이 아니면 모두 false로 초기화 if MarketPosition != 1 Then{ OpenCond = false; Xcond1 = false; Xcond2 = false; Xcond3 = false; SetStopLoss(0);//해제 SetStopEndofday(0);//해제 }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-07-13 14:02:06

안녕하세요 예스스탁입니다. 수식은 먼저 만족한 조건으로 신호가 발생합니다. 현재 수식은 per에 도달했을때와 도달하지 못했을때 각각 분할청산이 있습니다. 각각의 분할목표수익률이 지정수익률보다 작으면 청산중에 추가한 청산식에 의해 청산될수 있습니다. input : 매수금액(1000000); input : Per(5),경과분수(5),수익률(3); var : Evol(0),Xcnt(0),OpenCond(false),Xcond1(false),Xcond2(false),Xcond3(false); if stime == 153000 and NextBarOpen <= C*1.08 and NextBarOpen > C*1.00 Then { buy("b",AtMarket,def,Floor(매수금액/C)); } //SetStopTrailing(2,10,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산 if MarketPosition == 1 Then { if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+5 and highest(H,BarsSinceEntry) < EntryPrice+(1+수익률)/100 Then exitlong(); SetStopLoss(4); #봉완성시 다음봉 시가가 진입가 대비 5% 이상 상승하면 true if NextBarOpen >= EntryPrice*(1+Per/100) Then OpenCond = true; #BP1 청산이 발생하면 Xcond1은 true if LatestExitName(0) == "BP1" Then Xcond1 = true; #BP2 청산이 발생하면 Xcond2은 true if LatestExitName(0) == "BP2" Then Xcond2 = true; #BP3 청산이 발생하면 Xcond3은 true if LatestExitName(0) == "BP3" Then Xcond3 = True; #OpenCond가 false일때 if OpenCond == false Then{ if Xcond1 == false then ExitLong("BP1",atlimit,EntryPrice(0)*1.03,"",Floor(MaxContracts*0.3),1); if Xcond2 == false then ExitLong("BP2",atlimit,EntryPrice(0)*1.04,"",Floor(MaxContracts*0.4),1); if Xcond3 == false then ExitLong("BP3",atlimit,EntryPrice(0)*1.05); } #OpenCond가 true일떄 if OpenCond == true Then { #BP1로 청산이 안된 경우만 발생 if Xcond1 == false Then ExitLong("BP6",atlimit,EntryPrice*(1+(Per+3)/100),"",Floor(MaxContracts*0.3),1); #BP2로 청산이 안된 경우만 발생 if Xcond2 == false Then ExitLong("BP7",atlimit,EntryPrice*(1+(Per+4)/100),"",Floor(MaxContracts*0.4),1); #BP3로 청산이 안된 경우만 발생 if Xcond3 == false Then ExitLong("BP8",atlimit,EntryPrice*(1+(Per+5)/100)); #5%이하로 가격하락하면 전량처산 exitlong("BP5",AtStop,EntryPrice*(1+Per/100)); } SetStopEndofday(151000); } #매수포지션이 아니면 모두 false로 초기화 if MarketPosition != 1 Then{ OpenCond = false; Xcond1 = false; Xcond2 = false; Xcond3 = false; SetStopLoss(0);//해제 SetStopEndofday(0);//해제 } 즐거운 하루되세요 > 가이츠 님이 쓴 글입니다. > 제목 : 문의 드립니다 > 아래 시스템에서 진입시점 이후 지정한 시간(5분)내에 지정한 수익률(3%)이 나오지 않으면 청산하는 수식 추가부탁드립니다. 두 변수는 input값으로 부탁드립니다. 아울러 검증도 한번 부탁드립니다. 아래 외부변수 중 per값이 지정수익률(3%)보다 작을때 수식에 오류가 생길까요? input : 매수금액(1000000); input : Per(5); var : Evol(0),Xcnt(0),OpenCond(false),Xcond1(false),Xcond2(false),Xcond3(false); if stime == 153000 and NextBarOpen <= C*1.08 and NextBarOpen > C*1.00 Then { buy("b",AtMarket,def,Floor(매수금액/C)); } //SetStopTrailing(2,10,PercentStop,1); //최소 10% 수익 이후에 최고 가격대비 2% 하락하면 청산 if MarketPosition == 1 Then { SetStopLoss(4); #봉완성시 다음봉 시가가 진입가 대비 5% 이상 상승하면 true if NextBarOpen >= EntryPrice*(1+Per/100) Then OpenCond = true; #BP1 청산이 발생하면 Xcond1은 true if LatestExitName(0) == "BP1" Then Xcond1 = true; #BP2 청산이 발생하면 Xcond2은 true if LatestExitName(0) == "BP2" Then Xcond2 = true; #BP3 청산이 발생하면 Xcond3은 true if LatestExitName(0) == "BP3" Then Xcond3 = True; #OpenCond가 false일때 if OpenCond == false Then{ if Xcond1 == false then ExitLong("BP1",atlimit,EntryPrice(0)*1.03,"",Floor(MaxContracts*0.3),1); if Xcond2 == false then ExitLong("BP2",atlimit,EntryPrice(0)*1.04,"",Floor(MaxContracts*0.4),1); if Xcond3 == false then ExitLong("BP3",atlimit,EntryPrice(0)*1.05); } #OpenCond가 true일떄 if OpenCond == true Then { #BP1로 청산이 안된 경우만 발생 if Xcond1 == false Then ExitLong("BP6",atlimit,EntryPrice*(1+(Per+3)/100),"",Floor(MaxContracts*0.3),1); #BP2로 청산이 안된 경우만 발생 if Xcond2 == false Then ExitLong("BP7",atlimit,EntryPrice*(1+(Per+4)/100),"",Floor(MaxContracts*0.4),1); #BP3로 청산이 안된 경우만 발생 if Xcond3 == false Then ExitLong("BP8",atlimit,EntryPrice*(1+(Per+5)/100)); #5%이하로 가격하락하면 전량처산 exitlong("BP5",AtStop,EntryPrice*(1+Per/100)); } SetStopEndofday(151000); } #매수포지션이 아니면 모두 false로 초기화 if MarketPosition != 1 Then{ OpenCond = false; Xcond1 = false; Xcond2 = false; Xcond3 = false; SetStopLoss(0);//해제 SetStopEndofday(0);//해제 }