相対モメントインデックス (RMI) 戦略はモメントインデックスに基づく改良版である.これは,逆転機会を把握するために,市場が過買いまたは過売りされているかどうかを判断するために,期間中の価格モメントを計算する.
RMIの計算式は次のとおりです.
xMom = xPrice - xPrice[Length] // Price change over Length periods
xMU = If xMom >= 0: previous xMU minus xMU/Length plus xMom; else: previous xMU
xMD = If xMom <= 0: previous xMD minus xMD/Length plus absolute value of xMom; else: 0
RM = xMU / xMD
RMI = 100 * (RM / (1 + RM))
まず,長度期間の価格変化xMomを計算する.xMom>=0である場合,価格が上昇すると,それをxMUに蓄積する.xMom<0である場合,価格が下がると,その絶対値をxMDに蓄積する.RMはxMUとxMDの比率であり,上昇と低下の勢いを表しています.RMIはRMを0-100の範囲に正常化します.
RMIがSellZoneより高くなると,市場はオーバー買い,ショート.RMIがBuyZoneより低くなると,市場はオーバー売り,ロング.
ストップ・ロスの拡大,パラメータの最適化,トレンド戦略の組み合わせなどによってリスクは軽減できる.
RMI戦略は,次の側面から改善することができます:
RMI戦略は,価格動向の変化を測定することによって短期的な引き下げ機会を捉える.RSIと比較して,RMIは統合に敏感で堅牢である.しかし,停止されるリスクは存在する.パラメータは最適化され,パフォーマンスを最大化するためにトレンド戦略と組み合わせなければならない.
/*backtest start: 2023-10-02 00:00:00 end: 2023-10-21 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 19/10/2017 // The Relative Momentum Index (RMI) was developed by Roger Altman. Impressed // with the Relative Strength Index's sensitivity to the number of look-back // periods, yet frustrated with it's inconsistent oscillation between defined // overbought and oversold levels, Mr. Altman added a momentum component to the RSI. // As mentioned, the RMI is a variation of the RSI indicator. Instead of counting // up and down days from close to close as the RSI does, the RMI counts up and down // days from the close relative to the close x-days ago where x is not necessarily // 1 as required by the RSI). So as the name of the indicator reflects, "momentum" is // substituted for "strength". // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="Relative Momentum Index", shorttitle="RMI") xPrice = close Length = input(20, minval=1) BuyZone = input(40, minval=1) SellZone = input(70, minval=1) reverse = input(false, title="Trade reverse") // hline(0, color=gray, linestyle=dashed) // hline(SellZone, color=red, linestyle=line) // hline(BuyZone, color=green, linestyle=line) xMom = xPrice - xPrice[Length] xMU = iff(xMom >= 0, nz(xMU[1], 1) - (nz(xMU[1],1) / Length) + xMom, nz(xMU[1], 1)) xMD = iff(xMom <= 0, nz(xMD[1], 1) - (nz(xMD[1],1) / Length) + abs(xMom), nz(xMD[1], 0)) RM = xMU / xMD nRes = 100 * (RM / (1+RM)) pos = iff(nRes < BuyZone, 1, iff(nRes > SellZone, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="RMI")