Стратегия EMA с ATR стоп-лосс

Автор:Чао Чжан, Дата: 2023-12-11 16:00:09
Тэги:

img

Обзор

Эта стратегия использует золотой крест EMA для генерации торговых сигналов, то есть сигнал покупки генерируется, когда быстрая линия EMA пересекает линию медленной EMA, а сигнал продажи генерируется, когда быстрая линия EMA пересекает линию медленной EMA. Она относится к типичной стратегии тренда. В то же время стратегия использует индикатор ATR для установки динамического стоп-лосса для контроля рисков при одновременном обеспечении прибыли.

Принцип стратегии

  1. Определить быстрый период EMA как 13 и медленный период EMA как 48.
  2. При пересечении линией быстрой EMA над линией медленной EMA генерируется сигнал покупки; при пересечении линии быстрой EMA ниже линии медленной EMA генерируется сигнал продажи.
  3. Используйте функции ta.crossover и ta.crossunder для определения золотого креста и смертного креста скользящих средних.
  4. Используйте индикатор ATR для расчета динамического стоп-потеря, который находится в 1,5 раза дальше от ATR от закрытия.
  5. Интуитивно отображать торговые сигналы и уровни остановки потери через изменения цвета, маркировки покупки/продажи и линии остановки потери.

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

  1. Сигналы генерируются на основе EMA золотой крест и смерть крест, который избегает пропуска основных рыночных тенденций и доходность является значительной.
  2. ATR Trailing Stop Loss обеспечивает адекватную прибыль, следующую за трендом, контролируя прибыль, достигая сбалансированного соотношения риск-прибыль.
  3. Интуитивно понятный дисплей сигнала и дисплей стоп-потери, легкий в эксплуатации, подходящий для большинства людей.
  4. Немногие регулируемые параметры, легко понять и оптимизировать.

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

  1. Вспышки могут привести к остановке.
  2. Частые недействительные сигналы могут возникать на рыночных диапазонах.
  3. Неправильное настройка параметров может привести к чрезмерно агрессивному вхождению или свободному стоп-потерю.
  4. Параметры EMA и ATR требуют надлежащей оптимизации.

Решения:

  1. Соответственно ослабите ATR-множитель, чтобы оставить немного буфера от недавних максимумов.
  2. Рассмотрим механизмы подтверждения после появления сигнала, такие как прерывание предыдущего максимума цены и т.д.
  3. Оптимизация параметров должна учитывать различные рыночные условия.

Руководство по оптимизации

  1. Испытайте различные комбинации параметров, чтобы найти оптимальные параметры.
  2. Для улучшения качества сигнала следует рассмотреть возможность добавления других показателей фильтрации сигнала, таких как показатели объема, волатильности и т.д.
  3. Корректировать параметры EMA в соответствии с основными тенденциями, чтобы лучше отображать основные тенденции.
  4. Подумайте о динамической корректировке множителя остановочных потерь ATR для расширения диапазона остановок во время тренда на рынках.
  5. Включить алгоритмы машинного обучения для адаптивной оптимизации параметров.

Заключение

Стратегия относительно проста и проста в использовании. Она генерирует сигналы на основе EMA кроссоверов, следует за трендом и использует ATR отслеживания стоп-лосса для эффективного контроля рисков. Хотя могут быть некоторые ложные сигналы, она имеет сильные возможности в захвате основных тенденций и доходность относительно стабильна.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
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/
// © byee322

/// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss
//@version=5
strategy("EMA Strategy with ATR Stop Loss", overlay=true)

// Define the EMA lengths as input parameters
emaLength1 = input(13, "EMA Length 1")
emaLength2 = input(48, "EMA Length 2")

// Define the moving averages
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Buy signal: EMA 1 crosses above EMA 2
buy = ta.crossover(ema1, ema2)

// Sell signal: EMA 1 crosses below EMA 2
sell = ta.crossunder(ema1, ema2)

// Define the state variable
state = 0
state := buy ? 1 : sell ? -1 : nz(state[1])

// Change the color of the candles
color = state == 1 ? color.green : state == -1 ? color.red : na

// Plot the colored candles
plotcandle(open, high, low, close, color=color)

// Plot the signals on the chart with text labels
plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy")
plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell")

// Calculate the ATR
atrVal = ta.atr(14)

// Calculate the stop loss level for buy
stopLossBuy = buy ? close[1] - 1.5 * atrVal : na

// Calculate the stop loss level for sell
stopLossSell = sell ? close[1] + 1.5 * atrVal : na

// Plot the stop loss level for buy
plot(stopLossBuy,  color=color.new(color.green, 50), linewidth=3)

// Plot the stop loss level for sell
plot(stopLossSell, color=color.new(color.red, 50), linewidth=3)

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Больше