В процессе загрузки ресурсов... загрузка...

Динамическая измененная по волатильности тенденция после стратегии, основанной на индикаторах DI с управлением остановкой ATR

Автор:Чао Чжан, Дата: 2025-01-06 16:18:01
Тэги:ДИДМИATRSMAМ.А.

img

Обзор

Эта стратегия представляет собой следующую систему тренда, которая сочетает в себе индекс направленного движения (DMI) с средним истинным диапазоном (ATR). Основной механизм использует индикаторы DI + и DI- для определения направления и силы тренда рынка, используя ATR для динамических корректировок стоп-лосса и прибыли. Введение движущейся средней, фильтрующей тренд, еще больше повышает надежность сигнала.

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

Стратегия основывается на следующих основных механизмах:

  1. Использует индикаторы DI+ и DI- для измерения направления и силы тренда.
  2. Включает движущуюся среднюю (SMA) фильтрации тренда в качестве инструмента подтверждения тренда.
  3. Использует индикатор ATR для динамического расчета уровней стоп-лосса и уровень получения прибыли, обеспечивая адаптацию управления рисками к различным рыночным условиям.
  4. Строго соблюдает ограничения по времени выполнения торгов, чтобы избежать чрезмерной частоты торгов.

Преимущества стратегии

  1. Сильная динамическая адаптация - достигает адаптации к волатильности рынка посредством ATR.
  2. Всеобъемлющий контроль рисков - внедряет динамические механизмы стоп-лосса и получения прибыли, основанные на волатильности.
  3. Высокая надежность сигнала - уменьшает количество ложных сигналов посредством перекрестной проверки нескольких индикаторов.
  4. Гибкие параметры - параметры стратегии могут быть оптимизированы для различных характеристик рынка.
  5. Ясная логика выполнения - точные условия входа и выхода облегчают реализацию в реальном мире.

Стратегические риски

  1. Риск колебаний на рынке - может привести к последовательным остановкам на рынках с ограниченным диапазоном. Предложение: Добавить индикаторы колебаний для фильтрации или регулировать пороги параметров.

  2. Риск сдвига - может иметь место значительный сдвиг в периоды высокой волатильности. Предложение: надлежащим образом расширить позиции стоп-лосса, чтобы удовлетворить скольжение.

  3. Риск ложного прорыва - потенциальные ошибки в оценке в переломные моменты тренда. Предложение: включите индикаторы объема для подтверждения сигнала.

  4. Чувствительность параметров - производительность значительно варьируется с различными комбинациями параметров. Предложение: Найдите стабильные диапазоны параметров посредством обратного тестирования.

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

  1. Оптимизация сигнала - рассмотреть возможность внедрения индикатора ADX для оценки силы тренда или добавления механизмов подтверждения объема.

  2. Управление позициями - внедрение динамического размещения позиций на основе силы тренда для более точного контроля рисков.

  3. Временная структура - рассмотреть анализ многочасовых рамок для повышения надежности сигнала.

  4. Приспособляемость рынка - Разработка адаптивных механизмов корректировки параметров, основанных на различных характеристиках инструментов.

Резюме

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


/*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="空單止盈")

Связанные

Больше