Стратегия Super Momentum сочетает в себе несколько индикаторов импульса. Она покупает, когда несколько индикаторов импульса одновременно бывают бычьими, и продает, когда они одновременно медвежими. Интегрируя несколько индикаторов импульса, она направлена на то, чтобы более точно улавливать ценовые тенденции и избегать ложных сигналов от отдельных индикаторов.
Стратегия использует 4 индикатора RMI от Everget и 1 Оциллятор импульса Chande. RMI измеряет импульс цен для измерения силы бычьего и медвежьего движения. Chande MO рассчитывает изменение цен для выявления условий перекупа и перепродажи.
Он длинный, когда RMI5 пересекает линию покупки, RMI4 пересекает линию покупки, RMI3 пересекает линию покупки, RMI2 пересекает линию покупки, RMI1 пересекает линию покупки, и Chande MO пересекает линию покупки.
Он становится коротким, когда RMI5 пересекает линию продажи, RMI4 пересекает линию продажи, RMI3 пересекает линию продажи, RMI2 пересекает линию продажи, RMI1 пересекает линию продажи и Chande MO пересекает линию продажи.
RMI5 устанавливается напротив других RMI для лучшего выявления тенденций пирамидальной торговли.
Объединение нескольких индикаторов повышает точность тренда и избегает ложных сигналов
Показатели по всем временным рамкам отслеживают более широкие тенденции
Помощь обратного RMI в определении тенденций и пирамидации
Chande MO предотвращает плохие сделки в условиях перекупки/перепродажи
Сложные параметры с несколькими показателями требуют тщательной оптимизации
Одновременные движения индикатора могут генерировать ложные сигналы
Более низкая частота торговли с несколькими фильтрами
Параметры могут не соответствовать различным продуктам и режимам рынка
Проверка и оптимизация параметров устойчивости стратегии
Добавление/удаление показателей для оценки влияния качества сигнала
Внедрение фильтров для предотвращения ложных сигналов на некоторых рынках
Корректировка линий покупки/продажи индикатора для поиска оптимальных комбинаций
Рассмотреть возможность добавления стоп-лосса для контроля риска
Эта стратегия улучшает оценку тренда путем интеграции индикаторов импульса. Но оптимизация параметров имеет решающее значение из-за сложности. Если она хорошо настроена, она может генерировать качественные сигналы и имеет преимущество в следовании за трендом. Но трейдеры должны следить за рисками, находить оптимальные параметры и включать контроль рисков для стабильной торговли.
/*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)