Стратегия торговли давлением обратного канала Тан Сяо


Дата создания: 2024-01-24 15:07:18 Последнее изменение: 2024-01-24 15:07:18
Копировать: 0 Количество просмотров: 595
1
Подписаться
1617
Подписчики

Стратегия торговли давлением обратного канала Тан Сяо

Обзор

Обратная торговая стратегия под давлением на канале Тан-Шо является количественной торговой стратегией, основанной на индикаторе каналов Тан-Шо. Эта стратегия сочетает в себе остановку убытков и отслеживание убытков для управления риском.

Когда цена касается верхней и нижней границы каналов Тан-Шо, открывается дополнительная позиция, в то же время устанавливается стоп-лосс и стоп-стоп. Если произойдет стоп-лосс, то открытие новой позиции может быть приостановлено только через определенное время. Во время хранения позиции, чтобы заблокировать прибыль путем отслеживания стопа.

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

Стратегия использует 20-дневный индикатор коридора Тан-Шо, который включает в себя верхнюю, нижнюю и среднюю линии.

Логика открытия позиции

Открытие позиции при соприкосновении цены с нижней полосой; открытие позиции при соприкосновении цены с верхней полосой.

Если ранее произошла стоп-убыток, следует приостановить определенный цикл (например, 3 K-линии), чтобы избежать погони за драконом.

Логика остановки и остановки

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

take profit рассчитывается исходя из рисково-прибыльного соотношения (например, 2) и стоп-лосс процента (например, 22%).

Логика стоп-слежения

Включить слежение за убытками на этапе хранения:

При множественном позиционировании, если цена пересекает среднюю линию, то стоп-лост корректируется до средней точки между ценой входа и ценой средней линии.

При переходе через середину линии с пустой головой и поддержанием позиции, товарищ корректирует.

Стратегические преимущества

  1. Используя индикатор прохода Тан-Шоу, мы сможем зафиксировать прорывные события.

  2. Позиции, открытые под давлением, соответствуют принципу обратной торговли.

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

  4. Правила стратегии ясны, понятны и просты в применении.

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

  1. В качестве трендового индикатора, канал Тунь-Шо подвержен ложным прорывам, которые могут привести к убыткам.

  2. Фиксированный стоп легко поддается нажатию, следует соответствующим образом скорректировать диапазон стоп.

  3. Следующая стоп-коррекция может быть легко ударена, и частота коррекции должна быть сбалансирована.

  4. Неправильная настройка параметров также может повлиять на эффективность стратегии.

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

  1. Протяженность туннеля Тунь-Шо может быть оптимизирована для поиска оптимального сочетания параметров.

  2. Добавление модулей управления позицией, таких как регулярная перестановка периода приостановки.

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

  4. Включает динамическую остановку, изменяет положение остановки в реальном времени.

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

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

Исходный код стратегии
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Contrarian Donchian Channel Strategy - Touch Entry with Post-SL Pause and Trailing Stop", overlay=true, default_qty_value=0.01, default_qty_type=strategy.percent_of_equity)

// Inputs
length = input(20, minval=1, title="Donchian Channel Length")
riskRewardRatio = input(2, title="Risk/Reward Ratio")
stopLossPercent = input(0.22, title="Stop Loss (%)") / 100
pauseCandles = input(3, minval=1, title="Pause After SL (Candles)")

// Donchian Channel Calculation
upper = highest(high, length)
lower = lowest(low, length)
centerline = (upper + lower) / 2  // Calculating the Centerline

// Plotting Donchian Channel and Centerline
plot(upper, color=color.red, title="Upper Band")
plot(lower, color=color.green, title="Lower Band")
plot(centerline, color=color.blue, title="Centerline")

// Tracking Stop Loss Hits and Pause
var longSLHitBar = 0
var shortSLHitBar = 0
var int lastTradeDirection = 0 // 1 for long, -1 for short, 0 for none

// Update SL Hit Bars
if (strategy.position_size[1] > 0 and strategy.position_size == 0)
    if (close[1] < strategy.position_avg_price[1])
        longSLHitBar := bar_index
        lastTradeDirection := 1

if (strategy.position_size[1] < 0 and strategy.position_size == 0)
    if (close[1] > strategy.position_avg_price[1])
        shortSLHitBar := bar_index
        lastTradeDirection := -1

// Entry Conditions - Trigger on touch
longCondition = (low <= lower) and (bar_index - longSLHitBar > pauseCandles or lastTradeDirection != 1)
shortCondition = (high >= upper) and (bar_index - shortSLHitBar > pauseCandles or lastTradeDirection != -1)

// Trade Execution
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Initial Stop Loss and Take Profit Calculation
stopLoss = strategy.position_avg_price * (1 - stopLossPercent)
takeProfit = strategy.position_avg_price * (1 + stopLossPercent * riskRewardRatio)

// Trailing Stop Loss Logic
var float trailingStopLong = na
var float trailingStopShort = na

// Update Trailing Stop for Long Position
if (strategy.position_size > 0)
    if (close > centerline)
        trailingStopLong := (strategy.position_avg_price + centerline) / 2
    stopLoss := na(trailingStopLong) ? stopLoss : max(trailingStopLong, stopLoss)

// Update Trailing Stop for Short Position
if (strategy.position_size < 0)
    if (close < centerline)
        trailingStopShort := (strategy.position_avg_price + centerline) / 2
    stopLoss := na(trailingStopShort) ? stopLoss : min(trailingStopShort, stopLoss)

// Setting Stop Loss and Take Profit for each trade
strategy.exit("SL_TP_Long", "Long", stop=stopLoss, limit=takeProfit)
strategy.exit("SL_TP_Short", "Short", stop=stopLoss, limit=takeProfit)