スーパーモメント戦略は,複数のモメント指標を組み合わせる.複数のモメント指標が同時に上昇しているときに購入し,同時に下落しているときに販売する.複数のモメント指標を統合することで,価格動向をより正確に把握し,個々の指標からの誤った信号を回避することを目的としている.
この戦略は,Evergetによる4つのRMI指標と1つのChandeモメンタムオシレーターを使用している.RMIは上昇と下落の強さを測定するために価格の勢いを測定する.Chande MOは過買いと過売りの状況を特定するために価格変化を計算する.
RMI5が買いラインを越えたとき,RMI4が買いラインを越えたとき,RMI3が買いラインを越えたとき,RMI2が買いラインを越えたとき,RMI1が買いラインを越えたとき,CHANDE MOが買いラインを越えたとき,RMI5が買いラインを越えたとき,RMI4が買いラインを越えたとき,RMI3が買いラインを越えたとき,RMI2が買いラインを越えたとき,RMI1が買いラインを越えたとき,RMI1が買いラインを越えたとき,RMI1が買いラインを越えたとき,RMI4が買いラインを越えたとき,RMI3が買いラインを越えたとき,RMI2が買いラインを越えたとき,RMI1が買いラインを越えたとき,RMI1が買いラインを越えたとき,RMI5が買いラインを越えたとき,RMI4が買いラインを越えたとき,RMI2が買いラインを越えたとき,RMI5が買いラインを越えたとき,RMI5が買いラインを越えたとき,RMI5が買いラインを越えたとき,RMI5が買いラインを越えたとき,RMI5が
RMI5がセールラインを下回り,RMI4がセールライン上回り,RMI3がセールライン上回り,RMI2がセールライン上回り,RMI1がセールライン上回り,CHANDE MOがセールライン下回りするとショートになります
RMI5は,ピラミッド取引の傾向をより正確に特定するために他のRMIと対照的に設定されています.
複数の指標を組み合わせることで,傾向の正確性が向上し,誤った信号が回避されます
タイムフレームの指標は,より大きな傾向を捉える
トレンド識別とピラミッド設定における逆RMIの補助
超買/超売の条件で不良取引を防止する
複数の指標を持つ複雑なパラメータは徹底的な最適化が必要です
同期インジケーターの動きが偽信号を生む可能性があります.
複数のフィルターで取引頻度が低い
パラメータは異なる製品と市場体制に適合しない可能性があります
戦略の安定性に関するパラメータをテストし最適化する
信号品質への影響を評価するための指標を追加/削除
特定の市場における誤った信号を避けるためにフィルターを導入する
適正な組み合わせを見つけるために指標の購入/販売ラインを調整する
リスク管理のためにストップロスを追加することを検討する.
この戦略は,モメント指標を統合することによってトレンド判断を改善する. しかし,パラメータ最適化は複雑性のために重要です. 適切に調整された場合,品質のシグナルを生成し,トレンドをフォローする利点を有します. しかし,トレーダーはリスクを注意し,最適なパラメータを見つけ,安定した取引のためにリスク制御を組み込む必要があります.
/*backtest start: 2023-10-29 00:00:00 end: 2023-11-05 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Super Momentum Strat", shorttitle="SMS", format=format.price, precision=2) //* Backtesting Period Selector | Component *// //* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *// //* https://www.tradingview.com/u/pbergden/ *// //* Modifications made *// testStartYear = input(2021, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(999999, "Backtest Stop Year") testStopMonth = input(9, "Backtest Stop Month") testStopDay = input(26, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true /////////////// END - Backtesting Period Selector | Component /////////////// src = input(close, "Price", type = input.source) highlightBreakouts = input(title="Highlight Overbought/Oversold Breakouts ?", type=input.bool, defval=true) CMOlength = input(9, minval=1, title="Alpha Chande Momentum Length") //CMO momm = change(src) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = sum(m1, CMOlength) sm2 = sum(m2, CMOlength) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2)+50 plot(chandeMO, "Chande MO", color=color.blue) obLevel = input(75, title="Chande Sellline") osLevel = input(25, title="Chande Buyline") hline(obLevel, color=#0bc4d9) hline(osLevel, color=#0bc4d9) /// ///RMIS // // Copyright (c) 2018-present, Alex Orekhov (everget) // Relative Momentum Index script may be freely distributed under the MIT license. // /// /// //RMI1 length1 = input(title="RMI1 Length", type=input.integer, minval=1, defval=8) momentumLength1 = input(title="RMI1 Momentum ", type=input.integer, minval=1, defval=3) up1 = rma(max(change(src, momentumLength1), 0), length1) down1 = rma(-min(change(src, momentumLength1), 0), length1) rmi1 = down1 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up1 / down1)) obLevel1 = input(57, title="RMI1 Sellline") osLevel1 = input(37, title="RMI1 Buyline") rmiColor1 = rmi1 > obLevel1 ? #0ebb23 : rmi1 < osLevel1 ? #ff0000 : #ffe173 plot(rmi1, title="RMI 1", linewidth=2, color=rmiColor1, transp=0) hline(obLevel1, color=#0b57d9) hline(osLevel1, color=#0b57d9) //RMI2 length2 = input(title="RMI2 Length", type=input.integer, minval=1, defval=12) momentumLength2 = input(title="RMI2 Momentum ", type=input.integer, minval=1, defval=3) up2 = rma(max(change(src, momentumLength1), 0), length2) down2 = rma(-min(change(src, momentumLength1), 0), length2) rmi2 = down2 == 0 ? 100 : up1 == 0 ? 0 : 100 - (100 / (1 + up2 / down2)) obLevel2 = input(72, title="RMI2 Sellline") osLevel2 = input(37, title="RMI2 Buyline") rmiColor2 = rmi1 > obLevel1 ? #0ebb23 : rmi2 < osLevel2 ? #ff0000 : #c9ad47 plot(rmi2, title="RMI 2", linewidth=2, color=rmiColor2, transp=0) hline(obLevel2, color=#5a0bd9) hline(osLevel2, color=#5a0bd9) //RMI3 length3 = input(title="RMI3 Length", type=input.integer, minval=1, defval=30) momentumLength3 = input(title="RMI3 Momentum ", type=input.integer, minval=1, defval=53) up3 = rma(max(change(src, momentumLength3), 0), length3) down3 = rma(-min(change(src, momentumLength3), 0), length3) rmi3 = down3 == 0 ? 100 : up3 == 0 ? 0 : 100 - (100 / (1 + up3 / down3)) obLevel3 = input(46, title="RMI3 Sellline") osLevel3 = input(24, title="RMI3 Buyline") rmiColor3 = rmi3 > obLevel3 ? #0ebb23 : rmi3 < osLevel3 ? #ff0000 : #967d20 plot(rmi3, title="RMI 3", linewidth=2, color=rmiColor3, transp=0) hline(obLevel3, color=#cf0bd9) hline(osLevel3, color=#cf0bd9) //RMI4 length4 = input(title="RMI4 Length", type=input.integer, minval=1, defval=520) momentumLength4 = input(title="RMI4 Momentum ", type=input.integer, minval=1, defval=137) up4 = rma(max(change(src, momentumLength4), 0), length4) down4 = rma(-min(change(src, momentumLength4), 0), length4) rmi4 = down4 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up4 / down4)) obLevel4 = input(0, title="RMI4 Sellline") osLevel4 = input(100, title="RMI4 Buyline") rmiColor4 = rmi4 > obLevel4 ? #0ebb23 : rmi4 < osLevel4 ? #ff0000 : #7a630b plot(rmi4, title="RMI 4", linewidth=2, color=rmiColor4, transp=0) hline(obLevel4, color=#bd1150) hline(osLevel4, color=#bd1150) //RMI5 length5 = input(title="RMI5 Length", type=input.integer, minval=1, defval=520) momentumLength5 = input(title="RMI5 Momentum ", type=input.integer, minval=1, defval=137) up5 = rma(max(change(src, momentumLength5), 0), length5) down5 = rma(-min(change(src, momentumLength5), 0), length5) rmi5 = down5 == 0 ? 100 : up4 == 0 ? 0 : 100 - (100 / (1 + up5 / down5)) buy5 = input(0, title="RMI5 Buy Above") sell5 = input(47, title="RMI5 Sell Below") rmiColor5 = rmi5 > buy5 ? #0ebb23 : rmi5 < sell5 ? #ff0000 : #7a630b plot(rmi5, title="RMI 5", linewidth=2, color=rmiColor5, transp=0) hline(buy5, color=#bd1150) hline(sell5, color=#bd1150) /// ///END RMIS // // // Relative Momentum Index script may be freely distributed under the MIT license. // /// /// hline(50, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line") //alerts longcondition1 = crossover(chandeMO, osLevel) shortcondition1 = crossunder(chandeMO, obLevel) longcondition2 = rmi5>buy5 and rmi4<osLevel4 and rmi3<osLevel3 and rmi2<osLevel2 and rmi1<osLevel1 and longcondition1 shortcondition2 = rmi5<sell5 and rmi4>obLevel4 and rmi3>obLevel3 and rmi2>obLevel2 and rmi1>obLevel1 and shortcondition1 if testPeriod() if longcondition2 strategy.entry("Buy", strategy.long) if shortcondition2 strategy.entry("Sell", strategy.short)