답변완료
수식 문의
아래 두 수식은 강조식입니다.
수식 1 : 은 Upvol-DownVol + data2의 양수/음수값을 양봉,음봉으로
수식 2 : 는 하캔아쉬 지표 입니다.
분봉에서 적용시, 직전봉과 비교하되
시초가 첫봉만큼은 전일 마지막봉과 비교되는 오류를 피하기 위해
알맞게 수정되어 있습니다.
수식 문의 1 ::
이 두개의 수식을 섞고 싶은데요,
수식1이 양봉이면서 수식2가 양봉이면 = 양봉
수식1이 음봉이면서 수식2가 음봉이면 = 음봉
위 두 조건이 아니면
직전봉의 색깔을 그대로 이어받아서 칠해줍니다.
수식 문의 2 ::
위의 섞은 강조식을 시스템 식으로 구하고 싶습니다.
plot은 여러개 조건을 여러개의 plot으로 뿌리면 되는데
강조식은 짜려니 멘붕 오네요.
부탁 좀 드리겠습니다.
감사합니다.
######### 수식 1 ##########
input : starttime(090000),endtime(154500),X(1);
var : Tcond(false,data2),idx(0,data2),VV(0,data2);
var : diff(0),value(0),color(0);
diff = Upvol-DownVol;
if data2((sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime)) then
{
Tcond = true;
idx = 0;
}
if data2((sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime)) then
{
Tcond = false;
VV = 0;
}
if Tcond == true then
{
idx = idx+1;
if idx == 1 Then
vv = data2(DayOpen);
Else
vv = data2(C-C[1]);
if idx == 1 Then
{
if VV > 0 and diff > 0 Then
value = VV+diff;
if VV > 0 and diff < 0 and (vv - abs(diff)) > 0 Then
value = VV-abs(diff);
if VV <= 0 and diff > 0 and (diff - abs(vv)) > 0 Then
value = diff-abs(VV);
if VV <= 0 and diff < 0 Then
value = VV+diff;
if VV <= 0 and diff > 0 and (vv + diff) <= 0 Then
value = VV+diff;
if VV > 0 and diff < 0 and (diff + vv) <= 0 Then
value = diff+VV;
if value > 0 Then
color = RGB(242,150,97);
Else
color = RGB(103,153,255);
}
Else
{
if VV > 0 and diff > 0 Then
value = VV+diff;
if VV > 0 and diff < 0 and (vv - abs(diff)) > 0 Then
value = VV-abs(diff);
if VV < 0 and diff > 0 and (diff - abs(vv)) > 0 Then
value = diff-abs(VV);
if VV < 0 and diff < 0 Then
value = VV+diff;
if VV < 0 and diff > 0 and (vv + diff) < 0 Then
value = VV+diff;
if VV > 0 and diff < 0 and (diff + vv) < 0 Then
value = diff+VV;
if abs(value) > abs(value[1])*x Then
{
if value > 0 Then
color = RGB(242,150,97);
Else
color = RGB(103,153,255);
}
}
PlotPaintBar(H,L,"강조",color);
}
############ 수식 2 #############
var : Xclose(0),xOpen(0),Xhigh(0),Xlow(0);
xClose = (Open+High+Low+Close)/4;
xOpen = (Open[1] + Close[1])/2 ;
xHigh = Max(High, xOpen, xClose);
xLow = Min(Low, xOpen, xClose) ;
if Bdate != Bdate[1] Then
{
if Xclose > (Open[0] + Close[0])/2 Then
PlotPaintBar(H,L,"강조",RGB(255,130,36));
Else
PlotPaintBar(H,L,"강조",RGB(126,210,255));
}
Else
{
if Xclose > Xopen Then
PlotPaintBar(H,L,"강조",RGB(255,130,36));
Else
PlotPaintBar(H,L,"강조",RGB(126,210,255));
}
2022-02-17
806
글번호 156414
강조
답변완료
75984 추가문의드립니다
안녕하세요~
답변주신 내용으로 다시 살펴봤습니다
----------------------------------
해당 부분은 테스트해본 결과 진입의 수량을 지정하는 unitP값 때문인것 같습니다.
해당변수가 MDD값에 따라 0이 리턴되는데 수량에 1미만의 값이 지정되면 신호가 발생할수 없습니다.
해당계산식을 살펴보셔야 할것 같습니다.
input : MDD(200000) ;
var : N(0), unitP(0);
N = Highest(ATr(14), 100);
unitP = floor(MDD/(N*5*4*600));
Plot1(unitP);
-----------------------------------
이 내용에 대해 살펴보았는데
MDD = 200000, 120틱봉에서 계속 고정해 테스트했고
MDD = 200000에서 unitP = 0이되려면 ATR(14) = 17이 되어야하는데
나스닥 120틱봉에서 ATR은 정말 커져야 10~11정도이지 17까지 가지 않습니다
첨부한 사진에서도 보시면 매도 s1 진입이후 2, 3이 생략되고 s4가 진입되었는데
매매내역을 보시면 3계약씩 진입해 있습니다
N을 최근 100봉 ATR의 최대치로 사용하기 때문에 s2, s3이 들어갈 타이밍에 unitP가 0이 되었다 다시 3이될 가능성은 없을 것 같습니다
첫번째 진입은 항상 정상적으로 발생하고
2~4번째 피라미딩에서 반복적으로 이런 문제가 발생하는것도 unitP의 문제는 아닐것 같습니다
이에 해당하는 케이스는 marketposition이 0이 아닌 상황에서 진입조건 뿐인데
혹시 marketposition이 0이 아닐때 진입하는 아래 수식에서
봉완성 등의 이유로 진입이 안될 수 있는 케이스가 있을까요??
또한 문의드리려 캡쳐해둔 사진을 모아보다보니
진입 이후 첫봉(marketposition = 1이 되는 봉)에서 진입이 안되고 있는것 같다는 생각이 듭니다
첨부한 세번째 사진처럼, 이런 경우가 발생하는 케이스가 진입한 다음봉이 2, 3번째 피라미딩 가격을 터치할때 진입이 안되고
첫 진입 다음봉이 피라미딩 가격에 도달하지 못했을 때는 이후에 진입하는것 같습니다
(첫번째 사진의 b2까지 정상진입한 케이스)
확인해봐도 진입 이후 첫봉에서 진입 안할 이유는 없어보이는데...
혹시 이런 부분이 있는지 확인 부탁드리겠습니다
감사합니다
-----------------------------------
input : TT(22900), TD(20220218), MDD(200000) ;
var : HB(14354), LB(14313), Hx(20000), Lx(1);
var : e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), Hstate(true), Lstate(true), N(0), unitP(0), exitC(0), rHB(0), rLB(0);
N = Highest(ATr(14), 100);
unitP = floor(MDD/(N*5*4*600));
exitC = (2-(MaxEntries-1)/2)*N;
e60 = Ema(C,60);
if Condition1 == False and sDate >= TD and sTime >= TT Then
{
Condition1 = true;
Hcount = 0;
Lcount = 0;
T1 = TotalTrades;
}
if Condition1 == true Then
{
B = 0;
S = 0;
if TotalTrades-T1 > 0 Then
{
For cnt = 1 to TotalTrades-T1
{
if MarketPosition(cnt) == 1 Then B = B+1;
if MarketPosition(cnt) == -1 Then S = S+1;
}
}
Hcount = B + IFf(MarketPosition == 1,1,0);
Lcount = S + IFf(MarketPosition == -1,1,0);
if B>0 && B == Hcount then HB = rHB;
if S>0 && S == Lcount then LB = rLB;
if MarketPosition <= 0 and Hstate == true then
{
Buy("b1",AtStop,HB,unitP);
Buy("b2",AtStop,HB+0.5*N,unitP);
Buy("b3",AtStop,HB+N,unitP);
Buy("b4",AtStop,HB+1.5*N,unitP);
}
if MarketPosition >= 0 and Lstate == true then
{
Sell("s1",AtStop,LB,unitP);
Sell("s2",AtStop,LB-0.5*N,unitP);
Sell("s3",AtStop,LB-N,unitP);
Sell("s4",AtStop,LB-1.5*N,unitP);
}
if marketposition ==1 Then
{
rHB = Highest(H, BarsSinceEntry) ;
if rHB < HB+0.5*N Then
Buy("b2.",AtStop,HB+0.5*N,unitP);
if rHB < HB+N Then
Buy("b3.",AtStop,HB+N,unitP);
if rHB < HB+1.5*N Then
Buy("b4.",AtStop,HB+1.5*N,unitP);
if e60 < HB+2*N Then
Exitlong("exitB1", atstop, HB-exitC);
if e60 >= HB+2*N and CrossDown(close, e60) Then
{
ExitLong("exitB2") ;
Hstate = false ;
}
Exitlong("exitB3", AtLimit, Hx);
}
if marketposition == -1 Then
{
rLB = Lowest(L, BarsSinceEntry);
if rLB > LB-0.5*N Then
Sell("s2.",AtStop,LB-0.5*N,unitP);
if rLB > LB-N Then
Sell("s3.",AtStop,LB-N,unitP);
if rLB > LB-1.5*N Then
Sell("s4.",AtStop,LB-1.5*N,unitP);
if e60 > LB-2*N Then
ExitShort("exitS1", atstop, LB+exitC);
if e60 <= LB-2*N and CrossUp(close, e60) Then
{
ExitShort("exitS2");
Lstate = false ;
}
exitshort("exitS3", AtLimit, Lx);
}
if Hcount >= 3 Then Hstate = False;
if Lcount >= 3 Then Lstate = False;
if H >= Hx then Hstate = false;
if L <= Lx then Lstate = false;
}
2022-02-18
841
글번호 156411
시스템
답변완료
다박스 상승 돌파 좀목검색
Input : 기간(5);
var: NHH(0), No(0), LL(0), NH(0), NL(0);
if L==lowest(L,5) Then LL=L ;
Else if L(1) = lowest(L,5) Then LL=L[1];
Else if L(2) = lowest(L,5) Then LL=L[2];
Else if L(3) = lowest(L,5) Then LL=L[3];
Else if L(4) = lowest(L,5) Then LL=L[4];
Else if LL=0;
if h>Highest(H[1],기간) then
{ NHH=H;
No=Index;
}
if Index-No==3 && Highest(H,3)<Highest(H,4) Then
{ NH=NHH;
NL=LL;
}
if CrossUp(c, nh) Then Find(1);
이렇게 했는데 뭐가 잘못 되었는지 안됩니다.
수식이 재 검토 부탁 드립니다.
감사합니다.
2022-02-17
899
글번호 156407
종목검색