Стратегия Momentum Double Moving Average Crossover


Дата создания: 2023-10-20 16:44:30 Последнее изменение: 2023-10-20 16:44:30
Копировать: 1 Количество просмотров: 618
1
Подписаться
1617
Подписчики

Стратегия Momentum Double Moving Average Crossover

Обзор

Эта стратегия использует пересечение равномерной линии для определения направления движения цены, дополненное золотой форкой для определения общей тенденции, для осуществления отслеживания тенденции.

Стратегический принцип

Эта стратегия использует пересечение двух равномерных линий EMA и SMA для определения направления движения цены, EMA реагирует быстрее, а SMA реагирует более стабильно. Когда EMA проходит через SMA, она определяется как сильная тенденция к росту цены и делает больше; когда EMA проходит через SMA, она определяется как сильная тенденция к снижению цены и делает больше.

Кроме того, эта стратегия также использует скрещивание быстрого и медленного SMA для определения направления общей тенденции. Когда быстрое SMA пересекает медленное SMA, это является золотым форком, и цена оценивается как долгосрочная тенденция к росту; когда быстрое SMA пересекает медленное SMA, это является мертвым форком, и цена оценивается как долгосрочная тенденция к снижению.

Стратегия оценивается как возможность сделать больше, когда она проходит SMA на EMA. Если это время является золотой форкой, то это означает, что есть не только кратковременная динамическая поддержка, но и согласуется с долгосрочной тенденцией, что является хорошей возможностью сделать больше; если это время является мертвой форкой, то это означает, что есть только кратковременная динамическая поддержка, но не согласуется с долгосрочной тенденцией, что является более рискованной возможностью сделать больше.

Анализ преимуществ

  • Использование среднелинейного пересечения для определения движения и направления цены
  • При этом учитываются краткосрочные и долгосрочные тенденции.
  • Высокая надежность в сочетании с двойным сигналом подтверждения
  • Приспосабливается к различным периодам путем корректировки среднелинейных параметров
  • Конфигурируемый для отображения конкретных торговых сигналов, пользовательский интерфейс

Анализ рисков

  • Промежуточные пересечения задерживаются и могут привести к пропуску оптимальных точек купли-продажи
  • Фиксированный цикл SMA не может отражать изменения цены в реальном времени
  • Долго- и короткопериодическая средняя линия может привести к ошибочному перекрестному сигналу
  • Долгосрочное хранение с возможностью увеличения риска

Можно снизить риск, подтвердив сигнал в сочетании с другими показателями, оптимизировав параметры среднелинейного цикла или установив стоп-лосс.

Направление оптимизации

  • Добавить фильтры на другие показатели, такие как объем сделок, Брин-Бенд и т.д.
  • Увеличение стратегии по удержанию
  • Оптимизация среднелинейных циклов
  • Оптимизация управления капиталом
  • Рассмотреть возможность корректировки пропорций позиций в реальном времени

Подвести итог

В целом, эта стратегия является более стабильной и надежной стратегией отслеживания тенденций. Она учитывает одновременно краткосрочные движения цен и направление долгосрочной тенденции, формируя торговый сигнал с помощью перекрестных линий. По сравнению с одной равномерной стратегией, она сочетает в себе подтверждение двойных показателей и имеет более высокую надежность.

Исходный код стратегии
/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Cryptoluc1d

//@version=4
strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true)

// Create inputs

mom_length = input(title="Momentum Length (EMA=SMA)", defval=50)
bias_length_fast  = input(title="Golden Cross Length (Fast)", defval=50)
bias_length_slow  = input(title="Golden Cross Length (Slow)", defval=100)

// Define MAs

ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration
sma = sma(close, mom_length)
bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias
bias_slow = sma(close, bias_length_slow)

// Define signal conditions

buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias).
buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias).
buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later.
sell = crossunder(ema, sma) // sell when EMA cross under SMA.

// Enable option to hide signals, then plot signals

show_signal = input(title="Show Signals", defval=true)

plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY')
plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY')
plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY')
plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL')

// Define entry and exit conditions

longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish
if (longCondition)
    strategy.entry("BUY TREND", strategy.long)
exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA
strategy.close("BUY TREND", when=exitLong)

// // short conditions. turned off because up only.
// shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish
// if (shortCondition)
//     strategy.entry("SELL TREND", strategy.short)
// exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA
// strategy.close("SELL TREND", when=exitShort)

// Enable option to show MAs, then plot MAs

show_ma = input(title="Show MAs", defval=false)

plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1)
plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1)
plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2)
plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)