커뮤니티
부탁 드립니다.
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);