Strategi Super Momentum menggabungkan beberapa penunjuk momentum. Ia membeli apabila beberapa penunjuk momentum bullish pada masa yang sama, dan menjual apabila mereka bearish pada masa yang sama. Dengan mengintegrasikan beberapa penunjuk momentum, ia bertujuan untuk menangkap trend harga dengan lebih tepat dan mengelakkan isyarat palsu dari penunjuk individu.
Strategi ini menggunakan 4 penunjuk RMI oleh Everget dan 1 Chande Momentum Oscillator. RMI mengukur momentum harga untuk mengukur kekuatan bullish dan bearish. Chande MO mengira perubahan harga untuk mengenal pasti keadaan overbought dan oversold.
Ia menjadi panjang apabila RMI5 melintasi di atas garis beli, RMI4 melintasi di bawah garis beli, RMI3 melintasi di bawah garis beli, RMI2 melintasi di bawah garis beli, RMI1 melintasi di bawah garis beli, dan Chande MO melintasi di atas garis beli.
Ia menjadi pendek apabila RMI5 melintasi di bawah garis jualannya, RMI4 melintasi di atas garis jualannya, RMI3 melintasi di atas garis jualannya, RMI2 melintasi di atas garis jualannya, RMI1 melintasi di atas garis jualannya, dan Chande MO melintasi di bawah garis jualannya.
RMI5 ditetapkan bertentangan dengan RMI lain untuk mengenal pasti lebih baik trend untuk perdagangan piramid.
Menggabungkan beberapa penunjuk meningkatkan ketepatan trend dan mengelakkan isyarat palsu
Penunjuk merangkumi jangka masa yang lebih besar
Bantuan RMI terbalik dalam pengenalan trend dan piramida
MO Chande menghalang perdagangan buruk dalam keadaan overbought / oversold
Parameter kompleks dengan pelbagai penunjuk memerlukan pengoptimuman menyeluruh
Pergerakan penunjuk serentak boleh menghasilkan isyarat palsu
Frekuensi perdagangan yang lebih rendah dengan pelbagai penapis
Parameter mungkin tidak sesuai dengan produk dan rejimen pasaran yang berbeza
Uji dan mengoptimumkan parameter untuk kekuatan strategi
Tambah/hilangkan penunjuk untuk menilai kesan kualiti isyarat
Memperkenalkan penapis untuk mengelakkan isyarat palsu di pasaran tertentu
Sesuaikan garis pembelian/penjualan penunjuk untuk mencari kombinasi yang optimum
Pertimbangkan untuk menambah stop loss untuk kawalan risiko
Strategi ini meningkatkan penilaian trend dengan mengintegrasikan penunjuk momentum. Tetapi pengoptimuman parameter sangat penting kerana kerumitan. Jika disesuaikan dengan baik, ia dapat menghasilkan isyarat berkualiti dan mempunyai kelebihan dalam mengikuti trend. Tetapi peniaga harus melihat risiko, mencari parameter yang optimum, dan menggabungkan kawalan risiko untuk perdagangan yang stabil.
/*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)