Эта стратегия представляет собой следующую систему тренда, которая сочетает в себе индекс направленного движения (DMI) с средним истинным диапазоном (ATR). Основной механизм использует индикаторы DI + и DI- для определения направления и силы тренда рынка, используя ATR для динамических корректировок стоп-лосса и прибыли. Введение движущейся средней, фильтрующей тренд, еще больше повышает надежность сигнала.
Стратегия основывается на следующих основных механизмах:
Риск колебаний на рынке - может привести к последовательным остановкам на рынках с ограниченным диапазоном. Предложение: Добавить индикаторы колебаний для фильтрации или регулировать пороги параметров.
Риск сдвига - может иметь место значительный сдвиг в периоды высокой волатильности. Предложение: надлежащим образом расширить позиции стоп-лосса, чтобы удовлетворить скольжение.
Риск ложного прорыва - потенциальные ошибки в оценке в переломные моменты тренда. Предложение: включите индикаторы объема для подтверждения сигнала.
Чувствительность параметров - производительность значительно варьируется с различными комбинациями параметров. Предложение: Найдите стабильные диапазоны параметров посредством обратного тестирования.
Оптимизация сигнала - рассмотреть возможность внедрения индикатора ADX для оценки силы тренда или добавления механизмов подтверждения объема.
Управление позициями - внедрение динамического размещения позиций на основе силы тренда для более точного контроля рисков.
Временная структура - рассмотреть анализ многочасовых рамок для повышения надежности сигнала.
Приспособляемость рынка - Разработка адаптивных механизмов корректировки параметров, основанных на различных характеристиках инструментов.
Эта стратегия обеспечивает динамическое следование тенденциям и контроль рисков путем сочетания индикаторов направленности и волатильности. Дизайн стратегии подчеркивает практичность и оперативность, демонстрируя сильную адаптивность рынка. Благодаря оптимизации параметров и улучшению сигналов есть место для дальнейшего улучшения. Инвесторам рекомендуется тщательно тестировать и вносить конкретные корректировки на основе рыночных характеристик до реализации.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("使用 DI+ 和 DI- 的策略 (最終完整修正且含圖表止損止盈線)", overlay=true) // 輸入參數 diLength = input.int(title="DI 長度", defval=14) adxSmoothing = input.int(title="ADX Smoothing", defval=14) trendFilterLength = input.int(title="趨勢過濾均線長度", defval=20) strengthThreshold = input.int(title="趨勢強度門檻值", defval=20) atrLength = input.int(title="ATR 長度", defval=14) atrMultiplierStop = input.float(title="ATR 停損倍數", defval=1.5) atrMultiplierTakeProfit = input.float(title="ATR 止盈倍數", defval=2.5) // 計算 DI+ 和 DI- [diPlus, diMinus, _] = ta.dmi(diLength, adxSmoothing) // 計算趨勢過濾均線 trendFilterMA = ta.sma(close, trendFilterLength) // 判斷趨勢方向和強度 strongUpTrend = diPlus > diMinus + strengthThreshold and close > trendFilterMA strongDownTrend = diMinus > diPlus + strengthThreshold and close < trendFilterMA // 計算 ATR atr = ta.atr(atrLength) // 追蹤止損止盈價格 (使用 var 宣告,只在進場時更新) var float longStopPrice = na var float longTakeProfitPrice = na var float shortStopPrice = na var float shortTakeProfitPrice = na // 進場邏輯 longCondition = strongUpTrend shortCondition = strongDownTrend if (longCondition) strategy.entry("多單", strategy.long) longStopPrice := close - atr * atrMultiplierStop // 進場時計算並更新止損價 longTakeProfitPrice := close + atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價 if (shortCondition) strategy.entry("空單", strategy.short) shortStopPrice := close + atr * atrMultiplierStop // 進場時計算並更新止損價 shortTakeProfitPrice := close - atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價 // 出場邏輯 (使用 time 限制和 ATR) inLongPosition = strategy.position_size > 0 inShortPosition = strategy.position_size < 0 lastEntryTime = strategy.opentrades.entry_bar_index(strategy.opentrades - 1) if (inLongPosition and time > lastEntryTime) strategy.exit("多單出場", "多單", stop=longStopPrice, limit=longTakeProfitPrice) if (inShortPosition and time > lastEntryTime) strategy.exit("空單出場", "空單", stop=shortStopPrice, limit=shortTakeProfitPrice) // 繪製 DI+、DI- 和趨勢過濾均線 plot(diPlus, color=color.green, title="DI+") plot(diMinus, color=color.red, title="DI-") plot(trendFilterMA, color=color.blue, title="趨勢過濾均線") // 繪製止損止盈線 (使用 plot 函數繪製) plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多單停損") plot(strategy.position_size > 0 ? longTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多單止盈") plot(strategy.position_size < 0 ? shortStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空單停損") plot(strategy.position_size < 0 ? shortTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空單止盈")