Импульс перемещающейся средней кроссоверной квантовой стратегии

Автор:Чао Чжан, Дата: 2024-01-26 11:39:26
Тэги:

img

Обзор

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

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

Ключевые показатели

  1. Движущиеся средние: быстрая (синяя линия) и медленная (красная линия).
  2. Объем: 24-часовой объем (фиолетовый) и 7-дневный средний объем (оранжевый)

Условия стратегии

Условия длительного въезда:

  1. Быстрый MA пересекает медленный MA
  2. 24-часовой объем менее 50% 7-дневного среднего объема

Условия для участия:

Быстрый MA пересекается ниже медленного MA

Входы и выходы

Длинный вход:Иди на длинный, когда удовлетворены длинные условия

Короткая запись:Сокращение, когда сокращенные условия выполнены.

Принимать прибыль и останавливать убытки:Указывается уровень прибыли и стоп-лосса для длинной позиции

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

  1. Сочетание цены и объема избегает ложного прорыва
  2. Ясные правила въезда и выезда
  3. Принимать прибыль и останавливать убытки для контроля риска

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

  1. Частая торговля со стратегией скользящей средней
  2. Ненадёжное качество данных объема
  3. Сверхоптимизация в настройке параметров

Улучшения:

  1. Корректировка параметров MA для снижения частоты торговли
  2. Проверка сигналов с помощью большего количества источников данных
  3. Строгое обратное тестирование для предотвращения чрезмерной оптимизации

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

  1. Добавление других показателей к фильтрующим сигналам
  2. Динамическая прибыль и стоп-лосс
  3. Анализ нескольких временных рамок для улучшения стабильности

Резюме

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


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA and Volume Strategy", overlay=true)

// Input parameters
fastLength = input(9, title="Fast MA Length")
slowLength = input(21, title="Slow MA Length")
volumePercentageThreshold = input(50, title="Volume Percentage Threshold")

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Calculate 24-hour volume and weekly volume average
dailyVolume = request.security(syminfo.tickerid, "D", volume)
weeklyVolumeAvg = ta.sma(request.security(syminfo.tickerid, "W", volume), 7)

// Strategy conditions
longCondition = ta.crossover(fastMA, slowMA) and dailyVolume < (weeklyVolumeAvg * volumePercentageThreshold / 100)
shortCondition = ta.crossunder(fastMA, slowMA)

// Set take profit and stop loss levels
takeProfitLong = close * 1.50
stopLossLong = close * 0.90

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot moving averages
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")

// Plot 24-hour volume and weekly volume average
plot(dailyVolume, color=color.purple, title="24-Hour Volume", transp=0)
plot(weeklyVolumeAvg, color=color.orange, title="Weekly Volume Average")

// Plot entry signals
plotshape(series=longCondition, title="Buy Signal", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Sell Signal", color=color.red, style=shape.triangledown, size=size.small)

// Plot take profit and stop loss levels only when a valid trade is active
plotshape(series=longCondition, title="Take Profit Long", color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=longCondition, title="Stop Loss Long", color=color.red, style=shape.triangledown, size=size.small)


Больше