Esta estratégia utiliza os padrões de cruzamento entre as médias móveis (MA) de diferentes prazos e o indicador RSI para determinar o momento das entradas e saídas no mercado, visando a detenção de longo prazo.
O mecanismo central desta estratégia consiste em identificar pontos de entrada e saída através da cruz de ouro e cruz de morte das linhas EMA. Incorpora também o indicador RSI para determinar as condições de sobrecompra e sobrevenda.
Especificamente, a lógica de sinal de compra verifica o seguinte: os cruzes de preços abaixo da EMA20 e acima da EMA50, formando uma cruz de ouro, o que ajuda a identificar a inversão de tendência com mais precisão em comparação com o sistema de EMA único.
Os critérios de compra acima são configurados com vários parâmetros para formar 4 regras de compra, correspondentes a diferentes períodos e quantidades de EMA. Isto permite a construção gradual de posições através de compras por tranche, alcançando a redução do custo médio.
Para saídas, a estratégia verifica a cruz de morte acima da EMA10, com sinal de RSI sobrecomprado; ou cruz de morte abaixo da EMA10, com sinal de RSI sobrevendido.
A maior força desta estratégia reside em sua eficácia de identificar pontos de reversão da tendência com cruzes da EMA, permitindo a tendência de seguir. Em comparação com o sistema de EMA único, cruzes duplas da EMA ajudam a eliminar falsos sinais. Além disso, o uso do RSI adiciona confirmação antes de entrar em zonas de sobrecompra / sobrevenda, reduzindo ainda mais os riscos de negociação.
Outra vantagem é a implementação da pirâmide e da redução de custos médios. Tal compra por tranche distribui quantidades em diferentes níveis de preço, garantindo o máximo de lucro quando a tendência retoma. Também diversifica os riscos longe de uma única grande posição de entrada.
Os principais riscos associados a esta estratégia incluem:
A natureza atrasada do sistema EMA torna lento para reagir a mudanças repentinas de preços, incapaz de sair de posições em tempo hábil.
A ausência de restrições aos prazos de entrada de compras pode levar a entradas prematuras, ficando presas em consolidações de mercado.
A pirâmide de ordens de compra pode resultar em posições de tamanho excessivo, criando vulnerabilidade aos riscos de ruptura de uma direção.
A estratégia pode ser ainda melhorada nos seguintes domínios:
Incorporar regras de stop loss para reduzir as perdas quando os níveis de suporte principais são violados na baixa, controlando os riscos de baixa.
Adicionar um módulo de validação de negociação para verificar a direção da tendência primária, entrando em negociações apenas quando a tendência geral aponta para cima, evitando riscos de contra-tendência.
Definir restrições mais rigorosas de zona de compra para evitar entradas prematuras de pirâmide antes das confirmações.
Empregar algoritmos de aprendizagem de máquina com análise multifatorial para melhorar a precisão de entrada e as taxas de vitória.
Em resumo, este artigo ilustra em detalhes uma estratégia quantitativa de longo prazo utilizando crossover EMA duplo e indicador RSI para sinais de entrada e saída, apoiado pela construção de posição de tranche para maximizar a eficiência. A lógica e parâmetros podem ser ajustados para índices e ações em todos os mercados, tornando-se uma estratégia versátil para seguir tendências de longo prazo. A análise de risco e oportunidades de aprimoramento também fornecem referências para otimização adicional. À medida que a estratégia se torna mais sofisticada, acredito que servirá como um sistema sólido para a detenção de longo prazo em ambientes de negociação ao vivo.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true) // Input parameters qt1 = input.int(1, title="Quantity 1", minval=1) qt2 = input.int(2, title="Quantity 2", minval=1) qt3 = input.int(3, title="Quantity 3", minval=1) qt4 = input.int(4, 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) // RSI(14) condition rsi_threshold = 65 rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold // Date range filter start_date = timestamp(year=2021, month=1, day=1) end_date = timestamp(year=2024, month=1, day=1) in_date_range = true // Profit condition profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed // Pyramiding setting pyramiding = input.int(1, 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 rsi_crossed_above_70_two_days_ago) 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 rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2] // 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)