Стратегия торговли импульсом на конец года, основанная на следовании за трендом (прорыв 60-дневной скользящей средней)

MA SMA SLOPE EMA ATR ROC
Дата создания: 2025-01-17 14:55:20 Последнее изменение: 2025-01-17 14:55:20
Копировать: 2 Количество просмотров: 363
1
Подписаться
1617
Подписчики

Стратегия торговли импульсом на конец года, основанная на следовании за трендом (прорыв 60-дневной скользящей средней)

Обзор

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

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

Стратегия основана на следующих основных элементах:

  1. Оценка тренда: используйте 60-дневную простую скользящую среднюю (SMA) в качестве индикатора для определения среднесрочного тренда и подтвердите направление тренда, рассчитав наклон 14-дневной скользящей средней.
  2. Сигнал на вход: когда цена пробивает 60-дневную скользящую среднюю вверх и наклон скользящей средней положительный, это указывает на то, что рынок может войти в восходящий тренд, и в это время генерируется сигнал на покупку.
  3. Механизм выхода: стратегия использует механизм выхода с фиксированным временем и закрывает все позиции в последний торговый день каждого года. Этот механизм позволяет эффективно избегать риска удержания позиций на протяжении многих лет.
  4. Управление временем торговли: стратегия имеет встроенные функции контроля диапазона торговых дат и оценки торговых дней, что гарантирует выполнение операций только в допустимые торговые дни.

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

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

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

  1. Гистерезис скользящей средней: Скользящая средняя имеет определенный гистерезис, который может привести к небольшой задержке во времени входа.
  2. Неприменимо на боковом и нестабильном рынке: На боковом и нестабильном рынке могут возникать частые ложные сигналы прорыва.
  3. Фиксированный риск ликвидации: принудительная ликвидация в конце года может привести к досрочному выходу из компании в хорошей тенденции.
  4. Чувствительность параметров: Эффект стратегии чувствителен к настройкам параметров, таким как период скользящей средней.

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

  1. Добавьте индикаторы подтверждения тренда: можно использовать такие индикаторы, как RSI и MACD, чтобы помочь оценить тренды и повысить точность входа на рынок.
  2. Оптимизируйте механизм выхода: вы можете добавить условия стоп-лосса и тейк-профита и не полагаться исключительно на время выхода.
  3. Параметры динамической корректировки: период скользящей средней можно динамически корректировать в соответствии с волатильностью рынка.
  4. Повысьте эффективность управления позициями: внедрите такие индикаторы, как ATR, для управления позициями с целью повышения эффективности использования капитала.

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

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

Исходный код стратегии
/*backtest
start: 2025-01-09 00:00:00
end: 2025-01-16 00:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("Buy above 60-day MA, Sell at year-end", overlay=true, pyramiding=1)

// Define inputs for start and end dates
startDate = input(defval=timestamp("2010-01-01"), title="Start Date")
endDate = input(defval=timestamp("2024-12-31"), title="End Date")

// Define 60-day moving average
length = input.int(defval=60, title="MA Length", minval=1)
ma = ta.sma(close, length)
slope = ta.sma(ma, 14) - ta.sma(ma, 14)[1]

// Check if current bar is within the specified date range
withinDateRange = true

// Function to check if a day is a trading day (Monday to Friday)
isTradingDay(day) => true

// Check if current bar is the last trading day of the year
// Check if current bar is the last trading day of the year
isLastTradingDayOfYear = false
yearNow = year(time)
if (month == 12 and dayofmonth == 31)
    isLastTradingDayOfYear := isTradingDay(time)
else if (month == 12 and dayofmonth == 30)
    isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000)
else if (month == 12 and dayofmonth == 29)
    isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) and not isTradingDay(time + 86400000 * 2)

// Plot moving average
plot(ma, color=color.blue, linewidth=2)

// Buy when closing price crosses above 60-day MA and up trend
if (withinDateRange and ta.crossover(close, ma) and slope > 0)
    strategy.entry("Buy", strategy.long)

// Sell all positions at the last trading day of the year
if (isLastTradingDayOfYear)
    strategy.close_all(comment="Sell at year-end")

// Plot buy and sell signals
//plotshape(series=ta.crossover(close, ma), location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
//plotshape(series=isLastTradingDayOfYear, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")