예스스탁
예스스탁 답변
2023-12-01 16:30:11
안녕하세요
예스스탁입니다.
input : rsiLengthInput(14);
input : rsiSourceInput(close);
input : maTypeInput("SMA");#["SMA", "Bollinger Bands", "EMA", "RMA", "WMA", "VWMA"]
input : maLengthInput(14);
var : alpha(0),src1(0),src2(0),up(0),down(0),RSIv(0),rsiMA(0),a(0);
alpha = 1/rsiLengthInput;
src1 = max(rsiSourceInput-rsiSourceInput[1], 0);
src2 = -min(rsiSourceInput-rsiSourceInput[1], 0);
up = iff(IsNaN(up[1]) == true, ma(src1, rsiLengthInput) , alpha * src1 + (1 - alpha) * IFf(IsNan(up[1])==true,0,up[1]));
down = iff(IsNaN(down[1]) == true, ma(src2, rsiLengthInput) , alpha * src2 + (1 - alpha) * IFf(IsNan(down[1])==true,0,down[1]));
rsiv = iff(down == 0 , 100 , iff(up == 0 , 0 , 100 - (100 / (1 + up / down))));
if maTypeInput == "SMA" or maTypeInput == "Bollinger Bands" Then
rsiMA = ma(rsiv, maLengthInput);
if maTypeInput == "EMA" Then
rsiMA = ema(rsiv, maLengthInput);
if maTypeInput == "WMA" Then
rsiMA = wma(rsiv, maLengthInput);
if maTypeInput == "RMA" Then
{
a= 1/maLengthInput;
rsiMA = iff(IsNaN(rsiMA[1]) == true, ma(rsiv, rsiLengthInput) , alpha * rsiv + (1 - alpha) * IFf(IsNan(rsiMA[1])==true,0,rsiMA[1]));
}
if maTypeInput == "VWMA" Then
{
rsiMA = ma(rsiv * volume, maLengthInput) / ma(volume, maLengthInput);
}
plot1(RSIV, "RSI");
plot2(rsiMA, "RSI-based MA");
즐거운 하루되세요
> 다올 님이 쓴 글입니다.
> 제목 : 부탁 드립니다.
> 아랫 수식에서 Rsima지표를 구현하고자 합니다.
적용가능하도록 수정 부탁 드립니다.
indicator(title="Relative Strength Index", shorttitle="RSI", format=format.price, precision=2, timeframe="", timeframe_gaps=true)
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => 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)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input.bool(false, title="Show Divergence", group="RSI Settings")
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
rsiPlot = plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.yellow)