예스스탁
예스스탁 답변
2020-11-23 17:04:02
안녕하세요
예스스탁입니다.
//////////////////////////////////////////////////////////////////
input : Mode_1_3(3),howmany(5);
input : n1(1), n2(1), n3(2),n4(3),n5(4);
Input: k1(2), k2(3), k3(3), k4(4), k익절(5), k손절(6);
var : upp(false), dnn(false), T(0), Left(3), right(3);
var : ATRV(0),HH(0),LL(0),SHV(0),SHI(0),SLV(0),SLi(0);
var : HC(0),LC(0),EP1(0),EP2(0),EP3(0),EP4(0);
var1 = ma(C, 20);
var2 = ma(C, 60);
var3 = ma(C, 180);
if var1 > var2 && var2 > var3 then
{
upp = true;
dnn = false;
} // 상방
else if var1 < var2 && var2 < var3 then
{
upp = false;
dnn = true;
} // 하방
ATRV = ATR(96);
if upp Then
{
T = 1;
if MarketPosition == -1 Then
ExitShort();
}
if dnn Then
{
T = -1;
if MarketPosition == 1 Then
exitlong();
}
if SwingHigh(1,h,Left,right,Left+right+1) != -1 Then
{
SHV = H[3];
SHI = 0;
}
if SwingLow(1,l,Left,right,Left+right+1) != -1 Then
{
SLV = L[3];
SLI = 0;
}
SHI = SHI+1;
SLI = SLI+1;
if T == 1 and T != T[1] Then // HH == upp로 바뀐 이후의 최고값
HH = H;
if T == -1 and T != T[1] Then // LL == dnn으로 바뀐 이후의 최저값
LL = L;
if T == 1 Then
{
if H > HH Then
HH = H;
if T[1] != 1 Then
buy("b1",OnClose,def,n1);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then
{
HC = C;
EP1 = LatestEntryPrice(0);
EP2 = EP1[1];
EP3 = EP2[1];
EP4 = EP3[1];
}
if HC > 0 and C > HC Then
HC = C;
if MaxEntries == 1 Then
{
if MaxEntries < Howmany and
((C < LatestEntryPrice(0) - k1*Atrv && C>O) or
(C < LatestEntryPrice(0) - k2*Atrv) or
(C < HC - k3*Atrv) or
(C < HC - k4*ATrv and C > O)) Then
Buy("b2",OnClose,DEf,n2);
}
if MaxEntries == 2 Then
{
if Howmany >= 2 Then
ExitLong("b2p2",AtLimit,LatestEntryPrice(0) + k익절*ATrv,"b2");
if Howmany == 2 Then
ExitLong("b2l2",Atstop,LatestEntryPrice(0) - k손절*ATrv,"b2");
if MaxEntries < Howmany and
((C < LatestEntryPrice(0) - k3*Atrv && C > O) or
(C < LatestEntryPrice(0) - k4*ATrv)) Then
Buy("b3",OnClose,DEf,n3);
}
if MaxEntries == 3 Then
{
if Howmany >= 3 Then
{
ExitLong("b3p2",AtLimit,(EP1+EP2)/2 + k익절*ATrv,"b2");
ExitLong("b3p3",AtLimit,(EP1+EP2)/2 + k익절*ATrv,"b3");
}
if Howmany == 3 Then
{
ExitLong("b3l2",Atstop,(EP1+EP2)/2 - k손절*ATrv,"b2");
ExitLong("b3l3",Atstop,(EP1+EP2)/2 - k손절*ATrv,"b3");
}
if MaxEntries < Howmany and
((C < LatestEntryPrice(0) - k3*Atrv && C > O) or
(C < LatestEntryPrice(0) - k4*ATrv)) Then
Buy("b4",OnClose,DEf,n4);
}
if MaxEntries == 4 Then
{
if Howmany >= 4 Then
{
ExitLong("b4p2",AtLimit,(EP1+EP2+EP3)/3 + k익절*ATrv,"b2");
ExitLong("b4p3",AtLimit,(EP1+EP2+EP3)/3 + k익절*ATrv,"b3");
ExitLong("b4p4",AtLimit,(EP1+EP2+EP3)/3 + k익절*ATrv,"b4");
}
if Howmany == 4 Then
{
ExitLong("b4l2",Atstop,(EP1+EP2+EP4)/3 - k손절*ATrv,"b2");
ExitLong("b4l3",Atstop,(EP1+EP2+EP4)/3 - k손절*ATrv,"b3");
ExitLong("b4l4",Atstop,(EP1+EP2+EP4)/3 - k손절*ATrv,"b4");
}
if MaxEntries < Howmany and
((C < LatestEntryPrice(0) - k3*Atrv && C > O) or
(C < LatestEntryPrice(0) - k4*ATrv)) Then
Buy("b5",OnClose,DEf,n5);
}
if MaxEntries == 5 Then
{
exitLong("b5p2",AtLimit,LatestEntryPrice(0) + k익절*ATrv,"b2");
exitLong("b5p3",AtLimit,LatestEntryPrice(0) + k익절*ATrv,"b3");
exitLong("b5p4",AtLimit,LatestEntryPrice(0) + k익절*ATrv,"b4");
exitLong("b5p5",AtLimit,LatestEntryPrice(0) + k익절*ATrv,"b5");
exitLong("b5l2",AtLimit,LatestEntryPrice(0) - k손절*ATrv,"b2");
exitLong("b5l3",AtLimit,LatestEntryPrice(0) - k손절*ATrv,"b3");
exitLong("b5l4",AtLimit,LatestEntryPrice(0) - k손절*ATrv,"b4");
exitLong("b5l5",AtLimit,LatestEntryPrice(0) - k손절*ATrv,"b5");
}
}
}
if T == -1 Then
{
if L < LL Then
LL = L;
if T[1] != -1 Then
Sell("s1",OnClose,def,n1);
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then
{
LC = L;
EP1 = LatestEntryPrice(0);
EP2 = EP1[1];
EP3 = EP2[1];
EP4 = EP3[1];
}
if LC > 0 and C < LC Then
LC = C;
if MaxEntries == 1 Then
{
if MaxEntries < Howmany and
((C > LatestEntryPrice(0) + k1*Atrv && C < O) or
(C > LatestEntryPrice(0) + k2*Atrv) or
(C > LC + k3*Atrv) or
(C > LC + k4*ATrv and C < O)) Then
Sell("s2",OnClose,DEf,n2);
}
if MaxEntries == 2 Then
{
if Howmany >= 2 Then
ExitShort("s2p2",AtLimit,LatestEntryPrice(0) - k익절*ATrv,"s2");
if Howmany == 2 Then
ExitShort("s2l2",Atstop,LatestEntryPrice(0) + k손절*ATrv,"s2");
if MaxEntries < Howmany and
((C > LatestEntryPrice(0) + k3*Atrv && C < O) or
(C > LatestEntryPrice(0) + k4*ATrv)) Then
Sell("s3",OnClose,DEf,n3);
}
if MaxEntries == 3 Then
{
if Howmany >= 3 Then
{
ExitShort("s3p2",AtLimit,(EP1+EP2)/2 - k익절*ATrv,"s2");
ExitShort("s3p3",AtLimit,(EP1+EP2)/2 - k익절*ATrv,"s3");
}
if Howmany == 3 Then
{
ExitShort("s3l2",Atstop,(EP1+EP2)/2 + k손절*ATrv,"s2");
ExitShort("s3l3",Atstop,(EP1+EP2)/2 + k손절*ATrv,"s3");
}
if MaxEntries < Howmany and
((C > LatestEntryPrice(0) + k3*Atrv && C < O) or
(C > LatestEntryPrice(0) + k4*ATrv)) Then
Sell("s4",OnClose,DEf,n4);
}
if MaxEntries == 4 Then
{
if Howmany >= 4 Then
{
ExitShort("s4p2",AtLimit,(EP1+EP2+EP3)/3 - k익절*ATrv,"s2");
ExitShort("s4p3",AtLimit,(EP1+EP2+EP3)/3 - k익절*ATrv,"s3");
ExitShort("s4p4",AtLimit,(EP1+EP2+EP3)/3 - k익절*ATrv,"s4");
}
if Howmany == 4 Then
{
ExitShort("s4l2",Atstop,(EP1+EP2+EP4)/3 + k손절*ATrv,"s2");
ExitShort("s4l3",Atstop,(EP1+EP2+EP4)/3 + k손절*ATrv,"s3");
ExitShort("s4l4",Atstop,(EP1+EP2+EP4)/3 + k손절*ATrv,"s4");
}
if MaxEntries < Howmany and
((C > LatestEntryPrice(0) + k3*Atrv && C < O) or
(C > LatestEntryPrice(0) + k4*ATrv)) Then
Sell("s5",OnClose,DEf,n5);
}
if MaxEntries == 5 Then
{
ExitShort("s5p2",AtLimit,LatestEntryPrice(0) - k익절*ATrv,"s2");
ExitShort("s5p3",AtLimit,LatestEntryPrice(0) - k익절*ATrv,"s3");
ExitShort("s5p4",AtLimit,LatestEntryPrice(0) - k익절*ATrv,"s4");
ExitShort("s5p5",AtLimit,LatestEntryPrice(0) - k익절*ATrv,"s5");
ExitShort("s5l2",AtLimit,LatestEntryPrice(0) + k손절*ATrv,"s2");
ExitShort("s5l3",AtLimit,LatestEntryPrice(0) + k손절*ATrv,"s3");
ExitShort("s5l4",AtLimit,LatestEntryPrice(0) + k손절*ATrv,"s4");
ExitShort("s5l5",AtLimit,LatestEntryPrice(0) + k손절*ATrv,"s5");
}
}
}
즐거운 하루되세요
> 에구머니 님이 쓴 글입니다.
> 제목 : 수식 문의
> 수식 문의 드립니다.
첨부한 예전 수식을 수정하는 내용입니다.
감사드립니다.