커뮤니티

부탁 드립니다.

프로필 이미지
yes
2019-01-08 22:37:56
165
글번호 125072
답변완료
다음은 60740에서 답변 해주신 식 입니다. 모의 테스트 결과 원하는 것과 다른 결과가 있어 부탁 드립니다. 예를 들어 매도 전용 수식에서는 포지션이 매도만 발생하고(현재는 매수 포지션도 발생, 보유) 조건에 맞으면 매도,청산 또는 손절만 생기게 하고 싶습니다. 매도, 청산(또는 손절)---> 매도, 청산(또는 손절)이 반복되게끔, 즉 매수 포지션의 보유가 생기지 않도록 가능 한지요? 아울러 매수 전용 수식도 매수 포지션만 생기게 부탁 드립니다. 추가요구 사항) 위의 조건의 만족되는 수식이 완성되면 추가로 부탁 드립니다. 예를 들어 포지션 보유가 있는 상태일 경우만 외부 변수로 입력한 손절가격이 되면 우선적으로 손절, 익절 가격이 되면 무조건 처리 되도록 부탁 드립니다. 감사 합니다. 1 input:수평기준_상(0.002),수평기준_하(-0.002),sig(5),손실틱수(10); var : T(0); Var : Summer(False),Year(0); Year = Floor(sDate / 10000); Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); Summer = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; if sdate != sdate[1] Then { if summer == true then { SetStopEndofday(053000); } if summer == false and stime == 063000 then { SetStopEndofday(063000); } } if Bdate != bdate[1] Then SetStopEndofday(0); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then value1 = 1; else value1 = -1; if var2>var2[1] then value2 = 1; else value2 = -1; if var3>var3[1] then value3 = 1; else value3 = -1; if var4>var4[1] then value4 = 1; else value4 = -1; if var5>var5[1] then value5 = 1; else value5 = -1; Condition1 = min(value1,value2,value3,value4,value5) > 0; Condition2 = max(value1,value2,value3,value4,value5) < 0; if T != -1 and max(var1,var2,var3,var4,var5) < var52 Then T = -1; if T != 1 and max(var1,var2,var3,var4,var5) > var51 Then T = 1; if T == -1 and Condition1 == true and Condition1[1] == false Then buy("b"); if MarketPosition == 1 and min(var1,var2,var3,var4,var5) > var51 and Condition2 == true Then ExitLong("bx"); SetStopLoss(PriceScale*손실틱수,PointStop); 2 input:수평기준_상(0.002),수평기준_하(-0.002),sig(5),손실틱수(10); var : T(0); Var : Summer(False),Year(0); Year = Floor(sDate / 10000); Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); Summer = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; if sdate != sdate[1] Then { if summer == true then { SetStopEndofday(053000); } if summer == false and stime == 063000 then { SetStopEndofday(063000); } } if Bdate != bdate[1] Then SetStopEndofday(0); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then value1 = 1; else value1 = -1; if var2>var2[1] then value2 = 1; else value2 = -1; if var3>var3[1] then value3 = 1; else value3 = -1; if var4>var4[1] then value4 = 1; else value4 = -1; if var5>var5[1] then value5 = 1; else value5 = -1; Condition1 = min(value1,value2,value3,value4,value5) > 0; Condition2 = max(value1,value2,value3,value4,value5) < 0; if T != -1 and max(var1,var2,var3,var4,var5) < var52 Then T = -1; if T != 1 and max(var1,var2,var3,var4,var5) > var51 Then T = 1; if T == 1 and Condition2 == true and Condition2[1] == false Then sell("s"); if MarketPosition == -1 and max(var1,var2,var3,var4,var5) < var52 and Condition1 == true Then ExitShort("sx"); SetStopLoss(PriceScale*손실틱수,PointStop);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-01-10 10:10:18

안녕하세요 예스스탁입니다. 1 1번 수식은 매수와 매수청산신호만, 2번 수식은 매도와 매도청산신호만 발생합니다. 수식 내용상 처리해 드릴 내용이 없습니다. 랭귀지는 차트의 신호대로 신호와함께 주문을 발생합니다. 주문 발생후에 미체결등의 내용을 수식에서 알수없고 처리가 되지 않습니다. 또한 차트에서 청산신호가 발생하는데 계좌에 청산할 포지션이 없으면 해당 청산신호에 의한 주문으로 인해 신규로 포지션이 잡히게 됩니다. 즉 매수청산 신호는 매도주문입니다. 계좌에 매수포지션이 없는 상태에서 체결되면 계좌에 매도포지션을 가지게 됩니다. 해당 부분은 랭귀지에서 처리할수 없습니다. 사용자분이 수동으로 개입해 주셔야 합니다. 2-1 input:수평기준_상(0.002),수평기준_하(-0.002),sig(5),손실틱수(10),손절가격(45.50),익절가격(50.50); var : T(0); Var : Summer(False),Year(0); Year = Floor(sDate / 10000); Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); Summer = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; if sdate != sdate[1] Then { if summer == true then { SetStopEndofday(053000); } if summer == false and stime == 063000 then { SetStopEndofday(063000); } } if Bdate != bdate[1] Then SetStopEndofday(0); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then value1 = 1; else value1 = -1; if var2>var2[1] then value2 = 1; else value2 = -1; if var3>var3[1] then value3 = 1; else value3 = -1; if var4>var4[1] then value4 = 1; else value4 = -1; if var5>var5[1] then value5 = 1; else value5 = -1; Condition1 = min(value1,value2,value3,value4,value5) > 0; Condition2 = max(value1,value2,value3,value4,value5) < 0; if T != -1 and max(var1,var2,var3,var4,var5) < var52 Then T = -1; if T != 1 and max(var1,var2,var3,var4,var5) > var51 Then T = 1; if T == -1 and Condition1 == true and Condition1[1] == false Then buy("b"); if MarketPosition == 1 and min(var1,var2,var3,var4,var5) > var51 and Condition2 == true Then ExitLong("bx1"); SetStopLoss(PriceScale*손실틱수,PointStop); if MarketPosition == 1 then { ExitLong("bx2",AtStop,손절가격); ExitLong("bx3",AtLimit,익절가격); } 2-2 input:수평기준_상(0.002),수평기준_하(-0.002),sig(5),손실틱수(10),손절가격(50.50),익절가격(45.50); var : T(0); Var : Summer(False),Year(0); Year = Floor(sDate / 10000); Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); Summer = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; if sdate != sdate[1] Then { if summer == true then { SetStopEndofday(053000); } if summer == false and stime == 063000 then { SetStopEndofday(063000); } } if Bdate != bdate[1] Then SetStopEndofday(0); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then value1 = 1; else value1 = -1; if var2>var2[1] then value2 = 1; else value2 = -1; if var3>var3[1] then value3 = 1; else value3 = -1; if var4>var4[1] then value4 = 1; else value4 = -1; if var5>var5[1] then value5 = 1; else value5 = -1; Condition1 = min(value1,value2,value3,value4,value5) > 0; Condition2 = max(value1,value2,value3,value4,value5) < 0; if T != -1 and max(var1,var2,var3,var4,var5) < var52 Then T = -1; if T != 1 and max(var1,var2,var3,var4,var5) > var51 Then T = 1; if T == 1 and Condition2 == true and Condition2[1] == false Then sell("s"); if MarketPosition == -1 and max(var1,var2,var3,var4,var5) < var52 and Condition1 == true Then ExitShort("sx"); SetStopLoss(PriceScale*손실틱수,PointStop); if MarketPosition == -1 then { ExitShort("sx2",AtStop,손절가격); ExitShort("sx3",AtLimit,익절가격); } 즐거운 하루되세요 > yes 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 다음은 60740에서 답변 해주신 식 입니다. 모의 테스트 결과 원하는 것과 다른 결과가 있어 부탁 드립니다. 예를 들어 매도 전용 수식에서는 포지션이 매도만 발생하고(현재는 매수 포지션도 발생, 보유) 조건에 맞으면 매도,청산 또는 손절만 생기게 하고 싶습니다. 매도, 청산(또는 손절)---> 매도, 청산(또는 손절)이 반복되게끔, 즉 매수 포지션의 보유가 생기지 않도록 가능 한지요? 아울러 매수 전용 수식도 매수 포지션만 생기게 부탁 드립니다. 추가요구 사항) 위의 조건의 만족되는 수식이 완성되면 추가로 부탁 드립니다. 예를 들어 포지션 보유가 있는 상태일 경우만 외부 변수로 입력한 손절가격이 되면 우선적으로 손절, 익절 가격이 되면 무조건 처리 되도록 부탁 드립니다. 감사 합니다. 1 input:수평기준_상(0.002),수평기준_하(-0.002),sig(5),손실틱수(10); var : T(0); Var : Summer(False),Year(0); Year = Floor(sDate / 10000); Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); Summer = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; if sdate != sdate[1] Then { if summer == true then { SetStopEndofday(053000); } if summer == false and stime == 063000 then { SetStopEndofday(063000); } } if Bdate != bdate[1] Then SetStopEndofday(0); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then value1 = 1; else value1 = -1; if var2>var2[1] then value2 = 1; else value2 = -1; if var3>var3[1] then value3 = 1; else value3 = -1; if var4>var4[1] then value4 = 1; else value4 = -1; if var5>var5[1] then value5 = 1; else value5 = -1; Condition1 = min(value1,value2,value3,value4,value5) > 0; Condition2 = max(value1,value2,value3,value4,value5) < 0; if T != -1 and max(var1,var2,var3,var4,var5) < var52 Then T = -1; if T != 1 and max(var1,var2,var3,var4,var5) > var51 Then T = 1; if T == -1 and Condition1 == true and Condition1[1] == false Then buy("b"); if MarketPosition == 1 and min(var1,var2,var3,var4,var5) > var51 and Condition2 == true Then ExitLong("bx"); SetStopLoss(PriceScale*손실틱수,PointStop); 2 input:수평기준_상(0.002),수평기준_하(-0.002),sig(5),손실틱수(10); var : T(0); Var : Summer(False),Year(0); Year = Floor(sDate / 10000); Value1 = (10000 * Year) + (100 * 3) + 1; Value2 = 15 - dayofweek(value1); value3 = (10000 * Year) + (100 * 11) + 1; value4 = 8 - dayofweek(value3); Summer = date > (10000 * Year) + (100 * 3) + value2 And date < (10000 * Year) + (100 * 11) + value4; if sdate != sdate[1] Then { if summer == true then { SetStopEndofday(053000); } if summer == false and stime == 063000 then { SetStopEndofday(063000); } } if Bdate != bdate[1] Then SetStopEndofday(0); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then value1 = 1; else value1 = -1; if var2>var2[1] then value2 = 1; else value2 = -1; if var3>var3[1] then value3 = 1; else value3 = -1; if var4>var4[1] then value4 = 1; else value4 = -1; if var5>var5[1] then value5 = 1; else value5 = -1; Condition1 = min(value1,value2,value3,value4,value5) > 0; Condition2 = max(value1,value2,value3,value4,value5) < 0; if T != -1 and max(var1,var2,var3,var4,var5) < var52 Then T = -1; if T != 1 and max(var1,var2,var3,var4,var5) > var51 Then T = 1; if T == 1 and Condition2 == true and Condition2[1] == false Then sell("s"); if MarketPosition == -1 and max(var1,var2,var3,var4,var5) < var52 and Condition1 == true Then ExitShort("sx"); SetStopLoss(PriceScale*손실틱수,PointStop);