Compra de descidas com take profit e stop loss

Autora:ChaoZhang, Data: 23 de janeiro de 2023 16:50:01
Tags:

img

Resumo

Esta estratégia compra a queda e obtém lucro para uma alta taxa de ganho rastreando dinamicamente os mínimos de preço, indo muito depois das quedas de preço e bloqueando lucros e controlando riscos através de adaptação de lucro e stop loss.

Princípios

A lógica central desta estratégia é usar o indicador ATR para calcular posições dinâmicas de take profit e stop loss. Especificamente, um sinal longo é acionado quando o preço de fechamento está abaixo da menor baixa dos últimos n dias (definido em 7 dias no código); durante as posições longas, os preços de take profit e stop loss serão calculados dinamicamente com base no indicador ATR (definido através de múltiplos ATR) e exibidos no gráfico em tempo real.

A estratégia combina a abordagem de compra mais simples com a ideia de stop loss/take profit dinâmico para captar oportunidades em tempo útil, controlando os riscos.

Vantagens

As principais vantagens desta estratégia são:

  1. O uso de indicadores ATR dinâmicos para definir stop loss e take profit pode ajustar os níveis de P/L com base na volatilidade do mercado, evitando perdas desnecessárias ou perdendo maiores oportunidades de lucro devido a stop loss/take profit excessivamente fixos.

  2. As estratégias de compra de queda tendem a ter taxas de ganho mais elevadas durante as consolidações de mercado, quando os preços caem abaixo dos níveis de suporte de forma anormal e é provável que se recuperem.

  3. A estimativa dos rácios take profit/stop loss através dos valores ATR é razoável e pode ser definida de forma flexível em função das condições de mercado e da tolerância pessoal ao risco.

  4. A lógica do código é simples e clara, fácil de entender. As configurações de parâmetros também são intuitivas. É adequado como uma estratégia exemplar para a aprendizagem.

Riscos

Os principais riscos desta estratégia são:

  1. Incapaz de determinar a amplitude e a força da recuperação após a queda. Existe o risco de as expectativas de lucro não atingirem o objetivo. Isso pode ser resolvido ajustando os parâmetros ATR para definir diferentes intervalos de lucro.

  2. O risco de ficarem presos em perdas quando os preços quebram os suportes e continuarem a cair, enfrentando uma perda maior.

  3. Os múltiplos de ATR devem ser definidos de forma mais frouxa para evitar paradas desnecessárias.

  4. Os riscos de sobreajuste do backtest são necessários para testes em diferentes condições de mercado, com configurações adequadas de deslizamento/comissão.

Reforço

A estratégia pode ser reforçada nos seguintes aspectos:

  1. Otimização do nível de suporte e determinação do sinal. Indicadores mais sofisticados como KDJ ou Bollinger Bands podem ser usados para julgar sinais de reversão de forma mais confiável.

  2. Optimizar as regras de dimensionamento das posições. Ajustar dinamicamente as dimensões das posições com base na volatilidade do mercado, etc.

  3. Implementar o módulo de stop loss de trailing, apertando as paradas após os preços avançarem por um certo intervalo, para bloquear lucros parciais.

  4. Adição de filtros de confluência: inserir longo somente se o setor correspondente/o amplo mercado também atingir o suporte, verificando a confiabilidade do sinal.

Conclusão

Esta estratégia capta oportunidades de reversão média através de quedas de compra, com take profit/stop loss para controle de risco.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © racer8
//@version=4
strategy("Buy-The-Dip", overlay=true)

atn = input(15, "ATR Period")
atr = sma(tr,atn)[1]
bought = strategy.position_size[0] > strategy.position_size[1]

slm = input(2.0,"ATR SL Multiple",minval=0)
StopPrice  = strategy.position_avg_price - slm*atr              // determines stop loss's price 
FixedStopPrice = valuewhen(bought,StopPrice,0)                  // stores original StopPrice  
plot(FixedStopPrice,"Stop Loss",color=color.red,linewidth=2,style=plot.style_cross)

tpm = input(1.0,"ATR TP Multiple",minval=0)
TakePrice  = strategy.position_avg_price + tpm*atr              // determines Take Profit's price 
FixedTakePrice = valuewhen(bought,TakePrice,0)                  // stores original TakePrice  
plot(FixedTakePrice,"Take Profit",color=color.green,linewidth=2,style=plot.style_cross)

nn = input(7,"Channel Length")
ll = lowest(low,nn)

if close<ll[1]
    strategy.entry("Buy",strategy.long)
if strategy.position_size > 0
    strategy.exit(id="XL SL", stop=FixedStopPrice, limit=FixedTakePrice)    // commands stop loss order to exit!

plot(ll,color=color.orange)

Mais.