예스스탁
예스스탁 답변
2024-02-23 17:34:03
안녕하세요
예스스탁입니다.
피라미딩을 하는데 각 진입별로 청산이 되게 해야 하는데
구분할 방법이 진입명이므로 각 진입별로 이름을 다르게 지정해 작성되었습니다.
input : P1(5),P2(40);
var : BA1(0),BB1(0),BI1(0),BV1(0);
var : BA2(0),BB2(0),BI2(0),BV2(0);
var : BA3(0),BB3(0),BI3(0),BV3(0);
var : SA1(0),SB1(0),SI1(0),SV1(0);
var : SA2(0),SB2(0),SI2(0),SV2(0);
var : SA3(0),SB3(0),SI3(0),SV3(0);
var1 = ma(C,P1);
Var2 = ma(c,P2);
if CrossUp(var1,Var2) Then
{
if MarketPosition == 0 Then
{
Buy("b1",OnClose,Def,4);
BA1 = L;
BB1 = C;
BI1 = Index;
BV1 = 4;
ExitLong("b1손절",AtStop,BA1,"b1");
}
if MarketPosition == 1 and MaxEntries == 1 Then
{
Buy("b2",OnClose,Def,4);
BA2 = L;
BB2 = C;
BI2 = Index;
ExitLong("b2손절",AtStop,BA2,"b2");
}
if MarketPosition == 1 and MaxEntries == 2 Then
{
Buy("b3",OnClose,Def,4);
BA3 = L;
BA3 = C;
BI3 = Index;
ExitLong("b3손절",AtStop,BA3,"b3");
}
}
if MarketPosition == 1 Then
{
if MaxEntries >= 1 then
{
ExitLong("b1손절.",AtStop,BA1,"b1");
if Index == BI1+1 Then
{
ExitLong("b1기본청산",OnClose,Def,"b1",2,1);
BV1 = 2;
}
if BV1 == 2 Then
{
ExitLong("b1본절",AtStop,BB1,"b1");
if L > BB1 Then
ExitLong("b1이익청산",AtStop,L,"b1");
}
}
if MaxEntries >= 2 then
{
ExitLong("b2손절.",AtStop,BA2,"b2");
if Index == BI2+1 Then
{
ExitLong("b2기본청산",OnClose,Def,"b2",2,1);
BV2 = 2;
}
if BV2 == 2 Then
{
ExitLong("b2본절",AtStop,BB2,"b2");
if L > BB2 Then
ExitLong("b2이익청산",AtStop,L,"b2");
}
}
if MaxEntries >= 3 then
{
ExitLong("b3손절.",AtStop,BA3,"b3");
if Index == BI3+1 Then
{
ExitLong("b3기본청산",OnClose,Def,"b3",2,1);
BV3 = 2;
}
if BV3 == 2 Then
{
ExitLong("b3본절",AtStop,BB3,"b3");
if L > BB3 Then
ExitLong("b3이익청산",AtStop,L,"b3");
}
}
}
if CrossDown(var1,Var2) Then
{
if MarketPosition == 0 Then
{
Sell("s1",OnClose,Def,4);
SA1 = H;
SB1 = C;
SI1 = Index;
SV1 = 4;
ExitShort("s1손절",AtStop,SA1,"s1");
}
if MarketPosition == -1 and MaxEntries == 1 Then
{
Sell("s2",OnClose,Def,4);
SA2 = H;
SB2 = C;
SI2 = Index;
ExitShort("s2손절",AtStop,SA2,"s2");
}
if MarketPosition == -1 and MaxEntries == 2 Then
{
Sell("s3",OnClose,Def,4);
SA3 = H;
SB3 = C;
SI3 = Index;
ExitShort("s3손절",AtStop,SA3,"s3");
}
}
if MarketPosition == -1 Then
{
if MaxEntries >= 1 then
{
ExitShort("s1손절.",AtStop,SA1,"s1");
if Index == SI1+1 Then
{
ExitShort("s1기본청산",OnClose,Def,"s1",2,1);
SV1 = 2;
}
if SV1 == 2 Then
{
ExitShort("s1본절",AtStop,SB1,"s1");
if H < SB1 Then
ExitShort("s1이익청산",AtStop,H,"s1");
}
}
if MaxEntries >= 2 then
{
ExitShort("s2손절.",AtStop,SA2,"s1");
if Index == SI2+1 Then
{
ExitShort("s2기본청산",OnClose,Def,"s2",2,1);
SV2 = 2;
}
if SV2 == 2 Then
{
ExitShort("s2본절",AtStop,SB2,"s2");
if H < SB2 Then
ExitShort("s2이익청산",AtStop,H,"s1");
}
}
if MaxEntries >= 2 then
{
ExitShort("s3손절.",AtStop,SA3,"s3");
if Index == SI3+1 Then
{
ExitShort("s3기본청산",OnClose,Def,"s3",2,1);
SV3 = 2;
}
if SV3 == 2 Then
{
ExitShort("s3본절",AtStop,SB3,"s3");
if H < SB3 Then
ExitShort("s3이익청산",AtStop,H,"s3");
}
}
}
즐거운 하루되세요
> 종호 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요.
매수수식: 피라미딩 매수로 3번째 까지만 각 단계별로 독립적으로 진행합니다.
무포지션 또는 매수 포지션에서 5평선이 40이평선을 돌파하면
4계약을 매수합니다.
이 때 매수봉의 저가를 손절가 A 하고 합니다.
손절가 A = 매수봉 저가
매수가 B = 매수가격
청산:
손절: 종가가 아닌 현재가가 위의 손절가 A를 하향하면
즉시 전량 손절합니다.
기본 청산 :매수하고 나서 메수봉 바로 다음봉 종가에 절반인
2계약만 청산합니다.
그 후에 본절가 C = 매수가 B 로 정의 합니다.
잔량 청산 :
본절 : 종가가 아닌 현재가가 본절가 C 를 하향하면 잔량 2계약을
청산합니다.
이익청산 : 이익이 나면 종가가 아닌 현재가가 바로 직전봉의 최저가를 하향하면
잔량 2계약을 청산합니다.
매도수식 : 반대논리로 수식을 부탁드립니다.