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

Динамическая поддержка Сопротивление Система торговли ценовыми действиями

Автор:Чао Чжан, Дата: 2024-12-04 15:19:00
Тэги:SRПА

img

Обзор

Эта стратегия представляет собой торговую систему, основанную на ценовом действии и динамических уровнях поддержки/сопротивления, выполняющую сделки вблизи ключевых уровней цен, когда возникают конкретные модели свечей. Система использует 16-периодный метод расчета динамической поддержки/сопротивления, в сочетании с четырьмя классическими шаблонами свечей-переворотов - Hammer, Shooting Star, Doji и Pin Bar, для улавливания потенциальных переворотов рынка. Стратегия использует фиксированные процентные уровни получения прибыли и стоп-лосса для управления рисками и использует параметр чувствительности для контроля строгости сигналов входа.

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

Основа стратегии заключается в динамическом расчете уровней поддержки и сопротивления для установления границ движения цен. Когда цена приближается к этим ключевым уровням, система ищет конкретные шаблоны свечей в качестве сигналов обратного движения. Условия входа требуют формирования шаблона в пределах 1,8% (чувствительность по умолчанию) уровней поддержки / сопротивления. Система реализует правило управления активами 35% с 16% стоп-лосом и 9,5% - прибылью, эффективно контролируя риск примерно на 5,6% от общего капитала на торговле. Стратегия реализована в Pine Script с полной функциональностью управления торговлей и визуализацией.

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

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

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

  1. Эффективность поддержки/сопротивления может снизиться на сильно волатильных рынках
  2. Относительно широкий стоп-лосс (16%) может привести к значительным потерям в условиях волатильности
  3. Настройки параметров чувствительности существенно влияют на частоту и точность торговли
  4. Опираясь исключительно на ценовые модели, можно упустить другие важные сигналы рынка
  5. Необходимость рассмотрения затрат на торговлю влияния на доходность стратегии

Руководство по оптимизации

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

Резюме

Эта стратегия торговли, основанная на ценовых действиях, предоставляет трейдерам систематический подход к торговле, сочетая динамические уровни поддержки / сопротивления с классическими шаблонами обратного движения.


/*backtest
start: 2024-11-26 00:00:00
end: 2024-12-03 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan

//@version=5
strategy("Price Action Strategy", overlay=true)

// Settings
length = input.int(16, title="Support and Resistance Length")
sensitivity = input.float(0.018, title="Sensitivity")

// Stop Loss and Take Profit
stop_loss_pct = input.float(16, title="Stop Loss percentage", minval=0.1) / 100
take_profit_pct = input.float(9.5, title="Take Profit percentage", minval=0.1) / 100

// Function to identify a Hammer
isHammer() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    body > 0 and lower_shadow > body * 2 and upper_shadow < body * 0.5 and price_range > 0

// Function to identify a Shooting Star
isShootingStar() =>
    body = open - close
    price_range = high - low
    lower_shadow = close - low
    upper_shadow = high - open
    body > 0 and upper_shadow > body * 2 and lower_shadow < body * 0.5 and price_range > 0

// Function to identify a Doji
isDoji() =>
    body = close - open
    price_range = high - low
    math.abs(body) < (price_range * 0.1)  // Doji has a small body

// Function to identify a Pin Bar
isPinBar() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    (upper_shadow > body * 2 and lower_shadow < body * 0.5) or (lower_shadow > body * 2 and upper_shadow < body * 0.5)

// Support and resistance levels 
support = ta.lowest(low, length)
resistance = ta.highest(high, length)

// Entry criteria
long_condition = (isHammer() or isDoji() or isPinBar()) and close <= support * (1 + sensitivity)
short_condition = (isShootingStar() or isDoji() or isPinBar()) and close >= resistance * (1 - sensitivity)

// Function to calculate stop loss and take profit (long)
calculate_levels(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 - stop_loss_pct)
    take_profit_level = avg_price * (1 + take_profit_pct)
    [stop_loss_level, take_profit_level]

// Function to calculate stop loss and take profit (short)
calculate_levels_short(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 + stop_loss_pct)
    take_profit_level = avg_price * (1 - take_profit_pct)
    [stop_loss_level, take_profit_level]

// Buy entry order with label
if (long_condition and strategy.opentrades == 0)
    strategy.entry("Buy", strategy.long)
    pattern = isHammer() ? "Hammer" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=low, text=pattern, color=color.green, textcolor=color.black, size=size.small)

// Sell entry order with label
if (short_condition and strategy.opentrades == 0)
    strategy.entry("Sell", strategy.short)
    pattern = isShootingStar() ? "Shooting Star" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=high, text=pattern, color=color.red, textcolor=color.black, size=size.small)

// Stop Loss and Take Profit management for open positions
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // Long position
        avg_price_long = strategy.position_avg_price  // Average price of long position
        [long_stop_level, long_take_profit_level] = calculate_levels(strategy.position_size, avg_price_long, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Long", from_entry="Buy", stop=long_stop_level, limit=long_take_profit_level)
    if (strategy.position_size < 0)  // Short position
        avg_price_short = strategy.position_avg_price  // Average price of short position
        [short_stop_level, short_take_profit_level] = calculate_levels_short(strategy.position_size, avg_price_short, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Short", from_entry="Sell", stop=short_stop_level, limit=short_take_profit_level)

// Visualization of Support and Resistance Levels
plot(support, title="Support", color=color.green, linewidth=2)
plot(resistance, title="Resistance", color=color.red, linewidth=2)






Связанные

Больше