Эта стратегия сочетает в себе индикаторы импульса и двунаправленные индикаторы отслеживания для захвата сигналов прорыва в сильных тенденциях для отслеживания тренда.
Индикатор HiLo Activator рассчитывает цену средней точки с использованием средней точки самого высокого и самого низкого минимума. Когда цены выходят выше средней точки, генерируется сигнал покупки. Когда цены падают ниже средней точки, генерируется сигнал продажи.
Средний направленный индекс (ADX) используется для измерения силы тренда. Чем выше значение ADX, тем сильнее тренд. Эта стратегия использует ADX с порогом для фильтрации сигналов, генерируя сигналы только тогда, когда тренд достаточно силен.
Показатели направления DI+ и DI- представляют силу восходящего и нисходящего тренда соответственно.
Сигналы покупки генерируются, когда цены выходят выше средней точки, ADX выше порога, а DI+ выше порога. Сигналы продажи генерируются, когда цены падают ниже средней точки, ADX выше порога, а DI- выше порога.
Эта стратегия сочетает в себе преимущества динамики и индикаторов, следующих за трендом, чтобы зафиксировать ранние прорывы и внимательно следить за тенденциями.
По сравнению с использованием только индикаторов импульса, эта стратегия добавляет оценку силы тренда для фильтрации сигналов и повышения прибыльности.
В целом, стратегия может отслеживать тенденции плавно, своевременно входить и выходить, избегать застрятия в консолидациях и одновременно снижать убытки от перемены тренда.
Эта стратегия имеет некоторые риски, связанные с временными переломами цен, которые генерируют неправильные сигналы.
Чтобы уменьшить риски, настраивайте параметры активатора HiLo, чтобы увеличить диапазон прорыва.
Пользователи также должны отметить различия между продуктами и рыночной средой.
К основным способам оптимизации этой стратегии относятся:
Настроить период активации и уровень запуска, чтобы сбалансировать риски и время.
Настройка периода и порога ADX для сбалансирования качества и частоты сигнала.
Установление отдельных пороговых значений для DI+ и DI- для учета различий между восходящими и нисходящими тенденциями.
Добавить стратегии стоп-лосса с уровнем стоп-лосса для контроля одиночных потерь.
Комбинировать с другими вспомогательными показателями для улучшения общей стабильности.
Эта стратегия рассматривает как импульс, так и индикаторы тренда, чтобы генерировать сигналы во время сильных тенденций. Она имеет преимущество плавного и тесного следования тенденциям, подходящего для захвата ранних трендовых возможностей. Она также имеет разумные возможности контроля риска для уменьшения потерь от неправильных сигналов и ударов. С настройкой параметров и добавлением стоп-лосса она может достичь устойчивой производительности.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true) // Parameters for the HiLo Activator length_ha = input(14, title="HiLo Activator Period") offset_ha = input(0, title="Offset") trigger_ha = input(1, title="Trigger for Buy/Sell") // Parameters for ADX adx_length = input(14, title="ADX Period", minval=1) adx_threshold = input(25, title="ADX Threshold") di_threshold = input(50, title="DI Threshold") // Parameter for choosing the number of candles for backtest backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1) // Function to get backtest data getBacktestData() => var float data = na if bar_index >= backtest_candles data := security(syminfo.tickerid, "D", close[backtest_candles]) data // HiLo Activator calculations ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2 // ADX calculations trh = high - high[1] trl = low[1] - low tr = max(trh, trl) atr = sma(tr, adx_length) plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0 minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0 smoothed_plus_dm = sma(plus_dm, adx_length) smoothed_minus_dm = sma(minus_dm, adx_length) di_plus = 100 * (smoothed_plus_dm / atr) di_minus = 100 * (smoothed_minus_dm / atr) dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus) adx = sma(dx, adx_length) // Buy and Sell signals based on HiLo Activator and ADX signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold // Plot HiLo Activator and ADX plot(ha, color=color.blue, title="HiLo Activator") plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset") plot(adx, color=color.purple, title="ADX") // Backtest strategy strategy.entry("Buy", strategy.long, when = signalLong) strategy.entry("Sell", strategy.short, when = signalShort) strategy.close("Buy", when = signalShort) strategy.close("Sell", when = signalLong) // Accuracy percentage var accuracy = 0.0 var totalTrades = 0 var winningTrades = 0 if (signalLong or signalShort) totalTrades := totalTrades + 1 if (signalLong and (not na(signalLong[1]) and (not signalLong[1]))) winningTrades := winningTrades + 1 if (signalShort and (not na(signalShort[1]) and (not signalShort[1]))) winningTrades := winningTrades + 1 accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0 // Plot accuracy percentage on the chart plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)