예스스탁
예스스탁 답변
2020-04-23 10:38:32
안녕하세요
예스스탁입니다.
input : inpFastPeriod(12),inpSlowPeriod(26),inpMacdSignal(9),inpSmoothPeriod(5),inpNormPeriod(20);
var : alphaf(0),alphas(0),alphasig(0),alphasm(0);
var : price(0),emaf(0),emas(0),val(0),nval(0),sig(0),imacd(0),mmax(0),mmin(0);
price = close;
if index > inpSlowPeriod then
{
alphaf = 2.0/(1.0+max(inpFastPeriod,1));
alphas = 2.0/(1.0+max(inpSlowPeriod,1));
alphasig = 2.0/(1.0+max(inpMacdSignal,1));
alphasm = 2.0/(1.0+max(inpSmoothPeriod,1));
emaf = emaf[1]+alphaf*(price-emaf[1]);
emas = emas[1]+alphas*(price-emas[1]);
imacd= emaf-emas;
mmax = highest(imacd,inpNormPeriod);
mmin = lowest(imacd,inpNormPeriod);
if mmin != mmax then
nval = 2.0*(imacd-mmin)/(mmax-mmin)-1.0;
else
nval = 0;
val = val[1] + alphasm*(nval-val[1]);
sig = sig[1] + alphasig*(val-sig[1]);
}
plot1(val,"Reg smooth MACD",iff(val>val[1],green,red));
plot2(sig,"Signal line",black);
plot3(0, "0",gray);
즐거운 하루되세요
> as8282 님이 쓴 글입니다.
> 제목 : 부탁합니다
> 하기 수식을 지표식만 예스로 부탁드립니다.
study(title="Normalized smoothed MACD", shorttitle = "NSM", overlay=false)
//
inpFastPeriod = input(defval=12, title="MACD fast period", minval=1, type=input.integer)
inpSlowPeriod = input(defval=26, title="MACD slow period", minval=1, type=input.integer)
inpMacdSignal = input(defval=9, title="Signal period", minval=1, type=input.integer)
inpSmoothPeriod = input(defval=5, title="Smoothing period", minval=1, type=input.integer)
inpNormPeriod = input(defval=20, title="Normalization period", minval=1, type=input.integer)
price = input(close, title="Price Source",type=input.source)
//
emaf = 0.0
emas = 0.0
val = 0.0
nval = 0.0
sig = 0.0
//
red =color.new(#FF0000, 0)
green=color.new(#32CD32, 0)
black=color.new(#000000, 0)
if bar_index > inpSlowPeriod
alphaf = 2.0/(1.0+max(inpFastPeriod,1))
alphas = 2.0/(1.0+max(inpSlowPeriod,1))
alphasig = 2.0/(1.0+max(inpMacdSignal,1))
alphasm = 2.0/(1.0+max(inpSmoothPeriod,1))
emaf := emaf[1]+alphaf*(price-emaf[1])
emas := emas[1]+alphas*(price-emas[1])
imacd = emaf-emas
mmax = highest(imacd,inpNormPeriod)
mmin = lowest(imacd,inpNormPeriod)
if mmin != mmax
nval := 2.0*(imacd-mmin)/(mmax-mmin)-1.0
else
nval := 0
val := val[1] + alphasm*(nval-val[1])
sig := sig[1] + alphasig*(val-sig[1])
//
plot(val, color=val>val[1]?green:red, style=plot.style_line, linewidth=2, title="Reg smooth MACD")
plot(sig, color=black, style=plot.style_cross, linewidth=1, title="Signal line")
hline(0, title='0', color=color.gray, linestyle=hline.style_dotted, linewidth=1)
//
alertcondition(crossunder(val,sig),title="Sell",message="Sell")
alertcondition(crossover(val,sig),title="Buy",message="Buy")
alertcondition(crossunder(val,sig) or crossover(val,sig) ,title="Sell/Buy",message="Sell/Buy")