
A estratégia usa o pensamento do trailing stop dinâmico, com base no ATR e no valor máximo do preço para calcular a linha de parada de uma posição curta e longa. Combinando a ideia do Chandelier Exit, com base na direção da linha de parada para julgar a direção da posição curta e longa. Quando a linha de parada se rompe para cima, julgue-a como pessimista e faça mais; quando a linha de parada se rompe para baixo, julgue-a como pessimista e faça zero.
A estratégia tem a dupla função de julgar sinais de parada e de entrada.
A estratégia é composta por:
Computação em tempo real do ATR com base no comprimento do ciclo ATR e no múltiplo definido pelo usuário. Em seguida, computação de uma linha de parada de longo e curto prazo com base no ATR e no valor máximo do preço:
longStop = 最高价 - ATR
shortStop = 最低价 + ATR
Comparando a linha de parada de uma linha K anterior com a linha de parada de uma linha K atual. Se a linha de parada de uma linha K atual for quebrada, um sinal de negociação será emitido:
长仓止损线上方突破,做多
短仓止损线下方突破,做空
A distância de stop loss e a distância de parada são calculadas a partir do ATR, de acordo com o RRR definido pelo usuário. O que você pode fazer é colocar um Stop Loss e um Stop Loss ao abrir uma posição.
A estratégia tem as seguintes vantagens:
A estratégia utiliza um traçado dinâmico das linhas de stop loss, que permite a parada em tempo real e o controle do risco de queda.
A estratégia de Stop Loss Line simplifica a lógica da estratégia, ao mesmo tempo em que serve como critério de entrada.
O que é mais lucrativo, de acordo com a relação de risco-retorno estabelecida.
A estrutura da estratégia é simples, fácil de entender e otimizada para expansão.
A estratégia também apresenta alguns riscos:
A estratégia é uma estratégia de negociação bilateral, assumindo simultaneamente o risco de fazer mais e o risco de fazer menos.
A configuração do parâmetro ATR afeta diretamente a linha de stop loss e a frequência de negociação. A configuração inadequada pode levar a um stop loss muito relaxado ou a uma frequência de negociação muito alta.
Esta estratégia é mais adequada para situações de brechas após a correção da linha média, e não para cenários de tendência muito forte.
Para os riscos acima mencionados, pode-se otimizar a partir de:
Combine os indicadores de tendência, como a MA, para avaliar a tendência do mercado e evitar negociações adversas.
Optimizar os parâmetros ATR e os parâmetros de relação de risco-retorno para tornar o stop loss e o stop loss mais racionais.
Aumentar a filtragem de volume de transações ou de indicadores de volatilidade para garantir a qualidade das transações.
A estratégia ainda tem espaço para ser melhorada:
A utilização de modelos de aprendizagem de máquina para a previsão de tendências de preços e melhoria da precisão de entrada.
Utilize a volatilidade dos preços das variedades de cobertura de opções para construir um portfólio de arbitragem sem risco.
Arbitragem estatística entre os diferentes mercados e as diferentes variedades para obter um Alfa estável.
A estratégia de retrocesso e a negociação em disco são efetivamente executadas através de um mecanismo de negociação algorítmico.
Este artigo analisa em profundidade uma estratégia de negociação quantitativa baseada em stop loss de rastreamento dinâmico. Esta estratégia possui simultaneamente o gerenciamento de stop loss e o julgamento de sinais de negociação, o que permite controlar o risco de forma eficaz. Também analisamos os benefícios da estratégia, os riscos possíveis e as ideias de otimização subsequentes.
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)
// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)
// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr
// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1
// Entry Signals
if (longCondition)
strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)
midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)
fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')
// Alerts
if (dir != dir[1])
strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")