예스스탁
예스스탁 답변
2023-03-30 18:11:13
안녕하세요
예스스탁입니다.
1
input : length(10),smooth(3),mult(0.3),sd_len(5);
input : ma1_type(0);#0단순, 1:지수, 2: 가중
input : ma2_type(0);#0단순, 1:지수, 2: 가중
input : ma1_length(50),ma2_length(100);
var : price(0);
var : baseline(0),dev(0),upper(0),lower(0),cPrice(0),REMA(0);
var : c_up(0),c_dn(0),REMA_up(False);
var : ma1_source(0),ma1_color(0),ma1(0);
var : ma2_source(0),ma2_color(0),ma2(0);
price = close;
baseline = wma(price, sd_len);
dev = mult * std(price, sd_len);
upper = baseline + dev;
lower = baseline - dev;
cprice = iff(price > upper , upper , IFf(price < lower , lower , price));
REMA = wma(wma(cprice, length), smooth);
c_up = Green;
c_dn = Red;
REMA_up = REMA > REMA[1];
ma1_source = close;
ma2_source = close;
ma1_color = Purple;
ma2_color = Blue;
if ma1_type == 0 Then
ma1 = ma(ma1_source, ma1_length);
Else if ma1_type == 1 Then
ma1 = ema(ma1_source, ma1_length);
Else
ma1 = wma(ma1_source, ma1_length);
if ma2_type == 0 Then
ma2 = ma(ma2_source, ma2_length);
Else if ma1_type == 1 Then
ma2 = ema(ma2_source, ma2_length);
Else
ma2 = wma(ma2_source, ma2_length);
plot1(REMA,"SALMA", iff(REMA_up , c_up , c_dn));
plot2(ma1,"ma1",ma1_color);
plot3(ma2,"ma2",ma2_color);
2
input : length(20);
input : typeMA(0);#0:sma, 1: ema, 2:rma, 3:WMa, 4: vwma
input : smoothingLength(5);
var : src(0),mav(0),cnt(0),cciv(0),smoothingLine(0);
var : alpha(0);
src = (h+l+c)/3;
mav = ma(src, length);
cciv = (src - mav) / (0.015 *AvgDeviation(src,length));
if typeMA == 0 Then
smoothingLine = ma(cciv, smoothingLength);
else if typeMA == 1 Then
smoothingLine = ema(cciv, smoothingLength);
else if typeMA == 2 Then
{
alpha = 1/length;
smoothingLine = 0.0;
smoothingLine = iff(isnan(smoothingLine[1]) == true,ma(cciv, length), alpha * cciv + (1 - alpha) * smoothingLine[1]);
}
else if typeMA == 3 Then
smoothingLine = wma(cciv, smoothingLength);
Else
smoothingLine = ma(cciv * volume, smoothingLength) / ma(volume, smoothingLength);
plot1(cciv, "CCI",Blue);
plot2(smoothingLine, "Smoothing Line", Orange);
PlotBaseLine1(100, "Upper Band",Gray);
PlotBaseLine2(0, "Middle Band",Gray);
PlotBaseLine3(-100, "Lower Band",Gray);
즐거운 하루되세요
> seayun1 님이 쓴 글입니다.
> 제목 : 지표 수식변환부탁드립니다
> 2개수식입니다. 예스드레이더 수식으로 전환부탁드립니다
정말 감사드립니다
indicator('RedK SmoothAndLazyMA', shorttitle='SALMA v2.0', overlay=true, timeframe='', timeframe_gaps=false)
// Corrects price points within specific StdDev band before calculting a smoothed WMA
price = input(close, 'Source')
length = input.int(10, 'Length', minval=1)
smooth = input.int(3, 'Extra Smooth [1 = None]', minval=1)
mult = input.float(0.3, minval=0.05, maxval=3, step=0.05, title='Width', inline = 'SD Channel', group='Volatility Filter (SD Channel)')
sd_len = input.int(5, minval=1, title='Length', inline = 'SD Channel', group='Volatility Filter (SD Channel)')
baseline = ta.wma(price, sd_len)
dev = mult * ta.stdev(price, sd_len)
upper = baseline + dev
lower = baseline - dev
cprice = price > upper ? upper : price < lower ? lower : price
// Uncomment these code lines to expose the base StdDev channel used as volatility filter
//plot (baseline, "Base MA")
//plot(upper, "Upper Band", color=color.green)
//plot(lower, "Lower Band", color=color.red)
REMA = ta.wma(ta.wma(cprice, length), smooth)
c_up = color.new(#33ff00, 0)
c_dn = color.new(#ff1111, 0)
REMA_up = REMA > REMA[1]
plot(REMA, title='SALMA', color=REMA_up ? c_up : c_dn, linewidth=3)
// ======================================================================================================
// add optional MA's - to enable us to track what many other traders are working with
// These MA's will be hidden by default until user exposes them as needed in the Settings
// the below code is based on the built-in MA Ribbon in the TV library - with some modifications
// ======================================================================
f_ma(source, length, type) =>
type == 'SMA' ? ta.sma(source, length) :
type == 'EMA' ? ta.ema(source, length) :
ta.wma(source, length)
// ======================================================================
gr_ma = 'Optional MA₩'s'
t_ma1 = 'MA #1'
t_ma2 = 'MA #2'
show_ma1 = input.bool(false, t_ma1, inline=t_ma1, group=gr_ma)
ma1_type = input.string('SMA', '', options=['SMA', 'EMA', 'WMA'], inline=t_ma1, group=gr_ma)
ma1_source = input.source(close, '', inline=t_ma1, group=gr_ma)
ma1_length = input.int(50, '', minval=1, inline=t_ma1, group=gr_ma)
ma1_color = #9c27b0
ma1 = f_ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color=color.new(ma1_color, 0), title=t_ma1, linewidth=1)
show_ma2 = input.bool(false, t_ma2, inline=t_ma2, group=gr_ma)
ma2_type = input.string('SMA', '', options=['SMA', 'EMA', 'WMA'], inline=t_ma2, group=gr_ma)
ma2_source = input.source(close, '', inline=t_ma2, group=gr_ma)
ma2_length = input.int(100, '', minval=1, inline=t_ma2, group=gr_ma)
ma2_color = #1163f6
ma2 = f_ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color=color.new(ma2_color, 0), title=t_ma2, linewidth=1)
두번쨰 수식입니다
indicator(title="Commodity Channel Index", shorttitle="CCI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
length = input.int(20, minval=1)
src = input(hlc3, title="Source")
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
plot(cci, "CCI", color=#2962FF)
band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(0, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")
smoothingLine = ma(cci, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)