답변완료
수식문의드립니다
안녕하세요
오늘도 몇 가지 질문이 있어 문의드립니다!
1. 주문시 가격을 틱 단위로 맞춰야 하는지
ATR을 기준으로 손절가를 정해 청산하려 하고 아래와 같이 작성했습니다
input : HB(14735), LB(14725);
var : e60(0), N(0);
e60 = Ema(C,60);
N = Highest(ATr(14), 100);
Buy("H",AtStop,HB,2) ;
Sell("L",AtStop,LB,2) ;
if marketposition > 0 Then ExitLong("exitH1",AtStop,HB-N);
if marketposition < 0 Then ExitShort("exitL1",AtStop,LB+N);
ATR이 0.25단위가 아니다보니
여기서 손절가인 HB-N, LB+N의 값은 틱 단위인 0.25로 떨어지지 않게 되는데
그냥 이렇게 사용해도 알아서 계산되 작동되는지
ex) 14000.35로 매수주문 들어가면 14000.50으로 계산
ex) 14000.35로 매도주문 들어가면 14000.25으로 계산
아니면 단위를 맞추기 위해 위의 'N'을 반올림하거나 해서
소수점이 틱 단위로 되도록 맞춰야 하는지 확인 부탁드립니다
2. 피라미딩에서 매수가 많이되는 문제
HB(LB) 돌파진입 이후 첫 포지션의 손절선은 돌파선 -5
추가 진입마다 손절선을 +2씩 상향시키도록 아래와 같이 만들었습니다
input : HB(14750), LB(14720), N(2);
var : Hx(0), Lx(0);
Buy("b1",AtStop,HB,2);
Buy("b2",AtStop,HB+N,2);
Buy("b3",AtStop,HB+2*N,2);
Buy("b4",AtStop,HB+3*N,2);
Sell("s1",AtStop,LB,2);
Sell("s2",AtStop,LB-N,2);
Sell("s3",AtStop,LB-2*N,2);
Sell("s4",AtStop,LB-3*N,2);
if marketposition == 1 then
{
Hx = highest(H,barsinceentry);
if HB <= Hx && Hx < HB +N then exitlong("exitB", atstop, HB-5);
if HB +N <= Hx && Hx < HB +2*N then exitlong("exitB", atstop, HB-3);
if HB+2*N <= Hx && Hx < HB +3*N then exitlong("exitB", atstop, HB-1);
if HB +3*N <= Hx then exitlong("exitB", atstop, HB+1);
}
if marketposition == -1 then
{
Lx = lowest(L,barsinceentry);
if LB >= Lx && Lx > LB-N then exitlong("exitB", atstop, LB+5);
if LB-N >= Lx && Lx > LB-2*N then exitlong("exitB", atstop, LB+3);
if LB-2*N >= Lx && Lx > LB-3*N then exitlong("exitB", atstop, LB+1);
if LB-3*N >= Lx then exitlong("exitB", atstop, LB-1);
}
위와같이 만들어 시스템매매설정의 피라미딩 탭에서 '다른진입신호만 허용'을 선택했습니다
매수(매도) 한 방향으로 최대 4번까지만 진입해 피라미딩 되어야하는데
4번 이상 진입하는 경우가 종종 생기고
그렇게 됐을땐 청산조건에 걸려도 전부 청산되지가 않습니다
ex) 매수 6번 진입해 12계약이 있다면, 청산조건이 되도 8계약만 청산되고 4계약이 남음
어떤 부분에 문제가 있어 이런 일이 생기는 것인지 확인 부탁드립니다
감사합니다
2022-02-08
1194
글번호 156086
시스템
답변완료
문의드립니다
input : per1(23.6),per2(50.0),per3(76.4);
var : hh(0),ll(0),dd(0),tt(0);
var : tl1(0),tl2(0),tl3(0),v1(0),v2(0),v3(0);
if bdate > bdate[1] then
{
hh = h;
ll = l;
dd = sdate[1];
tt = stime[1];
TL_Delete(tl1);
TL_Delete(tl2);
TL_Delete(tl3);
tl1 = TL_New(dd,tt,hh-(hh-ll)*(per1/100),sdate,stime,hh-(hh-ll)*(per1/100));
tl2 = TL_New(dd,tt,hh-(hh-ll)*(per2/100),sdate,stime,hh-(hh-ll)*(per2/100));
tl3 = TL_New(dd,tt,hh-(hh-ll)*(per3/100),sdate,stime,hh-(hh-ll)*(per3/100));
}
if h > hh and hh > 0 Then
{
hh = h;
TL_Delete(tl1);
TL_Delete(tl2);
TL_Delete(tl3);
tl1 = TL_New(dd,tt,hh-(hh-ll)*(per1/100),sdate,stime,hh-(hh-ll)*(per1/100));
tl2 = TL_New(dd,tt,hh-(hh-ll)*(per2/100),sdate,stime,hh-(hh-ll)*(per2/100));
tl3 = TL_New(dd,tt,hh-(hh-ll)*(per3/100),sdate,stime,hh-(hh-ll)*(per3/100));
}
if l < ll and ll > 0 Then
{
ll = l;
TL_Delete(tl1);
TL_Delete(tl2);
TL_Delete(tl3);
tl1 = TL_New(dd,tt,hh-(hh-ll)*(per1/100),sdate,stime,hh-(hh-ll)*(per1/100));
tl2 = TL_New(dd,tt,hh-(hh-ll)*(per2/100),sdate,stime,hh-(hh-ll)*(per2/100));
tl3 = TL_New(dd,tt,hh-(hh-ll)*(per3/100),sdate,stime,hh-(hh-ll)*(per3/100));
}
TL_SetColor(TL1,GRAY);
TL_SetSize(TL1,0);
TL_SetExtRight(TL1,true);
TL_SetColor(TL2,GRAY);
TL_SetSize(TL2,0);
TL_SetExtRight(TL2,true);
TL_SetColor(TL3,GRAY);
TL_SetSize(TL3,0);
TL_SetExtRight(TL3,true);
v1 = hh-(hh-ll)*(per1/100);
v2 = hh-(hh-ll)*(per2/100);
v3 = hh-(hh-ll)*(per3/100);
INPUTS: LENGTH1(5);
INPUTS: 색1(YELLOW),색2(RED), 굵기(1);
VARS : DEMA1(0),TL(0);
var1= EMA(C,LENGTH1);
value1= EMA(EMa(C,LENGTH1),LENGTH1);
DEMA1 = var1 * 2 - value1;
if C >DEMA1 Then
PLOT1(DEMA1, "DEMA1",GRAY);
Else
PLOT1(DEMA1, "DEMA1",GRAY);
if CrossUp(DEMA1,v1) or CrossUp(DEMA1,v2) or CrossUp(DEMA1,v3) Then
{
TL_Delete(tl);
tl = TL_New(sDate,sTime,DEMA1,NextBarSdate,NextBarStime,DEMA1);
TL_SetColor(tl,MAGENTA);
TL_SetSize(tl,3);
TL_SetExtRight(TL,true);
}
if CrossDown(DEMA1,v1) or CrossDown(DEMA1,v2) or CrossDown(DEMA1,v3) Then
{
TL_Delete(tl);
tl = TL_New(sDate,sTime,DEMA1,NextBarSdate,NextBarStime,DEMA1);
TL_SetColor(tl,lGREEn);
TL_SetSize(tl,3);
TL_SetExtRight(TL,true);
}
위수식에서 수평선을 +15틱위로 나오게 부탁드립니다~~미리감사드립니다
2022-02-08
891
글번호 156082
지표