커뮤니티

부탁드립니다 항상 감사합니다

프로필 이미지
윤호석
2025-09-13 16:14:43.0
68
글번호 193980
답변완료
{========================================== Disparity Index + RSI (YesLanguage ver.) - DI = 100 * (src - SMA(src,L)) / SMA - scaledDI = 20*DI + 50 (RSI 스케일과 유사) - RSI = Wilder's RMA 방식 - RSI MA 옵션: None/SMA/BB/EMA/RMA/WMA/VWMA - Regular Bullish/Bearish Divergence 라벨 ==========================================} {----------- Inputs -----------} input : DI_Length(14); input : RSI_Length(14); input : MA_Type(1); { 0=None, 1=SMA, 2=SMA+BB, 3=EMA, 4=RMA, 5=WMA, 6=VWMA } input : MA_Len(14); input : BB_Mult(2.0); input : CalcDivergence(true); { 색상(플랫폼 팔레트에 맞게 필요 시 바꾸세요) } input : DiUpColor(Green), DiDnColor(Red); input : RsiColor(Magenta); input : BBColor(Green); input : LevelColor(Gray); {----------- Vars -----------} var : src(0), di(0), scaledDi(0), smaDI(0); var : rsi(0), chg(0), up(0), dn(0), upRMA(0), dnRMA(0); var : rsiMA(0), rsiBB_up(0), rsiBB_dn(0), rsiStDev(0); { 다이버전스용 } input : LB_Left(5), LB_Right(5); var : rsiPivotLow(0), rsiPivL_Bars(0), rsiPrevPivotLow(0); var : rsiPivotHigh(0), rsiPivH_Bars(0), rsiPrevPivotHigh(0); var : pxPivotLow(0), pxPrevPivotLow(0); var : pxPivotHigh(0), pxPrevPivotHigh(0); var : bullCond(false), bearCond(false); var : txBull(0), txBear(0); {----------- Source -----------} src = Close; { 필요 시 Open/High/Low 등으로 변경 가능 } {----------- Disparity Index -----------} smaDI = Average(src, DI_Length); if smaDI <> 0 then di = 100 * (src - smaDI) / smaDI else di = 0; scaledDi = 20 * di + 50; { 색상 선택 } var : diColor(0); diColor = IFF(scaledDi >= 50, DiUpColor, DiDnColor); Plot1(scaledDi, "Scaled DI", diColor); { DI(스케일드) } Plot2(50, "DI 50", LevelColor); { Pine의 hline(50) 대체 } {----------- RSI (Wilder RMA) -----------} chg = Close - Close[1]; up = MaxList(chg, 0); dn = MaxList(-chg, 0); /* RMA 구현: prev*(Len-1)/Len + x/Len */ if CurrentBar = 1 then begin upRMA = up; dnRMA = dn; end else begin upRMA = (upRMA[1] * (RSI_Length - 1) + up) / RSI_Length; dnRMA = (dnRMA[1] * (RSI_Length - 1) + dn) / RSI_Length; end; if dnRMA = 0 then rsi = 100 else if upRMA = 0 then rsi = 0 else rsi = 100 - (100 / (1 + upRMA / dnRMA)); Plot3(rsi, "RSI", RsiColor); /* RSI 레벨 라인 (70/60/50/40/30) */ Plot4(70, "RSI 70", LevelColor); Plot5(60, "RSI 60", LevelColor); Plot6(50, "RSI 50", LevelColor); Plot7(40, "RSI 40", LevelColor); Plot8(30, "RSI 30", LevelColor); {----------- RSI Smoothing MA / BB -----------} /* MA 선택 함수 대체: 플랫폼 내장 MA가 다르면 Average/EMA/WMA 등으로 매핑하세요 */ { SMA } if MA_Type = 1 or MA_Type = 2 then rsiMA = Average(rsi, MA_Len) else if MA_Type = 3 then { EMA } rsiMA = XAverage(rsi, MA_Len) else if MA_Type = 4 then { RMA(=SMMA) } begin if CurrentBar = 1 then rsiMA = rsi else rsiMA = (rsiMA[1] * (MA_Len - 1) + rsi) / MA_Len; end else if MA_Type = 5 then { WMA } rsiMA = WAverage(rsi, MA_Len) else if MA_Type = 6 then { VWMA (가중=거래량) } rsiMA = Summation(rsi * Volume, MA_Len) / Summation(Volume, MA_Len) else rsiMA = NaN; { MA 표시 } if MA_Type >= 1 then Plot9(rsiMA, "RSI_MA", Yellow); { BB (SMA + Bollinger Bands) } if MA_Type = 2 then begin rsiStDev = StandardDev(rsi, MA_Len, 1); { 1 = 표본/모수 선택은 환경 따라 조정 } rsiBB_up = rsiMA + rs_ 수정부탁드려요
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-09-15 10:38:14.0

안녕하세요 예스스탁입니다. #{----------- Inputs -----------} input : DI_Length(14); input : RSI_Length(14); input : MA_Type(1); #{ 0=None, 1=SMA, 2=SMA+BB, 3=EMA, 4=RMA, 5=WMA, 6=VWMA } input : MA_Len(14); input : BB_Mult(2.0); input : CalcDivergence(true); #{ 색상(플랫폼 팔레트에 맞게 필요 시 바꾸세요) } input : DiUpColor(Green), DiDnColor(Red); input : RsiColor(Magenta); input : BBColor(Green); input : LevelColor(Gray); #{----------- Vars -----------} var : src(0), di(0), scaledDi(0), smaDI(0); var : rsi(0), chg(0), up(0), dn(0), upRMA(0), dnRMA(0); var : rsiMA(0), rsiBB_up(0), rsiBB_dn(0), rsiStDev(0); #{ 다이버전스용 } input : LB_Left(5), LB_Right(5); var : rsiPivotLow(0), rsiPivL_Bars(0), rsiPrevPivotLow(0); var : rsiPivotHigh(0), rsiPivH_Bars(0), rsiPrevPivotHigh(0); var : pxPivotLow(0), pxPrevPivotLow(0); var : pxPivotHigh(0), pxPrevPivotHigh(0); var : bullCond(false), bearCond(false); var : txBull(0), txBear(0); #{----------- Source -----------} src = Close; # { 필요 시 Open/High/Low 등으로 변경 가능 } #{----------- Disparity Index -----------} smaDI = Average(src, DI_Length); if smaDI <> 0 then di = 100 * (src - smaDI) / smaDI; else di = 0; scaledDi = 20 * di + 50; #{ 색상 선택 } var : diColor(0); diColor = IFF(scaledDi >= 50, DiUpColor, DiDnColor); Plot1(scaledDi, "Scaled DI", diColor); #{ DI(스케일드) } Plot2(50, "DI 50", LevelColor); #{ Pine의 hline(50) 대체 } #{----------- RSI (Wilder RMA) -----------} chg = Close - Close[1]; up = MaxList(chg, 0); dn = MaxList(-chg, 0); /* RMA 구현: prev*(Len-1)/Len + x/Len */ if CurrentBar == 1 then begin upRMA = up; dnRMA = dn; end else begin upRMA = (upRMA[1] * (RSI_Length - 1) + up) / RSI_Length; dnRMA = (dnRMA[1] * (RSI_Length - 1) + dn) / RSI_Length; end; if dnRMA = 0 then rsi = 100; else if upRMA = 0 then rsi = 0; else rsi = 100 - (100 / (1 + upRMA / dnRMA)); Plot3(rsi, "RSI", RsiColor); /* RSI 레벨 라인 (70/60/50/40/30) */ Plot4(70, "RSI 70", LevelColor); Plot5(60, "RSI 60", LevelColor); Plot6(50, "RSI 50", LevelColor); Plot7(40, "RSI 40", LevelColor); Plot8(30, "RSI 30", LevelColor); #{----------- RSI Smoothing MA / BB -----------} /* MA 선택 함수 대체: 플랫폼 내장 MA가 다르면 Average/EMA/WMA 등으로 매핑하세요 */ #{ SMA } if MA_Type == 1 or MA_Type == 2 then rsiMA = ma(rsi, MA_Len); else if MA_Type == 3 then # { EMA } rsiMA = Ema(rsi, MA_Len); else if MA_Type == 4 then #{ RMA(=SMMA) } begin if CurrentBar == 1 then rsiMA = rsi; else rsiMA = (rsiMA[1] * (MA_Len - 1) + rsi) / MA_Len; end else if MA_Type == 5 then #{ WMA } rsiMA = WMA(rsi, MA_Len); else if MA_Type == 6 then #{ VWMA (가중=거래량) } rsiMA = AccumN(rsi * Volume, MA_Len) / AccumN(Volume, MA_Len); else rsiMA = NaN; #{ MA 표시 } if MA_Type >= 1 then Plot9(rsiMA, "RSI_MA", Yellow); #{ BB (SMA + Bollinger Bands) } if MA_Type == 2 then { rsiStDev = Std(rsi, MA_Len); rsiBB_up = rsiMA + rsiStDev; } 즐거운 하루되세요 > 윤호석 님이 쓴 글입니다. > 제목 : 부탁드립니다 항상 감사합니다 > {========================================== Disparity Index + RSI (YesLanguage ver.) - DI = 100 * (src - SMA(src,L)) / SMA - scaledDI = 20*DI + 50 (RSI 스케일과 유사) - RSI = Wilder's RMA 방식 - RSI MA 옵션: None/SMA/BB/EMA/RMA/WMA/VWMA - Regular Bullish/Bearish Divergence 라벨 ==========================================} {----------- Inputs -----------} input : DI_Length(14); input : RSI_Length(14); input : MA_Type(1); { 0=None, 1=SMA, 2=SMA+BB, 3=EMA, 4=RMA, 5=WMA, 6=VWMA } input : MA_Len(14); input : BB_Mult(2.0); input : CalcDivergence(true); { 색상(플랫폼 팔레트에 맞게 필요 시 바꾸세요) } input : DiUpColor(Green), DiDnColor(Red); input : RsiColor(Magenta); input : BBColor(Green); input : LevelColor(Gray); {----------- Vars -----------} var : src(0), di(0), scaledDi(0), smaDI(0); var : rsi(0), chg(0), up(0), dn(0), upRMA(0), dnRMA(0); var : rsiMA(0), rsiBB_up(0), rsiBB_dn(0), rsiStDev(0); { 다이버전스용 } input : LB_Left(5), LB_Right(5); var : rsiPivotLow(0), rsiPivL_Bars(0), rsiPrevPivotLow(0); var : rsiPivotHigh(0), rsiPivH_Bars(0), rsiPrevPivotHigh(0); var : pxPivotLow(0), pxPrevPivotLow(0); var : pxPivotHigh(0), pxPrevPivotHigh(0); var : bullCond(false), bearCond(false); var : txBull(0), txBear(0); {----------- Source -----------} src = Close; { 필요 시 Open/High/Low 등으로 변경 가능 } {----------- Disparity Index -----------} smaDI = Average(src, DI_Length); if smaDI <> 0 then di = 100 * (src - smaDI) / smaDI else di = 0; scaledDi = 20 * di + 50; { 색상 선택 } var : diColor(0); diColor = IFF(scaledDi >= 50, DiUpColor, DiDnColor); Plot1(scaledDi, "Scaled DI", diColor); { DI(스케일드) } Plot2(50, "DI 50", LevelColor); { Pine의 hline(50) 대체 } {----------- RSI (Wilder RMA) -----------} chg = Close - Close[1]; up = MaxList(chg, 0); dn = MaxList(-chg, 0); /* RMA 구현: prev*(Len-1)/Len + x/Len */ if CurrentBar = 1 then begin upRMA = up; dnRMA = dn; end else begin upRMA = (upRMA[1] * (RSI_Length - 1) + up) / RSI_Length; dnRMA = (dnRMA[1] * (RSI_Length - 1) + dn) / RSI_Length; end; if dnRMA = 0 then rsi = 100 else if upRMA = 0 then rsi = 0 else rsi = 100 - (100 / (1 + upRMA / dnRMA)); Plot3(rsi, "RSI", RsiColor); /* RSI 레벨 라인 (70/60/50/40/30) */ Plot4(70, "RSI 70", LevelColor); Plot5(60, "RSI 60", LevelColor); Plot6(50, "RSI 50", LevelColor); Plot7(40, "RSI 40", LevelColor); Plot8(30, "RSI 30", LevelColor); {----------- RSI Smoothing MA / BB -----------} /* MA 선택 함수 대체: 플랫폼 내장 MA가 다르면 Average/EMA/WMA 등으로 매핑하세요 */ { SMA } if MA_Type = 1 or MA_Type = 2 then rsiMA = Average(rsi, MA_Len) else if MA_Type = 3 then { EMA } rsiMA = XAverage(rsi, MA_Len) else if MA_Type = 4 then { RMA(=SMMA) } begin if CurrentBar = 1 then rsiMA = rsi else rsiMA = (rsiMA[1] * (MA_Len - 1) + rsi) / MA_Len; end else if MA_Type = 5 then { WMA } rsiMA = WAverage(rsi, MA_Len) else if MA_Type = 6 then { VWMA (가중=거래량) } rsiMA = Summation(rsi * Volume, MA_Len) / Summation(Volume, MA_Len) else rsiMA = NaN; { MA 표시 } if MA_Type >= 1 then Plot9(rsiMA, "RSI_MA", Yellow); { BB (SMA + Bollinger Bands) } if MA_Type = 2 then begin rsiStDev = StandardDev(rsi, MA_Len, 1); { 1 = 표본/모수 선택은 환경 따라 조정 } rsiBB_up = rsiMA + rs_ 수정부탁드려요