
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.
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.
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.
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%).
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.
O uso de um indicador de corredor de Tangshou tem uma certa capacidade de captar situações de ruptura.
O que é que a China está a fazer?
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.
As regras da estratégia são claras, fáceis de entender e de implementar.
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.
O stop-loss fixo pode ser facilmente encaixado e deve ser ajustado de acordo com o alcance do stop.
A amplitude de ajuste do tracking stop loss pode ser facilmente atingida, e a frequência de ajuste deve ser equilibrada.
A configuração errada de parâmetros também pode afetar o desempenho da estratégia.
O comprimento do canal Tangshou pode ser otimizado para encontrar a melhor combinação de parâmetros.
Adição de módulos de gestão de posição, como o reposicionamento periódico do período de suspensão.
Combinando com outros indicadores, julgar tendências para evitar falsas rupturas de tendências.
Ativar a parada dinâmica e ajustar a posição de parada em tempo real.
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.
/*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)