Estratégia de saída do Chandelier


Data de criação: 2024-01-05 15:57:51 última modificação: 2024-01-05 15:57:51
cópia: 2 Cliques: 1214
1
focar em
1664
Seguidores

Estratégia de saída do Chandelier

Visão geral

Esta estratégia usa o indicador de lanterna para determinar a direção e a intensidade da ruptura do preço, gerando sinais de compra e venda. Ela apenas executa operações de compra e venda.

Princípio da estratégia

A estratégia é baseada em um indicador de lanternas, o qual define uma linha de parada de acordo com o preço máximo, o preço mínimo e a amplitude real média do preço. Concretamente, a estratégia calcula a amplitude real média dos 22 dias e multiplica-a por um fator (default 3). De acordo com esse valor, a estratégia define uma linha de parada de perda longa e uma linha de parada de perda curta.

A estratégia apenas executa uma operação de compra e venda. Concretamente, ela gera um sinal de compra quando o preço quebra a última linha de parada de linha longa. Em seguida, gera um sinal de venda e liquidação quando o preço cai sobre a linha de parada de linha curta.

Análise de vantagens

  • A linha de perda de parada pode ser controlada de forma eficaz com o uso de indicadores de luz pendular para a configuração dinâmica
  • A combinação de breakouts de preços gera sinais de negociação que permitem capturar a tendência de preços.
  • A estratégia para evitar a inversão de tendências é apenas fazer compras e trocas.
  • Alerta de alerta com várias condições para monitorar o estado da política em tempo real

Análise de Riscos

  • Os indicadores de lanterna são sensíveis à amplitude de flutuação, podendo gerar sinais errados se houver uma flutuação de preço anormal.
  • A compra não foi efetivamente executada sem o controlo de risco de perda
  • Não há previsão para o rastreamento do stop loss e não há lucros para bloquear

A solução para o risco:

  1. Combinação de outros indicadores para filtragem de sinais e prevenção de falhas
  2. Estabeleça uma linha de stop loss para limitar a perda máxima
  3. Adição de um mecanismo de tracking stop, que pode considerar o ajuste dinâmico de uma linha de venda ou parcialmente fora de campo

Direção de otimização

  1. Pode testar diferentes configurações de parâmetros para otimizar o tempo de compra e venda
  2. A confirmação de outros indicadores pode ser adicionada para evitar sinais de falha
  3. Pode-se considerar comprar e vender simultaneamente.
  4. Pode-se configurar um mecanismo de parada e de parada

Resumir

Esta estratégia usa a linha de parada dinâmica do indicador de lanternas para identificar oportunidades de reversão de preço. Ela só compra quando o preço atravessa a linha de parada longa para cima e vende quando o preço atravessa a linha de parada curta, realizando uma estratégia simples de operação unilateral, evitando a reversão de ambos os lados da situação. A estratégia controla o risco de forma eficaz, mas não tem paradas e paradas.

Código-fonte da estratégia
/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit Strategy", overlay=true)

length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', 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

var color longColor = color.green
var color shortColor = color.red

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))

shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))

changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')

// Define initial capital
initial_capital =25

// Trigger buy order and close buy order on sell signal
if buySignal
    strategy.entry("Buy", strategy.long, qty = initial_capital / close)

if sellSignal
    strategy.close("Buy")