Estratégia dinâmica de paragem

Autora:ChaoZhang, Data: 2024-02-27 15:02:34
Tags:

img

Resumo

Esta estratégia visa utilizar a função de stop de trailing da Bitmex para ajustar dinamicamente o preço de stop loss para paradas mais precisas e flexíveis. A estratégia não é usada para entradas ou saídas, mas sim fornece intervalos de stop loss razoáveis sob diferentes condições de mercado. Sugere-se fazer backtest com diferentes valores. A estratégia também pode ser integrada em estratégias existentes que fornecem entradas / saídas para atuar como stop loss.

Estratégia lógica

A estratégia utiliza principalmente 3 indicadores: preço mais alto, preço mais baixo e preço de fechamento.longoffsetpara uma longa distância de travagem e parada; eshortoffsetA distância longa por defeito é 228,5 pontos e a distância curta é 243,5 pontos.

Em seguida, a estratégia usa a seguinte lógica para ajustar o preço do trailing stoptrailstop:

  • Se o preço mais baixo da última vela é inferior ao preço de parada de trail da vela anterior, e o preço mais baixo da vela antes disso é superior ao preço de parada de trail das 2 velas anteriores, então o preço de parada de trail da vela atual = preço de fechamento + curta distância de parada de trail

  • Se o preço mais alto da última vela é maior do que o preço do trailing stop da vela anterior, e o preço mais alto da vela antes disso é menor do que o preço do trailing stop das 2 velas anteriores, então o preço do trailing stop da vela atual = preço de fechamento - longa distância de trailing stop

  • Se o preço mais alto da última vela é maior do que o preço de parada da vela anterior, então o preço de parada da vela atual = max ((preço de parada da vela anterior, preço mais alto da vela anterior - longa distância de parada da vela)

  • Se o preço mais baixo da última vela for menor do que o preço da vela anterior, então o preço da vela atual = min ((preço da vela anterior, preço mais baixo da vela mais recente + curta distância da vela)

  • Caso contrário, o preço de parada da vela atual = preço de fechamento

Este sistema ajusta dinamicamente o preço da parada de tração com base nas alterações dos preços de mercado mais altos e mais baixos para alcançar paradas dinâmicas.

Análise das vantagens

A maior vantagem desta estratégia é a implementação de paradas de tração verdadeiramente dinâmicas e flexíveis. Em comparação com os preços de stop loss fixos, o tracking dinâmico pode ajustar a faixa de stop loss com base nas flutuações do mercado, evitando perdas desnecessárias devido a distâncias de parada muito grandes, ao mesmo tempo em que evita ser parado por flutuações normais de preços quando a distância é muito pequena. Isso reduz as perdas desnecessárias, além de reduzir a probabilidade de paradas prematuras.

Outra vantagem é que a distância de stop loss é personalizável e otimizável. Os usuários podem escolher intervalos de stop loss adequados para si mesmos de acordo com as características de diferentes produtos e estilos de negociação. Isso permite que a estratégia seja aplicada a uma ampla gama de cenários.

Por último, a lógica de stop loss desta estratégia é simples e clara, fácil de entender e fácil de desenvolver e integrar em outras estratégias.

Análise de riscos

Os principais riscos desta estratégia são:

  1. As paradas dinâmicas só podem reduzir perdas em condições normais de mercado, mas não podem suportar grandes eventos ou condições extremas de mercado.

  2. Se a distância de parada traseira for definida de forma muito grande, pode levar a maiores perdas. Se for definida de forma muito pequena, pode parar prematuramente. A configuração precisa de testes e otimização cuidadosos com base nas características do produto.

  3. Nas primeiras velas após a abertura de uma posição, devido ao mecanismo de trailing stops, a distância de parada pode ser muito grande, representando algum risco adicional durante este período.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Optimização de parâmetros para diferentes produtos: Escolha distâncias razoáveis de parada de trail longo e curto com base na volatilidade, faixa intradiária e outras métricas para diferentes produtos.

  2. Reduzir o risco adicional nas velas iniciais após a abertura de posições: limitar o intervalo de ajuste das distâncias de parada traseiras nas primeiras velas para evitar distâncias muito grandes.

  3. Incorporar indicadores de volume de negociação: por exemplo, reduzir a distância de parada durante os aumentos de volume para evitar ser parado por arbitragem.

  4. Combinar com outras estratégias de entrada/saída: a principal função desta estratégia é a de trailing stop loss. Pode ser integrada com outras estratégias com regras de entrada e saída.

Conclusão

Esta estratégia implementa um stop loss dinâmico baseado em mudanças nos preços mais altos e mais baixos do mercado. Pode efetivamente reduzir perdas desnecessárias sob condições normais de mercado e resolver o problema de distâncias fixas serem muito grandes ou pequenas. As principais direções de otimização são testar parâmetros adequados em diferentes produtos e controlar os riscos nas velas iniciais após a abertura de posições. A lógica de stop loss é simples e clara, fácil de entender e integrar em outras estratégias ou usar isoladamente como uma ferramenta de stop loss.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//By River
strategy("BitMex Trailing Stop Strategy", overlay=true)
longoffset = input(defval=228.5, title="Long Trailing Stop Size", type=float, minval=0.5, maxval=1000, step=0.5)
shortoffset = input(defval=243.5, title="Short Trailing Stop Size ", type=float, minval=0.5, maxval=1000, step=0.5)

hiprice = request.security(syminfo.tickerid, "1", high)
loprice = request.security(syminfo.tickerid, "1", low)
price = request.security(syminfo.tickerid, "1", close)

trailstop = price
trailstop := (loprice <= trailstop[1] and loprice[1] >= trailstop[2]) ? price + shortoffset : ((hiprice >= trailstop[1] and hiprice[1] <= trailstop[2]) ? price - longoffset : (hiprice > trailstop[1] ? max(hiprice - longoffset, trailstop[1]) : (loprice < trailstop[1] ? min(loprice + shortoffset, trailstop[1]) : price)))

trailcol = trailstop > price ? red : green
plot(trailstop, color=trailcol)

longCondition =  trailcol == green
alertcondition(longCondition, "Long Stop alert", "BUY")
if (longCondition)
    strategy.entry("Long", strategy.long)
shortCondition = trailcol == red
alertcondition(shortCondition, "Short alert", "SELL")
if (shortCondition)
    strategy.entry("Short", strategy.short)



Mais.