Количественная торговая стратегия на основе тройной экспоненциальной скользящей средней, следующей за трендом

EMA MA
Дата создания: 2024-11-29 16:54:41 Последнее изменение: 2024-11-29 16:54:41
Копировать: 2 Количество просмотров: 504
1
Подписаться
1617
Подписчики

Количественная торговая стратегия на основе тройной экспоненциальной скользящей средней, следующей за трендом

Обзор

Эта стратегия является стратегией отслеживания тенденций, основанной на трехмерных скользящих средних показателях (EMA). Стратегия захватывает рыночные тенденции с помощью перекрестных сигналов с быстрыми, средними и медленными тремя скользящими средними показателями, а также определяет направление тенденции, открывая многосторонние позиции только в восходящем тренде.

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

Стратегия использует индексные скользящие средние с тремя различными циклами: быстрая ЭМА (с 3 до 20 циклов), средняя ЭМА (с 21 до 60 циклов) и медленная ЭМА (с 130 циклов). Торговый сигнал основан на следующих условиях:

  1. Условия для участия: быстрая EMA через среднюю EMA, и средняя и медленная EMA имеют тенденцию к росту; или быстрая EMA через медленную EMA, и медленная EMA имеет тенденцию к росту.
  2. Условия выхода: Быстрая EMA с прохождением промежуточной EMA.
  3. Контроль риска: фиксированный стоп-лост 6%.
  4. Подтверждение тренда: направление тренда подтверждается путем расчета склонности средней и медленной ЭМА.

Стратегические преимущества

  1. Механизм многократного подтверждения: эффективно снижает ложные сигналы с помощью многократного подтверждения тройной средней линии и тенденционного уклона.
  2. Гибкость: быстрые и среднесрочные циклы EMA регулируются, что позволяет оптимизировать их для различных рыночных особенностей.
  3. Улучшенный контроль риска: используется фиксированная стоп-процентная доля, строго контролируется риск каждой сделки.
  4. Тренд-слежение четко: используйте средний скольжение, чтобы быть уверенным, что вы будете торговать только в четких восходящих тенденциях.
  5. Стандартизация исполнения: четкие и простые правила для процедурной реализации.

Стратегический риск

  1. Риск колебаний на рынке: часто могут возникать ложные сигналы на рынке с горизонтальными колебаниями.
  2. Риск отставания: скользящие средние по своей сути являются отстающими показателями, которые могут упустить первые возможности тренда.
  3. Параметрозависимость: оптимальные параметры могут изменяться в разных рыночных условиях.
  4. Риск остановки убытков: фиксированные остановки могут быть недостаточно гибкими в условиях высокой волатильности.
  5. Риск реверсии: в случае резкого изменения тренда может быть причинен большой убыток.

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

  1. Оптимизация динамических параметров: рекомендуется корректировать среднелинейный цикл в соответствии с динамикой рыночных колебаний.
  2. Фильтрация рыночных условий: увеличение показателей интенсивности тренда, избегание торговли в условиях слабого тренда.
  3. Оптимизация стоп-убытков: рассмотреть возможность внедрения динамической корректировки стоп-расстояний для показателей волатильности, таких как ATR.
  4. Управление позициями: увеличение динамического механизма управления позициями на основе рыночных колебаний.
  5. Оптимизация выхода: можно рассмотреть возможность увеличения целевых показателей прибыли или отслеживания механизмов стоп-лосса.

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

Стратегия является целостной, логически строгой системой отслеживания тенденций. Использование множества технических индикаторов в сочетании гарантирует надежность стратегии и обеспечивает достаточную гибкость. Хотя существует определенный простор для оптимизации, общая структура имеет хорошую практическую основу.

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Largo con Medias Móviles", overlay=true)

// Parámetros ajustables de las medias móviles
fast_length = input.int(10, title="Período de Media Rápida", minval=3, maxval=20)
mid_length = input.int(30, title="Período de Media Intermedia", minval=21, maxval=60)
slow_length = input.int(130, title="Período de Media Lenta (EMA 130)", minval=130)

// Calcular las medias móviles
fast_ma = ta.ema(close, fast_length)
mid_ma = ta.ema(close, mid_length)
slow_ma = ta.ema(close, slow_length) // Media lenta exponencial de 130 periodos

// Calcular la pendiente manualmente (restando el valor actual de la media móvil del valor de 1 barra anterior)
slope_ma130 = slow_ma - slow_ma[1]  // Pendiente de la media lenta
slope_mid_ma = mid_ma - mid_ma[1]   // Pendiente de la media intermedia

// Condición para pendiente positiva de la media lenta
slow_ma_trending_up = slope_ma130 > 0

// Condición para pendiente positiva de la media intermedia
mid_ma_trending_up = slope_mid_ma > 0

// Condiciones para entrada en largo (Cruce de la media rápida sobre la media intermedia, solo si la media intermedia tiene pendiente positiva y la media lenta también tiene pendiente positiva)
long_condition = ta.crossover(fast_ma, mid_ma) and mid_ma_trending_up and slow_ma_trending_up

// Condiciones para entrada adicional (Cruce de la media rápida sobre la media lenta, solo si la media lenta tiene pendiente positiva)
additional_long_condition = ta.crossover(fast_ma, slow_ma) and slow_ma_trending_up

// Condiciones para cierre de la posición (Cruce de la media rápida por debajo de la media intermedia)
exit_condition = ta.crossunder(fast_ma, mid_ma)

// Abrir la posición si se cumplen las condiciones (incluyendo las pendientes de las medias)
if (long_condition or additional_long_condition)
    strategy.entry("Comprar", strategy.long)

// Cerrar la posición si se cumplen las condiciones de salida
if (exit_condition)
    strategy.close("Comprar")

// Mostrar las medias móviles en el gráfico
plot(fast_ma, color=color.green, linewidth=1, title="EMA Rápida")
plot(mid_ma, color=color.orange, linewidth=1, title="EMA Intermedia")
plot(slow_ma, color=color.red, linewidth=2, title="EMA Lenta (130 Periodos)")