Estratégia de negociação de pressão do canal Tang Xiao reverso


Data de criação: 2024-01-24 15:07:18 última modificação: 2024-01-24 15:07:18
cópia: 0 Cliques: 595
1
focar em
1617
Seguidores

Estratégia de negociação de pressão do canal Tang Xiao reverso

Visão geral

A estratégia de negociação de pressão inversa do canal de Tangshou é uma estratégia de negociação quantitativa baseada no indicador do canal de Tangshou. A estratégia combina suspensão de perda e rastreamento de perda para gerenciamento de risco.

Quando o preço toca a fronteira superior e inferior do canal Tangshou, a posição de abertura é mais livre, com a configuração de stop loss e stop loss. Se a parada ocorrer, a nova posição só pode ser aberta após um determinado período de tempo. Durante a detenção da posição, o lucro é bloqueado por meio do rastreamento de stop loss.

Princípio da estratégia

A estratégia usa o indicador de corredor Tangshou de 20 dias, que inclui o caminho superior, o caminho inferior e o caminho médio.

Lógica de abertura de posição

Quando o preço toca a trajectória inferior, abre-se uma posição maior; quando o preço toca a trajectória superior, abre-se uma posição vazia.

Se houver um stop loss antes da transação, é necessário suspender um determinado ciclo (por exemplo, 3 linhas K), evitando o rastreamento de dragões.

Stop Loss e Stop Logic

A cada abertura de posição, a stop loss e o take profit são ajustados de forma dinâmica.

O take profit é calculado com base no percentual de ganho de risco (por exemplo, 2) e no percentual de perda de parada (por exemplo, 22%).

Localização da lógica de stop loss

Ativar o tracking stop loss durante a fase de detenção:

Quando uma posição é mantida por várias pessoas, se o preço atravessar a linha média, ajuste o stop loss para o ponto médio entre o preço de entrada e o preço da linha média.

A posição de cabeça vazia passa pela linha do meio e o companheiro ajusta.

Vantagens estratégicas

  1. O uso de um indicador de corredor de Tangshou tem uma certa capacidade de captar situações de ruptura.

  2. O que é que a China está a fazer?

  3. Parar o prejuízo, suspender o prejuízo, evitar a caça ao dragão, traçar o prejuízo para bloquear o lucro, ter um bom gerenciamento de risco.

  4. As regras da estratégia são claras, fáceis de entender e de implementar.

Risco estratégico

  1. Como um indicador de tendência, o canal Tangshou é vulnerável a falsas rupturas na consolidação do mercado, o que pode levar a perdas.

  2. O stop-loss fixo pode ser facilmente encaixado e deve ser ajustado de acordo com o alcance do stop.

  3. A amplitude de ajuste do tracking stop loss pode ser facilmente atingida, e a frequência de ajuste deve ser equilibrada.

  4. A configuração errada de parâmetros também pode afetar o desempenho da estratégia.

Direção de otimização da estratégia

  1. O comprimento do canal Tangshou pode ser otimizado para encontrar a melhor combinação de parâmetros.

  2. Adição de módulos de gestão de posição, como o reposicionamento periódico do período de suspensão.

  3. Combinando com outros indicadores, julgar tendências para evitar falsas rupturas de tendências.

  4. Ativar a parada dinâmica e ajustar a posição de parada em tempo real.

Resumir

A estratégia de negociação de pressão de reversão do canal Tangshou integra várias funções, como o julgamento de tendências, o gerenciamento de riscos e outras funções, e os fundamentos são completos. Através da otimização contínua dos parâmetros e da combinação com outros indicadores ou modelos, a robustez da estratégia pode ser aumentada e a taxa de retorno pode ser melhorada.

Código-fonte da estratégia
/*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)