Количественная торговая стратегия, основанная на прорыве Yiyun и индикаторе ADX


Дата создания: 2024-02-02 17:50:30 Последнее изменение: 2024-02-02 17:50:30
Копировать: 0 Количество просмотров: 412
1
Подписаться
1214
Подписчики

Количественная торговая стратегия, основанная на прорыве Yiyun и индикаторе ADX

Обзор

Название стратегии называется Quantitative Trading Strategy, основанная на Cloud Breakthrough и ADX Indicator. Она объединяет технический анализ Cloud Graph и средний трендовый индекс (ADX) для определения того, когда создавать позиции сверх или ниже. В частности, она создает позиции, когда цены прорывают облачный график, и ADX Indicator показывает сильную тенденцию.

Стратегический принцип

Стратегия использует диаграмму облаков в диаграмме ультразвука, чтобы определить ключевые зоны поддержки и сопротивления. Она одновременно сочетается с индикатором ADX, чтобы определить силу тренда. Конкретные правила стратегии торговли следующие:

Сигналы о многоголовном строительстве:

  • Антенна перевернута вверх через базовую линию
  • Замедленная линия поворота вверх по оси 0
  • Цены выше, чем на графике облаков
  • ADX ниже 45 (показывает, что тенденция не слишком расширилась)
  • +DI выше -DI ((показывает тенденцию к росту)

Сигналы о строительстве пустого склада:

  • Антенна перевернута вниз через базовую линию
  • Задержанная линия поворачивает вниз через 0-угол
  • Цены ниже по диаграмме облаков
  • ADX выше 45 ((показывает, что тенденция может измениться))
  • +DI ниже -DI (что указывает на тенденцию к снижению)

Анализ преимуществ

Эта стратегия, в сочетании с графическим техническим анализом и индикаторами трендового анализа, позволяет эффективно определять тенденции рынка и сильные зоны. Конкретные преимущества:

  1. Используйте график облака для определения ключевых областей поддержки и сопротивления, чтобы уловить сильные тенденции
  2. В сочетании с индексом ADX можно определить истинную силу тренда и избежать ошибочных сделок
  3. Правила ясные, простые в использовании, доступны на диске.

Риски и решения

Существуют также риски, связанные с нестабильностью, определяемой индексом ADX. Конкретные риски и способы их решения:

  1. ADX-расчет имеет задержку, может пропустить быстрый обратный ход. Можно соответствующим образом снизить параметры ADX, чтобы сделать его более чувствительным
  2. ADX не очень эффективен в шокирующих ситуациях. Можно добавить фильтры для других показателей, таких как BOLL-каналы и т. д.
  3. График в облаке может быть неработоспособным. Параметры могут быть скорректированы или добавлены дополнительные показатели.

Советы по оптимизации стратегии

Эта стратегия также может быть оптимизирована в следующих аспектах:

  1. Настройка графических параметров облака для большего количества сортов
  2. Увеличение стратегии по сдерживанию убытков и борьба с единичными потерями
  3. Сочетание большего количества индикаторов, образующих комбинацию индикаторов для фильтрации сигналов
  4. Добавление модуля прогнозирования моделей для дальнейшего определения эффектора сигналов тренда с использованием машинного обучения

Подвести итог

Эта стратегия в сочетании с облачным графическим техническим анализом и индикаторами определения тенденций ADX образует четкий и полный набор количественных торговых стратегий. Она определяет ключевые зоны поддержки и сопротивления, а также учитывает тенденции, чтобы эффективно использовать рыночные возможности.

Исходный код стратегии
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © Coinrule

//@version=5
strategy('Ichimoku Cloud with ADX (By Coinrule)',
         overlay=true,
         initial_capital=1000,
         process_orders_on_close=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=30,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)


// Stop Loss and Take Profit for Shorting
Stop_loss = input(1) / 100
Take_profit = input(5) / 100
longStopPrice = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


// Inputs
ts_bars = input.int(9, minval=1, title='Tenkan-Sen Bars')
ks_bars = input.int(26, minval=1, title='Kijun-Sen Bars')
ssb_bars = input.int(52, minval=1, title='Senkou-Span B Bars')
cs_offset = input.int(26, minval=1, title='Chikou-Span Offset')
ss_offset = input.int(26, minval=1, title='Senkou-Span Offset')
long_entry = input(true, title='Long Entry')
short_entry = input(true, title='Short Entry')

middle(len) => math.avg(ta.lowest(len), ta.highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = math.avg(tenkan, kijun)
senkouB = middle(ssb_bars)

// Plot Ichimoku Kinko Hyo
plot(tenkan, color=color.new(#0496ff, 0), title='Tenkan-Sen')
plot(kijun, color=color.new(#991515, 0), title='Kijun-Sen')
plot(close, offset=-cs_offset + 1, color=color.new(#459915, 0), title='Chikou-Span')
sa = plot(senkouA, offset=ss_offset - 1, color=color.new(color.green, 0), title='Senkou-Span A')
sb = plot(senkouB, offset=ss_offset - 1, color=color.new(color.red, 0), title='Senkou-Span B')
fill(sa, sb, color=senkouA > senkouB ? color.green : color.red, title='Cloud color', transp=90)

ss_high = math.max(senkouA[ss_offset - 1], senkouB[ss_offset - 1])
ss_low = math.min(senkouA[ss_offset - 1], senkouB[ss_offset - 1])


// ADX
[pos_dm, neg_dm, avg_dm] = ta.dmi(14, 14)


// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = ta.mom(close, cs_offset - 1) > 0
cs_cross_bear = ta.mom(close, cs_offset - 1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low

bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and avg_dm < 45 and pos_dm > neg_dm
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and avg_dm > 45 and pos_dm < neg_dm

strategy.entry('Long', strategy.long, when=bullish and long_entry and timePeriod)
strategy.close('Long', when=bearish and not short_entry)

strategy.entry('Short', strategy.short, when=bearish and short_entry and timePeriod)
strategy.close('Short', when=bullish and not long_entry)