예스스탁
예스스탁 답변
2024-01-09 10:23:01
안녕하세요
예스스탁입니다.
올려주신 내용은 각 진입별로 분할청산을 하므로
진입별로 진입가와 진입행단계등을 저장하게 나열해서 작성해야 합니다.
업무상 추가진입 10회까지 작성해 드릴수는 없습니다.
2회까지만 작성해 드리므로 수식과 주석내용 참고하셔서 확장하시기 바랍니다.
var : P1(0),P2(0),BX(False),L1(0),lastL(0);
var : B1(0),BXcond1(false);
var : B2(0),BXcond2(false);
var : B3(0),BXcond3(false);
var : N1(0),N2(0),SX(False),H1(0),LastH(0);
var : S1(0),SXcond1(false);
var : S2(0),SXcond2(false);
var : S3(0),SXcond3(false);
if C > O Then
{
P1 = C;
P2 = P1[1];
}
#첫매수
if MarketPosition == 0 and C > MA(C, 20) and C > O and C[1] < O[1] and C > C[1] Then
{
Buy("B1",OnClose,Def,4);
B1 = C;
BXcond1 = False;
#첫매수봉 저가
L1 = L;
#마지막 매수봉 저가
LastL = L;
}
if MarketPosition == 1 Then
{
#추가매수
if C > O and P1 > P2 Then
{
#두번째 매수
if MaxEntries == 1 Then
{
Buy("B2",OnClose,Def,4);
B2 = C;
BXcond2 = False;
#마지막 매수봉 저가
LastL = L;
}
#세번째 매수
if MaxEntries == 2 Then
{
Buy("B3",OnClose,Def,4);
B3 = C;
BXcond3 = False;
#마지막 매수봉 저가
LastL = L;
}
}
#첫매수 이후
if MaxEntries >= 1 Then
{
#첫매수가 +80틱 이상 발생하면 true
if H >= B1+PriceScale*80 Then
{
BXcond1 = true;
BX = true;
}
#False일때 첫매수가+80틱 발생하면 B1진입에서 2계약 청산
if BXcond1 == False Then
ExitLong("bx11",AtLimit,B1+PriceScale*80,"B1",2,1);
Else#이후 진입가 까지 하락하면 나머지 청산
ExitLong("bx12",AtStop,B1,"B1");
}
#두번째매수 이후
if MaxEntries >= 2 Then
{
#두번째 매수가+80틱 이상 발생하면 true
if H >= B2+PriceScale*80 Then
{
BXcond2 = true;
BX = true;
}
#False일때 두번째 매수가+80틱 발생하면 B2진입에서 2계약 청산
if BXcond2 == False Then
ExitLong("bx21",AtLimit,B2+PriceScale*80,"B2",2,1);
Else #이후 진입가 까지 하락하면 나머지 청산
ExitLong("bx22",AtStop,B2,"B2");
}
#첫매수봉저가 이탈시 모두 청산
ExitLong("bx",AtStop,L1);
#일부 익절이후 최근 매수봉 저가 이하가 발생하면 모두 청산
if BX == true Then
ExitLong("bx2",AtStop,LastL);
}
if C < O Then
{
N1 = C;
N2 = N1[1];
}
#첫매수
if MarketPosition == 0 and C < MA(C, 20) and C < O and C[1] > O[1] and C < C[1] Then
{
Sell("S1",OnClose,Def,4);
S1 = C;
SXcond1 = False;
#첫매도봉 고가
H1 = H;
#마지막 매도봉 고가
LastH = H;
}
if MarketPosition == -1 Then
{
#추가매도
if C > O and N1 < N2 Then
{
#두번째 매도
if MaxEntries == 1 Then
{
Sell("S2",OnClose,Def,4);
S2 = C;
SXcond2 = False;
#마지막 매도봉 저가
LastH = H;
}
#세번째 매도
if MaxEntries == 2 Then
{
Sell("S3",OnClose,Def,4);
S3 = C;
SXcond3 = False;
#마지막 매도봉 저가
LastH = H;
}
}
#첫매도 이후
if MaxEntries >= 1 Then
{
#첫매도가 -80틱 이상 발생하면 true
if L <= S1-PriceScale*80 Then
{
SXcond1 = true;
SX = true;
}
#False일때 첫매도가-80틱 발생하면 S1진입에서 2계약 청산
if BXcond1 == False Then
ExitShort("sx11",AtLimit,S1-PriceScale*80,"S1",2,1);
Else#이후 진입가 까지 상승하면 나머지 청산
ExitShort("sx12",AtStop,S1,"S1");
}
#두번째매도 이후
if MaxEntries >= 2 Then
{
#첫매도가 -80틱 이상 발생하면 true
if L <= S2-PriceScale*80 Then
{
SXcond2 = true;
SX = true;
}
#False일때 두번째매도가-80틱 발생하면 S2진입에서 2계약 청산
if BXcond2 == False Then
ExitShort("sx21",AtLimit,S2-PriceScale*80,"S2",2,1);
Else#이후 진입가 까지 상승하면 나머지 청산
ExitShort("sx22",AtStop,S2,"S1");
}
#첫매수봉저가 이탈시 모두 청산
ExitShort("sx",AtStop,H1);
#일부 익절이후 최근 매수봉 저가 이하가 발생하면 모두 청산
if BX == true Then
ExitShort("sx2",AtStop,LastH);
}
즐거운 하루되세요
> 종호 님이 쓴 글입니다.
> 제목 : 수식문의 드립니다,
> 제목 : 문의드립니다.
최초매수:
무포지션에서 C > MA(C, 20) and C > O and C[1] < O[1] and C > C[1] 이면
4계약 매수합니다.
이 때 최초 매수봉의 저가가 최초 손절가 F 라고 합니다.
최초 손절가 F = 최초 매수봉의 저가
추가매수:
매수가 된 매수포지션 상태에서 가장 최근의 이전 양봉 종가를 구해서
최근 양봉 종가 가격 G 라고 정의하고 현재봉 종가가 양봉으로 끝나고
C > 최근 양봉 종가 가격 G 를
만족하면 4계약을 추가로 피라미딩으로
매수합니다.
위 조건이 계속 만족하면 피라미딩 매수 후 10 단계까지 피라미딩 매수합니다.
손절청산:
매수 후 종가가 아닌 현재가가 최초 손절가 F를 하향하면 모든 계약을 전부 손절청산합니다.
이익청산후 본절가 , 청산가 보정 및 청산 :
모든 매수 단계에서 매수 후 종가가 아닌 현재가가 매수가 대비 80틱 이익이 나면 4계약 매수분의 절반인 2계약을 일부 매도하고
동시에 매수 단계별 본절가 H = 매수 단계별 매수가
가 되도록 하고
청산가 T = 가장 최근의 매수봉의 저가 로 바로 보정합니다.
이후에
언제든지 종가가 아닌 현재가가 매수 단계별 본절가 H 를 하향하면
잔여 2계약만 청산합니다.
그 후에 종가가 아닌 현재가가 더 하락하여 최초 손절가 F 를 하향 하거나
청산가 T 를 하향하면 즉시 모든 단계의 모든 잔여 매수 계약을 전부 일괄 청산합니다.
매도수식: 반대논리로 부탁드립니다.