커뮤니티

rsi

프로필 이미지
고성
2026-10-27 13:04:57
44
글번호 234008
답변완료

rsi 선이 하단선에 닿거나 하단선 아래로 하락하면 매도, 다음봉에 매도청산.

rsi 선이 상단선에 닿거나 상단선 위로 상승하면 매도, 다음봉에 매도청산.

oversold 상승선이 0 에서 발생하면 매수,다음봉에 매수청산.(0 이상에서 상승선은 무관)

overbougth 하락선이 100 에서 발생하면 매수,다음봉에 매수청산.(100 이하에서 하락선은 무관)

plot4와 plot5의 상하를 바꿨습니다.    감사합니다.


input : max(20),min(10);

input : overbought(70),oversold(30);

var : src(0), N(0),diff(0),i(0);

var : k(0),overbuy(0),overSell(0),avgv(0);

var : alpha(0),num_rma(0),den_rma(0);

var : rsiv(0),avg_rsi(0),buy_rsi_ma(0),sell_rsi_ma(0);

Array : num[100](0),den[100](0);


src = C;

N = max-min+1;

diff = IFf(IsNan(src - src[1]) == False,src-src[1],0);

k = 0;

overbuy = 0;

oversell = 0;

avgv = 0;

for i = min to max

{

    alpha = 1/i;

    num_rma = alpha*diff + (1-alpha)*num[k];

    den_rma = alpha*abs(diff) + (1-alpha)*den[k];

    rsiv = 50*num_rma/den_rma + 50;

    avgv = avgv+ rsiv;    

    overbuy = iff(rsiv > overbought , overbuy + 1 , overbuy);

    oversell = iff(rsiv < oversold , oversell + 1 , oversell);    

    num[k] = num_rma;

    den[k] = den_rma;

    k = k + 1;

}


avg_rsi = avgv/N;

buy_rsi_ma = 0;

sell_rsi_ma = 0;

buy_rsi_ma = iff(IsNan(buy_rsi_ma[1] + overbuy/N*(avg_rsi - buy_rsi_ma[1])) == False,buy_rsi_ma[1] + overbuy/N*(avg_rsi - buy_rsi_ma[1]),avg_rsi);

sell_rsi_ma = iff(IsNaN(sell_rsi_ma[1] + oversell/N*(avg_rsi - sell_rsi_ma[1])) == False,sell_rsi_ma[1] + oversell/N*(avg_rsi - sell_rsi_ma[1]), avg_rsi);


plot1(avg_rsi,"RSI");

plot2(buy_rsi_ma,"Upper");

plot3(sell_rsi_ma,"Lower");

plot4(oversell/N*100,"Oversold");

plot5(100 - overbuy/N*100,"Overbought");

PlotBaseLine1(100,"100");

PlotBaseLine2(0,"0");

시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-10-28 14:05:35

안녕하세요 예스스탁입니다. input : max(20),min(10); input : overbought(70),oversold(30); var : src(0), N(0),diff(0),i(0); var : k(0),overbuy(0),overSell(0),avgv(0); var : alpha(0),num_rma(0),den_rma(0); var : rsiv(0),avg_rsi(0),buy_rsi_ma(0),sell_rsi_ma(0); var : os(0),ob(0); Array : num[100](0),den[100](0); src = C; N = max-min+1; diff = IFf(IsNan(src - src[1]) == False,src-src[1],0); k = 0; overbuy = 0; oversell = 0; avgv = 0; for i = min to max { alpha = 1/i; num_rma = alpha*diff + (1-alpha)*num[k]; den_rma = alpha*abs(diff) + (1-alpha)*den[k]; rsiv = 50*num_rma/den_rma + 50; avgv = avgv+ rsiv; overbuy = iff(rsiv > overbought , overbuy + 1 , overbuy); oversell = iff(rsiv < oversold , oversell + 1 , oversell); num[k] = num_rma; den[k] = den_rma; k = k + 1; } avg_rsi = avgv/N; buy_rsi_ma = 0; sell_rsi_ma = 0; buy_rsi_ma = iff(IsNan(buy_rsi_ma[1] + overbuy/N*(avg_rsi - buy_rsi_ma[1])) == False,buy_rsi_ma[1] + overbuy/N*(avg_rsi - buy_rsi_ma[1]),avg_rsi); sell_rsi_ma = iff(IsNaN(sell_rsi_ma[1] + oversell/N*(avg_rsi - sell_rsi_ma[1])) == False,sell_rsi_ma[1] + oversell/N*(avg_rsi - sell_rsi_ma[1]), avg_rsi); /* plot1(avg_rsi,"RSI"); plot2(buy_rsi_ma,"Upper"); plot3(sell_rsi_ma,"Lower"); plot4(oversell/N*100,"Oversold"); plot5(100 - overbuy/N*100,"Overbought"); PlotBaseLine1(100,"100"); PlotBaseLine2(0,"0");*/ os = oversell/N*100; ob = 100 - overbuy/N*100; if MarketPosition >= 0 and avg_rsi <= buy_rsi_ma and avg_rsi[1] > buy_rsi_ma[1] Then Sell(); if MarketPosition >= 0 and ob < 100 and ob[1] == 100 Then Sell(); if MarketPosition <= 0 and avg_rsi >= sell_rsi_ma and avg_rsi[1] < sell_rsi_ma[1] Then Buy(); if MarketPosition <= 0 and os > 0 and os[1] == 0 Then Buy(); if MarketPosition == -1 and BarsSinceEntry == 1 Then ExitShort(); if MarketPosition == 1 and BarsSinceEntry == 1 Then ExitLong(); 즐거운 하루되세요