예스스탁
예스스탁 답변
2021-02-15 17:28:49
안녕하세요
예스스탁입니다.
input : EMAlength(55);
input : boxp(5);
input : 이격도기간(20);
var : src(0),haOpen(0),haC(0);
var : Ema1(0),Ema2(0),Ema3(0),TMA1(0);
var : Ema4(0),Ema5(0),Ema6(0),TMA2(0);
var : Ema7(0),Ema8(0),Ema9(0),TMA3(0);
var : Ema10(0),Ema11(0),Ema12(0),TMA4(0);
var : IPEK(0),IPEK1(0),YASIN(0),YASIN1(0);
var : mavi(0),kirmizi(0),longCond(False),ShortCond(False),trendState(0);
var : LL(0),k1(0),k2(0),k3(0),box1(False),TopBox(0),BottomBox(0),NH(0),idx(0);
var : v1(0),v2(0),dis(0);
src = (o+h+l+c)/4;
if index == 0 then
{
haOpen = src;
haC = src;
}
else
{
haOpen = (haOpen[1]+ src)/2 ;
haC=(src+haOpen+max(high,haOpen)+min(low,haOpen))/4;
}
EMA1=ema(haC,EMAlength);
EMA2=ema(EMA1,EMAlength);
EMA3=ema(EMA2,EMAlength);
TMA1=3*EMA1-3*EMA2+EMA3;
EMA4=ema(TMA1,EMAlength);
EMA5=ema(EMA4,EMAlength);
EMA6=ema(EMA5,EMAlength);
TMA2=3*EMA4-3*EMA5+EMA6;
IPEK=TMA1-TMA2;
YASIN=TMA1+IPEK;
EMA7=ema((h+l+c)/3,EMAlength);
EMA8=ema(EMA7,EMAlength);
EMA9=ema(EMA8,EMAlength);
TMA3=3*EMA7-3*EMA8+EMA9;
EMA10=ema(TMA3,EMAlength);
EMA11=ema(EMA10,EMAlength);
EMA12=ema(EMA11,EMAlength);
TMA4=3*EMA10-3*EMA11+EMA12;
IPEK1=TMA3-TMA4;
YASIN1=TMA3+IPEK1;
mavi=YASIN1;
kirmizi=YASIN;
longCond=mavi>kirmizi and mavi[1]<=kirmizi[1];
shortCond=mavi<kirmizi and mavi[1]>=kirmizi[1];
trendState = iff(kirmizi < mavi , true ,IFf(kirmizi > mavi , false , trendState[1]));
LL = lowest(low, boxp);
k1 = highest(high, boxp);
k2 = highest(high, boxp - 1);
k3 = highest(high, boxp - 2);
box1 = k3 < k2;
if high > K1[1] Then
{
NH = high;
idx = 0;
}
Else
{
if NH > 0 Then
{
idx = idx+1;
if idx == boxp-2 and box1 == true Then
{
TopBox = NH;
BottomBox = LL;
}
}
}
dis = Disparity(이격도기간);
if LongCond == true Then
Buy("b");
if MarketPosition == 1 Then
{
#진입수량의 70%
v1 = Floor(MaxContracts*0.7);
#진입수량의 30%
v2 = MaxContracts-V1;
if CrossDown(dis,110) Then
ExitLong("bx1",OnClose,DEf,"",v1,1);
if CrossDown(c,BottomBox) Then
ExitLong("bx2",OnClose,DEf,"",v2,1);
}
즐거운 하루되세요
> 도여니 님이 쓴 글입니다.
> 제목 : 시스템 부탁드립니다. 감사합니다.
> 외국 사이트에 있는 Heikin Ashi 수식과 다비스 박스입니다.
매수는 Heikin Ashi 수식에서 buy신호만을 이용하고 싶고
청산은 설정한 이격도에서 70프로를 청산하고 나머지 30프로는 다비스 박스 bottom box 보다 종가가 아래 있으면 나머지 30프로를 청산하는 시스템을 만들고 싶습니다.
복잡한걸 의뢰해드려 죄송합니다. 천천히 해주셔도 됩니다. 감사합니다.
1. Heikin Ashi
study("Heikin Ashi Smoothed Buy Sell ", overlay=true)
EMAlength=input(55,"EMA LENGTH?")
src=ohlc4
haOpen=0.0
haOpen := (src + nz(haOpen[1]))/2
haC=(ohlc4+nz(haOpen)+max(high,nz(haOpen))+min(low,nz(haOpen)))/4
EMA1=ema(haC,EMAlength)
EMA2=ema(EMA1,EMAlength)
EMA3=ema(EMA2,EMAlength)
TMA1=3*EMA1-3*EMA2+EMA3
EMA4=ema(TMA1,EMAlength)
EMA5=ema(EMA4,EMAlength)
EMA6=ema(EMA5,EMAlength)
TMA2=3*EMA4-3*EMA5+EMA6
IPEK=TMA1-TMA2
YASIN=TMA1+IPEK
EMA7=ema(hlc3,EMAlength)
EMA8=ema(EMA7,EMAlength)
EMA9=ema(EMA8,EMAlength)
TMA3=3*EMA7-3*EMA8+EMA9
EMA10=ema(TMA3,EMAlength)
EMA11=ema(EMA10,EMAlength)
EMA12=ema(EMA11,EMAlength)
TMA4=3*EMA10-3*EMA11+EMA12
IPEK1=TMA3-TMA4
YASIN1=TMA3+IPEK1
mavi=YASIN1
kirmizi=YASIN
longCond=mavi>kirmizi and mavi[1]<=kirmizi[1]
shortCond=mavi<kirmizi and mavi[1]>=kirmizi[1]
trendState = kirmizi < mavi ? true : kirmizi > mavi ? false : trendState[1]
closePlot = plot(kirmizi, title = "Close Line", color = #009900, linewidth = 10, style = line, transp = 90)
openPlot = plot(mavi, title = "Open Line", color = #CC0000, linewidth = 10, style = line, transp = 90)
closePlotU = plot(trendState ? kirmizi : na, transp = 100, editable = false)
openPlotU = plot(trendState ? mavi : na, transp = 100, editable = false)
closePlotD = plot(trendState ? na : kirmizi, transp = 100, editable = false)
openPlotD = plot(trendState ? na : mavi, transp = 100, editable = false)
fill(openPlotU, closePlotU, title = "Up Trend Fill", color = #009900, transp = 1)
fill(openPlotD, closePlotD, title = "Down Trend Fill", color = #CC0000, transp = 1)
last_signal = 0
long_final = longCond and (nz(last_signal[1]) == 0 or nz(last_signal[1]) == -1)
short_final = shortCond and (nz(last_signal[1]) == 0 or nz(last_signal[1]) == 1)
alertcondition(long_final, title="buy alarm", message="buy signal!!!")
alertcondition(short_final, title="sell alarm", message="sell signal!!!")
last_signal := long_final ? 1 : short_final ? -1 : last_signal[1]
plotshape(long_final, style=shape.labelup,
location=location.belowbar, color=green,size=size.tiny,title="buy label",text="BUY",textcolor=white)
plotshape(short_final, style=shape.labeldown,
location=location.abovebar, color=red,size=size.tiny,title="sell label",text="SELL",textcolor=white)
2. Darbis box
//@version=4
study("Darvas Box Buy Sell", overlay=true)
boxp = input(defval=5, title="Length", minval=1, maxval=500)
LL = lowest(low, boxp)
k1 = highest(high, boxp)
k2 = highest(high, boxp - 1)
k3 = highest(high, boxp - 2)
NH = valuewhen(high > k1[1], high, 0)
box1 = k3 < k2
TopBox = valuewhen(barssince(high > k1[1]) == boxp - 2 and box1, NH, 0)
BottomBox = valuewhen(barssince(high > k1[1]) == boxp - 2 and box1, LL, 0)
plot(TopBox, linewidth=3, color=#00FF00, title="TBbox")
plot(BottomBox, linewidth=3, color=#FF0000, title="BBbox")
Buy = crossover(close, TopBox)
Sell = crossunder(close, BottomBox)
alertcondition(Buy, title="Buy Signal", message="Buy")
alertcondition(Sell, title="Sell Signal", message="Sell")
plotshape(Buy, style=shape.labelup, location=location.belowbar, transp=0, color=#00FF00, size=size.tiny, title="Buy Signal", text="Buy", textcolor=color.black)
plotshape(Sell, style=shape.labeldown, location=location.abovebar, transp=0, color=#FF0000, size=size.tiny, title="Sell Signal", text="Sell", textcolor=color.white)