예스스탁
예스스탁 답변
2023-09-04 13:36:53
안녕하세요
예스스탁입니다.
올려주신 내용 중 첫진입을 제외하고 개별 추가진입별로 익절/손절을 해야 하므로
강제청산 함수를 사용할 수 없어 각 추가진입별로 진입가 저장해서 청산하게 작성하셔야 합니다.
추가진입 5회까지 작성해 드립니다.
필요한 만큼 내용 참고하셔서 나열해 추가해주셔야 합니다.
청산함수에 진입명을 지정하면 해당 진입의 수량만 청산하므로
진입별로 이름 다르게 지정해서 이용하시면 됩니다.
input : P1(10),P2(30),P3(100),P(10);
Input : n1(2), n2(1), 익절(5), 손절(7);
Var: myAtr(0);
var : mav1(0),mav2(0),mav3(0);
var : b2(0),b3(0),b4(0),b5(0),b6(0);
var : s2(0),s3(0),s4(0),s5(0),s6(0);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
myAtr = Atr(50);
Condition1 = mav1 > mav2 and mav2 > mav3;
Condition2 = mav1 < mav2 and mav2 < mav3;
if MarketPosition <= 0 and Condition1 == true and Condition1[1] == False Then
Buy("b1",OnClose,Def,n1);
if MarketPosition >= 0 and Condition2 == true and Condition2[1] == False Then
Sell("s1",OnClose,Def,n1);
if MarketPosition == 1 Then
{
if H[1] < C && (C > O) && (H-max(C,O) < abs(C-O)) && (abs(C-O) > ma(abs(C-O),P)) Then
{
if MaxEntries == 1 Then
Buy("b2",OnClose,Def,n2);
if MaxEntries == 1 Then
Buy("b3",OnClose,Def,n2);
if MaxEntries == 1 Then
Buy("b4",OnClose,Def,n2);
if MaxEntries == 1 Then
Buy("b5",OnClose,Def,n2);
if MaxEntries == 1 Then
Buy("b6",OnClose,Def,n2);
}
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "b2" Then
b2 = LatestEntryPrice(0);
if LatestEntryName(0) == "b3" Then
b3 = LatestEntryPrice(0);
if LatestEntryName(0) == "b4" Then
b4 = LatestEntryPrice(0);
if LatestEntryName(0) == "b5" Then
b5 = LatestEntryPrice(0);
if LatestEntryName(0) == "b6" Then
b6 = LatestEntryPrice(0);
}
if b2 > 0 Then
{
ExitLong("bp2",AtLimit,b2+myAtr*익절,"b2");
ExitLong("bl2",AtStop,b2-myAtr*손절,"b2");
}
if b3 > 0 Then
{
ExitLong("bp3",AtLimit,b3+myAtr*익절,"b3");
ExitLong("bl3",AtStop,b3-myAtr*손절,"b3");
}
if b4 > 0 Then
{
ExitLong("bp4",AtLimit,b4+myAtr*익절,"b4");
ExitLong("bl4",AtStop,b4-myAtr*손절,"b4");
}
if b5 > 0 Then
{
ExitLong("bp5",AtLimit,b5+myAtr*익절,"b5");
ExitLong("bl5",AtStop,b5-myAtr*손절,"b5");
}
if b6 > 0 Then
{
ExitLong("bp6",AtLimit,b6+myAtr*익절,"b6");
ExitLong("bl6",AtStop,b6-myAtr*손절,"b6");
}
}
Else
{
b2 = 0;
b3 = 0;
b4 = 0;
b5 = 0;
b6 = 0;
}
if MarketPosition == -1 Then
{
if L[1] > C && (C < O) && (min(C,O)-L < abs(C-O)) && (abs(C-O) > ma(abs(C-O),P)) Then
{
if MaxEntries == 1 Then
Sell("s2",OnClose,Def,n2);
if MaxEntries == 2 Then
Sell("s3",OnClose,Def,n2);
if MaxEntries == 3 Then
Sell("s4",OnClose,Def,n2);
if MaxEntries == 4 Then
Sell("s5",OnClose,Def,n2);
if MaxEntries == 5 Then
Sell("s6",OnClose,Def,n2);
}
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "s2" Then
s2 = LatestEntryPrice(0);
if LatestEntryName(0) == "s3" Then
s3 = LatestEntryPrice(0);
if LatestEntryName(0) == "s4" Then
s4 = LatestEntryPrice(0);
if LatestEntryName(0) == "s5" Then
s5 = LatestEntryPrice(0);
if LatestEntryName(0) == "s6" Then
s6 = LatestEntryPrice(0);
}
if s2 > 0 Then
{
ExitShort("sp2",AtLimit,s2-myAtr*익절,"s2");
ExitShort("sl2",AtStop,s2+myAtr*손절,"s2");
}
if s3 > 0 Then
{
ExitShort("sp3",AtLimit,s3-myAtr*익절,"s3");
ExitShort("sl3",AtStop,s3+myAtr*손절,"s3");
}
if s4 > 0 Then
{
ExitShort("sp4",AtLimit,s4-myAtr*익절,"s4");
ExitShort("sl4",AtStop,s4+myAtr*손절,"s4");
}
if s5 > 0 Then
{
ExitShort("sp5",AtLimit,s5-myAtr*익절,"s5");
ExitShort("sl5",AtStop,s5+myAtr*손절,"s5");
}
if s6 > 0 Then
{
ExitShort("sp6",AtLimit,s6-myAtr*익절,"s6");
ExitShort("sl6",AtStop,s6+myAtr*손절,"s6");
}
}
Else
{
s2 = 0;
s3 = 0;
s4 = 0;
s5 = 0;
s6 = 0;
}
즐거운 하루되세요
> 에구머니 님이 쓴 글입니다.
> 제목 : 수식 문의
> 안녕하세요?
시스템 수식 문의 드립니다.
감사합니다.