Стратегия комбинации оптимизации тренда импульса

Автор:Чао Чжан, Дата: 2024-02-06 15:11:57
Тэги:

img

Обзор

Стратегия комбинации оптимизации тренда импульса является средне- и долгосрочной количественной торговой стратегией, которая сочетает в себе факторы импульса и тренда. Она генерирует сигналы купли и продажи с использованием комбинации экспоненциальных скользящих средних, скользящих средних, показателей объема и наклона. Стратегия оптимизирована для торговли 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)



Больше