A ideia principal desta estratégia é traçar o preço de entrada e o preço de equilíbrio após a abertura de uma posição, para exibir visualmente o nível de preço onde uma quebra acima do preço de entrada resultaria em lucro.
O código entra em longo quando ocorre o crossover da SMA e entra em curto na crossunder da SMA. Em seguida, ele calcula o preço de entrada e o preço de equilíbrio após as taxas. O preço de equilíbrio é calculado como: para longo, preço de equilíbrio = preço de entrada * (1 + taxas); para curto, preço de equilíbrio = preço de entrada * (1 - taxas). Finalmente, traça a linha de preço de entrada e a linha de preço de equilíbrio, preenchendo a área entre eles.
Desta forma, uma vez que o preço atravessa a linha de preço de entrada, significa que o comércio agora é lucrativo. Os comerciantes podem usar a linha de equilíbrio para definir níveis de lucro ou stop loss para bloquear lucros.
Os principais componentes do código são:
Com verificações de condições simples para a entrada, cálculo do preço de equilíbrio e traçamento de linhas auxiliares, a estratégia de preços de equilíbrio é implementada.
As vantagens desta estratégia incluem:
Display intuitivo de lucro/perda, pode julgar rapidamente se o preço atingiu a meta de lucro.
Pode utilizar a linha de equilíbrio para definir os níveis de lucro/stop loss para evitar o aumento das perdas.
Código simples e fácil de entender, fácil de implementar e ajustar.
Pode ser incorporado nas próprias estratégias de negociação, utilizando a linha de equilíbrio para gerir posições.
Fácil de modificar os parâmetros das taxas para diferentes bolsas e produtos.
Pode otimizar a entrada ajustando os períodos de SMA.
Os riscos desta estratégia incluem:
A SMA tem uma natureza atrasada, pode perder mudanças de preço.
A linha de equilíbrio não pode evitar completamente as perdas.
Não há mecanismo de saída, os comerciantes precisam monitorar o P/L.
A configuração incorreta das taxas pode provocar um cálculo incorreto do ponto de equilíbrio.
O deslizamento não é considerado.
Sem stop loss, pode levar a grandes perdas.
As soluções são:
Considere indicadores mais sensíveis como o MACD.
Adicionar indicador de tendência para evitar transações contra tendência.
Adicione a lógica de lucro e stop loss para saídas automáticas.
Fixar taxas precisas com base na troca real.
Adicionar deslizamento fixo para entradas e saídas ideais.
Adicionar stop loss para limitar a perda máxima.
Algumas maneiras de otimizar a estratégia:
Substitua o SMA por indicadores mais avançados como o MACD ou o KDJ.
Adicionar filtro de tendência para evitar negociações contra tendência.
Otimizar os períodos SMA para uma melhor precisão de entrada.
Adicione a lógica de lucro e stop loss para saídas automáticas.
Configurar deslizamento para backtest e negociação ao vivo.
Otimizar as configurações de taxas para corresponder à realidade.
Adicionar stop loss para limitar a perda máxima.
Execute a estratégia em vários prazos para a diversificação.
Incorporar alterações de volume para melhorar a entrada.
Usar machine learning para otimizar parâmetros.
Esta estratégia exibe intuitivamente o nível de preço de equilíbrio onde uma ruptura pode resultar em lucros. É uma estratégia auxiliar simples e prática com vantagens como código simples e implementação fácil. Mas os riscos também precisam ser abordados. Podemos otimizá-lo de muitos aspectos para torná-lo mais robusto e lucrativo. No geral, fornece um ótimo exemplo de referência que vale a pena estudar e aplicar.
/*backtest start: 2022-11-15 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © NikitaDoronin //@version=4 strategy("Plot Break-even Price", overlay=true) /// Break-even calculation ep = 0.0 ep := na(ep[1]) ? na : ep[1] p = 0.0 p := na(p[1]) ? na : p[1] /// Fees Input fee_inp = input(0.25, title='Price Change in %', step=0.1)/100 /// Your Strategy calculation longCondition = crossover(sma(close, 14), sma(close, 28)) shortCondition = crossunder(sma(close, 14), sma(close, 28)) /// Stategy Entry if (longCondition) ep := close p := close * (1 + fee_inp) strategy.entry("My Long Entry Id", strategy.long) if (shortCondition) ep := close p := close * (1 - fee_inp) strategy.entry("My Short Entry Id", strategy.short) /// Plot Break-even Price p1 = plot(ep, color = color.red, transp = 85) p2 = plot(p, color = color.green) fill(p1, p2, color = color.red, transp = 85)