Стратегия комбинации оптимизации тренда импульса является средне- и долгосрочной количественной торговой стратегией, которая сочетает в себе факторы импульса и тренда. Она генерирует сигналы купли и продажи с использованием комбинации экспоненциальных скользящих средних, скользящих средних, показателей объема и наклона. Стратегия оптимизирована для торговли T + 1 и подходит только для длинных позиций. Оптимизации также применимы к международным фондовым рынкам.
Стратегия использует 6-дневную простую скользящую среднюю и 35-дневную простую скользящую среднюю для определения двух скользящих средних. Линия сигнала покупки определяется как 2-дневная экспоненциальная скользящая средняя, а линия сигнала продажи рассчитывается на основе наклона за последние 8 цен закрытия. Кроме того, 20-дневная экспоненциальная скользящая средняя объема определяется как индикатор объема.
Когда цена закрытия выше, чем 35-дневная скользящая средняя, объем торгов выше, чем 20-дневный средний объем торгов, а еженедельная проверка показывает бычий рынок, золотой крест снизу запускает сигнал покупки.
Для управления рисками стратегия вводит механизм динамической корректировки позиции. Фактическая позиция рассчитывается на основе собственного капитала счета, максимального коэффициента позиции, ATR и фактора риска. Это помогает контролировать максимальное использование стратегии.
Стратегия сочетает в себе факторы импульса и фильтрацию тренда, которые могут эффективно определить средне- и долгосрочные направления. В то же время, фильтрация шума также предусмотрена для предотвращения ложных сигналов на волатильных рынках. Кроме того, внедрение механизмов управления рисками также позволяет надлежащим образом контролировать максимальные снижения, обеспечивая таким образом надежность стратегии.
По результатам обратного теста общая доходность стратегии достигла 128,86%, с очень значительным Альфа. В то же время показатель выигрыша стратегии также достиг 60,66%, что отражает стабильность эффекта стратегии.
Несмотря на то, что сама стратегия была оптимизирована для механизмов управления рисками, все еще существуют некоторые риски, на которые необходимо обратить внимание.
Риск вывода. Из одного крупнейшего убытка в 222 021,46 юаней можно увидеть, что амплитуда ретракцерации стратегии велика. Это связано с несовершенным механизмом управления позицией.
Риск стабильности сигнала. Сигнал стратегии может быть затронут особыми факторами отдельных акций, что приводит к ложным сигналам. Это окажет определенное влияние на доходность стратегии.
Риск изменения рыночной среды: если макрорыночная среда значительно меняется, параметры стратегии могут потребоваться корректировать, чтобы сохранить эффект.
Согласно вышеуказанному анализу рисков, эта стратегия все еще необходима и возможна для оптимизации.
Судя по максимальному убытку, механизм управления позициями может быть дополнительно оптимизирован путем внедрения модуля стоп-лосса для контроля величины единичных потерь.
Подумайте о добавлении дополнительных показателей фильтрации для выявления некоторых особых феноменов запасов и снижения вероятности ложных сигналов.
Продолжать обратное тестирование и проверку параметров стратегии и своевременно корректировать параметры на основе изменений рыночных условий.
Стратегия комбинации оптимизации тренда импульса является средне- и долгосрочной количественной торговой стратегией, которая сочетает в себе факторы импульса и фильтрацию тренда и специально оптимизирована для торговли 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)