Стратегия пересечения скользящих средних

MA SMA
Дата создания: 2024-04-30 17:33:09 Последнее изменение: 2024-04-30 17:33:09
Копировать: 1 Количество просмотров: 644
1
Подписаться
1617
Подписчики

Стратегия пересечения скользящих средних

Обзор

Эта стратегия использует два скользящих средних ((MA) для создания торгового сигнала. Когда MA с более коротким периодом проходит через MA с более длинным периодом снизу вверх, генерируется сигнал покупки; когда MA с более коротким периодом проходит через MA с более длинным периодом вверх вниз, генерируется сигнал продажи. Эта стратегия одновременно устанавливает временные рамки торговли (от 8 до 20 часов по времени UTC) и точки остановки (от 150 пунктов).

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

  1. Вычислить скользящую среднюю за два различных цикла (по умолчанию 5 и 20 циклов).
  2. Оценить, будет ли более короткий период MA вверх/вниз по отношению к более длинному периоду MA, чтобы использовать его в качестве сигнала покупки/продажи.
  3. Настройка торгового периода с 8:00 до 20:00 по времени UTC.
  4. Определить, закрываются ли последние 4 K-линии выше/ниже MA, чтобы подтвердить тренд.
  5. Если вы выполняете условия покупки/продажи, открывайте позицию и установите стоп-пойнт в 150 пунктов.

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

  1. Использование двух различных циклов MA позволяет эффективно улавливать тренды, применительно к трендовым рынкам.
  2. Настройка торговых периодов позволяет избежать торговли в периоды низкой ликвидности и снизить риск.
  3. По оценке того, закрываются ли последние 4 K-линии выше/ниже MA, можно подтвердить тренд и повысить надежность сигнала.
  4. Установка фиксированных точек остановки позволяет эффективно блокировать прибыль и контролировать риски.

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

  1. В условиях волатильности рынка эта стратегия может часто давать ошибочные сигналы и приводить к убыткам.
  2. Фиксированная остановка может ограничить возможности получения прибыли.
  3. Эта стратегия не включает в себя стоп-лосс, что может привести к значительному риску в случае резкого реверса.

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

  1. Для повышения надежности сигналов можно рассмотреть возможность внедрения дополнительных технических показателей, таких как RSI, MACD и т. д.
  2. Можно оптимизировать параметры стоп-стоп, например, с использованием динамического стоп-стоп или ATR-основанного стоп-стоп.
  3. Второе подтверждение торгового сигнала может быть выполнено с использованием информации о микроструктуре рынка, такой как поток заказов.
  4. Различные параметры могут быть настроены на различные состояния рынка (тенденции / колебания), что повышает адаптивность стратегии.

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

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

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

//@version=4
strategy("Moving Average Crossover Strategy", overlay=true)

// User-defined moving average periods
ma1Periods = input(5, title="First Moving Average Periods")
ma2Periods = input(20, title="Second Moving Average Periods")

// Calculate moving averages
ma1 = sma(close, ma1Periods)
ma2 = sma(close, ma2Periods)

// Plot moving averages
plot(ma1, color=color.red, linewidth=2, title="First Moving Average")
plot(ma2, color=color.blue, linewidth=2, title="Second Moving Average")

// Detect crossovers and crossunders
bullishCross = crossover(ma1, ma2)
bearishCross = crossunder(ma1, ma2)

// Define trading hours (8 AM to 2 PM UTC)
startHour = 8
endHour = 20
utcHour = hour(time, "UTC")
isMarketOpen = true

// Define profit target
profitTarget = 150

// Check if the price has closed above/below the MA for the past 4 bars
aboveMa = close[4] > ma1[4] and close[3] > ma1[3] and close[2] > ma1[2] and close[1] > ma1[1]
belowMa = close[4] < ma1[4] and close[3] < ma1[3] and close[2] < ma1[2] and close[1] < ma1[1]

// Create buy and sell signals
if (bullishCross and isMarketOpen and aboveMa)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", profit=profitTarget)
if (bearishCross and isMarketOpen and belowMa)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover", "Sell", profit=profitTarget)

// Plot shapes on crossovers
plotshape(series=bullishCross and isMarketOpen and aboveMa, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=bearishCross and isMarketOpen and belowMa, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")