Количественная стратегия отслеживания импульса с двойным пересечением скользящих средних

MA SMA EMA SMMA RMA WMA VWMA
Дата создания: 2024-11-27 15:06:57 Последнее изменение: 2024-11-27 15:06:57
Копировать: 1 Количество просмотров: 478
1
Подписаться
1617
Подписчики

Количественная стратегия отслеживания импульса с двойным пересечением скользящих средних

Обзор

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

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

В стратегии используются два уровня подсчета скользящих средних. Сначала вычисляется базовое скользящее среднее ((дифолтный цикл - 9), затем проводится вторичная гладкая обработка этой средней (дифолтный цикл - 5). В стратегии предлагается выбор из нескольких методов подсчета средних, включая простые скользящие средние (SMA), показательные скользящие средние (EMA), плоские скользящие средние (SMMA), весовые скользящие средние (WMA) и весовые скользящие средние (VWMA).

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

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

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

  1. На нестабильном рынке могут генерироваться частые торговые сигналы, что увеличивает транзакционные издержки.
  2. Есть определенная отсталость, которая может пропустить начало событий.
  3. Большие отступления могут произойти в условиях быстрого реверса
  4. Стратегия единых технических показателей, отсутствие оценки рыночной ситуации
  5. Слишком оптимизированные параметры могут привести к риску перенастройки

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

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

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

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

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

//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)

// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

// Calculate the Moving Average
out = ta.sma(src, len)

// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)

// Function to choose the type of moving average
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")

// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)

// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)

// Strategy Logic
if (ta.crossover(close, smoothingLine))
    strategy.entry("Buy", strategy.long)

if (ta.crossunder(close, smoothingLine))
    strategy.entry("Sell", strategy.short)