Esta estratégia é uma estratégia de tendência baseada em médias móveis. Utiliza linhas EMA de diferentes períodos para construir vários conjuntos de sinais de negociação para rastreamento de tendências. Quando o preço se rompe abaixo das médias móveis de período mais longo, a estratégia irá construir progressivamente posições longas para reduzir o custo médio. A estratégia também define condições de stop loss baseadas em voltas médias móveis de curto período para garantir lucros.
A estratégia emprega 5 linhas EMA de diferentes períodos para construir sinais de negociação, que são 10 dias, 20 dias, 50 dias, 100 dias e 200 dias EMA. A estratégia define 4 condições de compra com base na relação de preço com essas linhas EMA para implementar a negociação piramidal.
Quando o preço está abaixo da EMA de 20 dias enquanto está acima da EMA de 50 dias, o primeiro sinal de compra é acionado. Quando abaixo da EMA de 50 dias enquanto está acima da EMA de 100 dias, o segundo sinal de compra é acionado. Os terceiro e quarto sinais de compra são acionados quando o preço cai abaixo da EMA de 100 dias e da EMA de 200 dias, respectivamente. O tamanho da posição também se expande progressivamente de qt1 para qt4.
No lado da venda, existem dois grupos de condições de stop loss. A primeira é parar a perda quando o preço ultrapassa a EMA de 10 dias, enquanto a EMA de 10 dias está acima de outras linhas EMA. A segunda é semelhante, mas sai quando o preço cai abaixo do fechamento anterior da EMA de 10 dias. Estas duas condições são para garantir lucros de curto prazo durante as tendências.
A maior vantagem desta estratégia é a capacidade de rastrear automaticamente as tendências de mercado para a retenção de longo prazo. Utilizando múltiplas condições de entrada e construção de posição progressiva, ele reduz constantemente a base de custos para produzir retornos excessivos.
No lado do stop loss, a estratégia rastreia pontos de viragem da média móvel de curto período para obter rapidamente lucro e evitar perdas adicionais.
O maior risco que esta estratégia enfrenta é ficar preso em consolidações ou tendências de baixa de longa duração. Quando o mercado geral entra em um canal variável ou descendente, os sinais da média móvel tornam-se menos confiáveis. Isso pode levar a perdas sustentadas de construções longas contínuas.
Outro ponto de risco é que as médias móveis nem sempre identificam as voltas com precisão.
Outros indicadores técnicos, como o volume ou as bandas de Bollinger, poderiam ser incorporados às condições de compra para melhorar ainda mais a precisão das entradas.
A segunda camada de stop loss baseada na banda superior de Bollinger ou em áreas de suporte chave também pode ser adicionada. Isso ajuda a evitar pequenas paradas desnecessárias. Implementar stop loss adaptativo aos preços de trilha é outra área de aprimoramento para proteger melhor os lucros.
Esta estratégia implementa a tendência após a negociação através de um sistema de média móvel. Através da construção de posições de pirâmide, visa maximizar os retornos das tendências sustentadas, garantindo a preservação do capital com mecanismos de stop loss duplos. Esta é uma estratégia digna de mais rastreamento e teste ao vivo. Parâmetros e modelos podem ser otimizados incrementalmente com base no desempenho prático.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true) // Input parameters qt1 = input.int(5, title="Quantity 1", minval=1) qt2 = input.int(10, title="Quantity 2", minval=1) qt3 = input.int(15, title="Quantity 3", minval=1) qt4 = input.int(20, title="Quantity 4", minval=1) ema10 = ta.ema(close, 10) ema20 = ta.ema(close, 20) ema50 = ta.ema(close, 50) ema100 = ta.ema(close, 100) ema200 = ta.ema(close, 200) // Date range filter start_date = timestamp(year=2021, month=1, day=1) end_date = timestamp(year=2024, month=10, day=27) in_date_range = true // Profit condition profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed // Pyramiding setting pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10) // Buy conditions buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1] buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1] buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1] buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1] // Exit conditions profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2] exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2] // Exit condition for when today's close is less than the previous day's low //exit_condition_3 = close < low[1] // Strategy logic strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1) strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2) strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3) strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4) strategy.close("Buy1", when=exit_condition_1 or exit_condition_2) strategy.close("Buy2", when=exit_condition_1 or exit_condition_2) strategy.close("Buy3", when=exit_condition_1 or exit_condition_2) strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)