Эта стратегия генерирует торговые сигналы с использованием тройного механизма подтверждения, т.е. индикатор импульса подтверждает сильную тенденцию рынка, индикатор Supertrend подтверждает направление тренда, а индикатор EMA обеспечивает дополнительную проверку направления тренда. Только когда все три индикатора соответствуют критериям, стратегия генерирует длинные или короткие торговые сигналы, обеспечивая, таким образом, выбор только высоковероятных торговых возможностей.
Индикатор импульса (Momentum RSI)
Показатель RSI Momentum используется для определения силы рыночной тенденции.
Торговые сигналы генерируются только во время интенсивных бычьих или медвежьих рынков.
Анализ супертенденций
Линия супертенденции представляет собой направление тренда на рынке. Позиции рассматриваются только тогда, когда цена проходит через линию супертенденции.
Когда цена проходит через линию супертенденции вверх, она преобразуется в восходящий тренд; когда она проходит вниз, она преобразуется в нисходящий тренд.
Стратегия ЕМА
Только если все три показателя одновременно выполняют условия открытия позиции, то будут выпущены подлинные торговые сигналы, что значительно уменьшает количество ложных сигналов и повышает стабильность стратегии.
Стратегия имеет чрезвычайно высокую стабильность и рентабельность.
Многочисленные механизмы подтверждения эффективно фильтруют шум и выбирают только сделки с высокой вероятностью.
Линия Supertrend имеет динамическую стоп-лосс, чтобы эффективно контролировать риск.
В сочетании с оценкой силы тренда, только торговля в сильных тенденциях избегает дополнительного риска.
Показатель EMA обеспечивает дополнительную проверку для обеспечения правильного направления торговли.
Полностью параметризирован, так что трейдеры могут настроить по мере необходимости.
Основными рисками этой стратегии являются аномальные прорывы, вызывающие ошибочные торговые сигналы.
Риск ложного проникновения: увеличить механизмы проверки проникновения.
Риск более широкого диапазона колебаний: надлежащим образом регулировать диапазон стоп-потери.
Риск изменения тренда: сокращение периода хранения, своевременное прекращение потерь.
К основным направлениям оптимизации этой стратегии относятся:
Оптимизация параметров: настройка параметров показателей для большего количества сортов.
Увеличение фильтрации: объединение большего количества показателей для улучшения качества сигнала.
Совместные стратегии: объединяются с другими стратегиями для использования дополнительных преимуществ.
Динамическая регулировка параметров: автоматическая регулировка параметров на основе рыночных условий.
Машинное обучение: используйте алгоритмы для автоматического поиска оптимальных параметров.
Эта стратегия достигает высоковероятной торговой стратегии с несколькими подтверждениями, эффективно сочетая индикаторы импульса, супертенденции и EMA. Его строгий механизм проверки прорыва также дает ему чрезвычайно сильную стабильность. В то же время, она имеет очень высокий потенциал настройки и оптимизации. Вкратце, эта стратегия объединяет преимущества следующего тренда и прорыва торговли, что делает ее очень перспективной алгоритмической торговой стратегией.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', shorttitle='The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', overlay=true,initial_capital = 1000) //// author - Baby_whale_to_moon // MOM Rsi indicator group_mom_rsi = "Rsi Of Momentum " len = input.int(10, minval=1, title="Length Mom-Rsi", group =group_mom_rsi ,tooltip = 'This ind calculate Rsi value of Momentum we use this ind to determine power of trend') src2 = close mom = src2 - src2[len] rsi_mom = ta.rsi(mom, len) mom_rsi_val = input.int(60, minval=1, title="Mom-Rsi Limit Val", group =group_mom_rsi, tooltip = "When our Mom-Rsi value more then this we open LONG or Short, with help of this indicator we we determine the status of the trend") // Super Trend Ind group_supertrend = "SuperTrend indicator" atrPeriod = input(10, "ATR Length SuperTrend", group = group_supertrend) factor = input.float(3.0, "Factor SuperTrend", step = 0.01, group = group_supertrend) [supertrend, direction] = ta.supertrend(factor, atrPeriod) // Ema Indicator group_most = "Ema indicator" src = input(close, 'Source Ema Ind',group = group_most) AP2 = input.int(defval=12, title='Length Ema Ind', minval=1,group = group_most) Trail1 = ta.ema(src, AP2) //Ema func AF2 = input.float(defval=1, title='Percent Ema Ind', minval=0.1,group = group_most) / 100 SL2 = Trail1 * AF2 // Stoploss Ema Trail2 = 0.0 iff_1 = Trail1 > nz(Trail2[1], 0) ? Trail1 - SL2 : Trail1 + SL2 iff_2 = Trail1 < nz(Trail2[1], 0) and Trail1[1] < nz(Trail2[1], 0) ? math.min(nz(Trail2[1], 0), Trail1 + SL2) : iff_1 Trail2 := Trail1 > nz(Trail2[1], 0) and Trail1[1] > nz(Trail2[1], 0) ? math.max(nz(Trail2[1], 0), Trail1 - SL2) : iff_2 //Bull = ta.barssince(Trail1 > Trail2 and close > Trail2 and low > Trail2) < ta.barssince(Trail2 > Trail1 and close < Trail2 and high < Trail2) //TS1 = plot(Trail1, 'ExMov', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(33, 149, 243, 100) : color.rgb(255, 235, 59, 100), linewidth=2) //TS2 = plot(Trail2, 'ema', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(76, 175, 79, 30) : color.rgb(255, 82, 82, 30), linewidth=2) //fill(TS1, TS2, Bull ? color.green : color.red, transp=90) // Strategy Sett group_strategy = "Settings of Strategy" Start_Time = input(defval=timestamp('01 January 2000 13:30 +0000'), title='Start Time of BackTest', group =group_strategy) End_Time = input(defval=timestamp('30 April 2030 19:30 +0000'), title='End Time of BackTest', group =group_strategy) dollar = input.float(title='Dollar Cost Per Position* ', defval=50000, group =group_strategy) trade_direction = input.string(title='Trade_direction', group =group_strategy, options=['LONG', 'SHORT', 'BOTH'], defval='BOTH') v1 = input(true, title="Version 1 - Uses SL/TP Dynamically ", group =group_strategy ,tooltip = 'With this settings our stoploss price increase or decrease with price to get better PNL score') v2 = input(false, title="Version 2 - Uses SL/TP Statically", group =group_strategy) v2stoploss_input = input.float(5, title='Static Stop.Loss % Val', minval=0.01, group =group_strategy)/100 v2takeprofit_input = input.float(10, title='Static Take.Prof % Val', minval=0.01, group =group_strategy)/100 v2stoploss_level_long = strategy.position_avg_price * (1 - v2stoploss_input) v2takeprofit_level_long = strategy.position_avg_price * (1 + v2takeprofit_input) v2stoploss_level_short = strategy.position_avg_price * (1 + v2stoploss_input) v2takeprofit_level_short = strategy.position_avg_price * (1 - v2takeprofit_input) group_line = "Line Settings" show_sl_tp = input.bool(title=' Show StopLoss - TakeProf Lines',inline = "1", defval=true, group =group_line) show_trend_line = input.bool(title=' Show Trend Line',inline = '3' ,defval=true, group =group_line) stoploss_colour = input.color(title='StopLoss Line Colour',inline = '2' ,defval=color.rgb(255, 255, 0), group =group_line) up_trend_line_colour = input.color(title='Up Trend line Colour',inline = '4' ,defval=color.rgb(0, 255, 0, 30), group =group_line) down_trend_line_colour = input.color(title='Down Trend line Colour',inline = '4' ,defval=color.rgb(255, 0, 0, 30), group =group_line) //plot(supertrend ,color = strategy.position_size > 0 and show_sl_tp ? color.rgb(255, 0, 0) :show_sl_tp ? color.rgb(0, 255, 0) : na , style = plot.style_steplinebr,linewidth = 2) // plot(supertrend ,color = show_sl_tp and v1 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2) // plot(v2stoploss_level_long ,color = strategy.position_size > 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2) // plot(v2stoploss_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2) // plot(v2takeprofit_level_long ,color = strategy.position_size > 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2) // plot(v2takeprofit_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2) TS2 = plot(Trail2, 'Ema Strategy', style=plot.style_line, color=show_trend_line and Trail1 < Trail2 ? down_trend_line_colour : show_trend_line ? up_trend_line_colour : na, linewidth=2) // bgcolor(buy_signal ? color.rgb(0, 230, 119, 80) : na) // bgcolor(sell_signal ? color.rgb(255, 82, 82, 80) : na) Time_interval = true buy_signal = Trail1 > Trail2 and direction < 0 and rsi_mom > mom_rsi_val and Time_interval sell_signal =Trail1 < Trail2 and direction > 0 and rsi_mom > mom_rsi_val and Time_interval // Strategy entries if strategy.opentrades == 0 and buy_signal and ( trade_direction == 'LONG' or trade_direction == 'BOTH') strategy.entry('Long_0', strategy.long, qty=dollar / close) if strategy.opentrades == 0 and sell_signal and ( trade_direction == 'SHORT' or trade_direction == 'BOTH') strategy.entry('Short_0', strategy.short, qty=dollar / close) if close < supertrend and v1 strategy.exit('Long_Close',from_entry = "Long_0", stop=supertrend, qty_percent=100) if v2 and strategy.position_size > 0 strategy.exit('Long_Close',from_entry = "Long_0", stop=v2stoploss_level_long,limit= v2takeprofit_level_long , qty_percent=100) if close > supertrend and v1 strategy.exit('Short_Close',from_entry = "Short_0", stop=supertrend, qty_percent=100) if v2 and strategy.position_size < 0 strategy.exit('Short_Close',from_entry = "Short_0", stop=v2stoploss_level_short,limit= v2takeprofit_level_short ,qty_percent=100)