Комбинированная стратегия оптимизации тренда Momentum


Дата создания: 2024-02-06 15:11:57 Последнее изменение: 2024-02-06 15:11:57
Копировать: 4 Количество просмотров: 756
1
Подписаться
1617
Подписчики

Комбинированная стратегия оптимизации тренда Momentum

Обзор

Движущаяся стратегия по оптимизации комбинации трендов - это стратегия количественной торговли средней и длинной линии, которая сочетает в себе динамический фактор и фактор тренда, чтобы генерировать сигналы покупки и продажи с помощью комбинации индикаторов с движущимися средними, движущимися средними, объемом сделки и индикаторами наклонности. Эта стратегия оптимизирована для торгов T+1 и подходит только для многосторонних действий.

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

Стратегия использует 6-дневную простую подвижную среднюю и 35-дневную простую подвижную среднюю для определения двух подвижных средних. Линия покупок определяется как 2-дневная индексная подвижная средняя, а линия продаж - как скольжение, рассчитанное на основе цены закрытия за последние 8 дней. Кроме того, в качестве индикатора объема сделок определяется 20-дневная индексная подвижная средняя.

При закрытии акций, когда цена выше 35-дневного скользящего среднего значения, а объем торгов выше 20-дневного среднего значения, и при проверке по неделям как многообещающий рынок, с нижней золотой крестовой стороны вызывается сигнал покупки; наоборот, с верхней мертвой крестовой стороны вызывается сигнал продажи.

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

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

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

По результатам ретроспективного анализа, общая доходность стратегии достигла 128,86%, имея очень значительный альфа. В то же время, победная доля стратегии достигла 60,66%, что свидетельствует о стабильности эффекта стратегии.

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

Несмотря на оптимизацию механизмов управления рисками, существуют определенные риски, о которых следует помнить. В частности, основные риски включают:

  1. Риск вывода. С максимального убытка в $222,021.46, выявленный в одном, стратегический риск вывода более велик. Это связано с несовершенным механизмом управления позициями.

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

  3. Риск изменения рыночной обстановки. В случае существенных изменений в макрорынковой обстановке, параметры стратегии могут потребовать корректировки, чтобы оставаться в силе.

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

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

  1. С точки зрения максимального убытка, можно еще больше оптимизировать механизм управления позициями, внедряя модуль “стоп-лосс”, чтобы контролировать масштабы одиночных убытков.

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

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

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fzj20020403

////@version=5
//@version=5
strategy("Optimized Zhaocaijinbao", overlay=true, margin_long=100, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Define two moving averages
ma6 = ta.sma(close, 6)
ma35 = ta.sma(close, 35)

// Define buy and sell signal lines
buyLine = ta.ema(close, 2)
sellSlope = (close - close[8]) / 8
sellLine = sellSlope * 1 + ta.sma(close, 8)

// Define volume indicator
volumeEMA = ta.ema(volume, 20)

// Define weekly slope factor
weeklyMa = ta.sma(close, 50)
weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0

// Generate buy and sell signals
buySignal = ta.crossover(buyLine, sellLine) and close > ma35 and volume > volumeEMA and weeklySlope
sellSignal = ta.crossunder(sellLine, buyLine)

// Define dynamic position sizing factor
equity = strategy.equity
maxPositionSize = equity * input.float(title='Max Position Size (%)', defval=0.01, minval=0.001, maxval=0.5, step=0.001)
riskFactor = input.float(title='Risk Factor', defval=2.0, minval=0.1, maxval=10.0, step=0.1)
atr = ta.atr(14)
positionSize = maxPositionSize * riskFactor / atr

// Define position status
var inPosition = false

// Define buy and sell conditions
buyCondition = buySignal and not inPosition
sellCondition = sellSignal and inPosition

// Perform buy and sell operations
if (buyCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    inPosition := true
if (sellCondition)
    strategy.close("Long")
    inPosition := false

// Draw vertical line markers for buy and sell signals
plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small)

// Draw two moving averages
plot(ma6, color=color.blue)
plot(ma35, color=color.orange)

// Draw volume indicator line
plot(volumeEMA, color=color.yellow)

// Define stop loss and take profit
stopLoss = strategy.position_avg_price * 0.5
takeProfit = strategy.position_avg_price * 1.25

if inPosition
    strategy.exit("Long Stop Loss", "Long", stop=stopLoss)
    strategy.exit("Long Take Profit", "Long", limit=takeProfit)