Esta estratégia integra as técnicas de cruzamento da média móvel e ruptura do nível de resistência para configurar sinais de compra e venda para negociação automatizada. Quando a média móvel de curto prazo cruza a média móvel de médio prazo a partir de baixo e o preço da ação quebra o nível de resistência, um sinal de compra é gerado. A estratégia define o lucro a 15% de aumento de preço e a perda de parada a 3% de diminuição de preço para controlar os riscos. Esta estratégia quantitativa madura de negociação pode identificar automaticamente as tendências do mercado e entrar em posições quando surgem sinais técnicos, com uma gestão de risco adequada.
A estratégia gera sinais de negociação baseados principalmente nos seguintes indicadores e julgamentos técnicos:
Técnica de cruzamento da média móvel: são calculadas médias móveis simples de 20 dias e 44 dias.
Técnica de ruptura do nível de resistência: níveis de preço que o preço das ações atingiu repetidamente, mas não conseguiu romper são chamados de níveis de resistência.
Oscilador RSI: Índice de Força Relativa, um indicador de impulso para identificar condições de sobrecompra e sobrevenda.
Análise de volume: O volume superior à média dos últimos 10 dias sugere frequentemente um interesse mais forte em comprar ou vender e um impulso no movimento dos preços.
Os sinais de compra são acionados quando a SMA curta cruza a SMA média, com o valor do RSI sobrecomprado e superior ao volume médio de negociação, indicando uma tendência ascendente.
Sinais de venda: 15% de lucro do preço de entrada, 3% de stop-loss.
Esta estratégia de negociação quantitativa madura integra vários métodos de análise técnica para identificar a estrutura e a tendência do mercado, gerando automaticamente sinais de negociação durante a formação de tendências, com uma gestão adequada do risco.
Captura as tendências do mercado sem problemas com a técnica da média móvel.
Evitar a abertura de posições durante falsos breakouts através da incorporação de análise de volume.
Controle eficaz do risco através da definição de stop-loss e take-profit, otimizando a relação risco/recompensa.
No geral, o excelente julgamento da estrutura de mercado, as regras de negociação rigorosas e o controlo do risco tornam esta uma estratégia de negociação quantitativa robusta.
Os sistemas de média móvel dupla podem ser sensíveis ao ajuste de parâmetros para diferentes períodos.
Os sistemas que seguem tendências não podem responder rapidamente a eventos fundamentais repentinos, enfrentando riscos de stop loss.
Embora com a configuração de stop loss, a alta frequência de negociação leva a um número inevitável de execuções de stop loss, resultando em níveis de lucro desiguais.
Os sinais dos indicadores técnicos são frequentemente inferiores aos melhores pontos de reversão dos mercados.
Otimize parâmetros como comprimentos médios móveis, meta stop loss / lucro por métodos de ajuste de parâmetros para encontrar o ideal.
Adicionar outros indicadores técnicos como Bandas de Bollinger para detecção de intervalo, MACD para detectar divergências, etc. para melhorar a precisão do sinal.
Incorporar sinais fundamentais e orientados por eventos para evitar o stop loss desencadeado por notícias negativas.
Otimizar a gestão do dinheiro por quantidade fixa, métodos de porcentagem fixa para controlar riscos por comércio.
Esta estratégia demonstra operações suaves, julgamentos precisos e regras de negociação rigorosas, representando uma das técnicas de negociação quantitativa mais eficazes. Mas a análise técnica sozinha tem limitações na leitura de mercados, por isso melhorias adicionais estão em incorporar mais indicadores e sinais fundamentais / eventos, otimizando os níveis de stop loss / take profit e mecanismos de gerenciamento de dinheiro.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Advanced Strategy with Conditional Stop Loss", overlay=true) // Parameters ma_length_20 = 20 ma_length_44 = 44 ma_length_100 = 100 rsi_length = 14 volume_length = 10 profit_target = 1.15 // 15% above the buy price stop_loss_target = 0.97 // 3% below the buy price wait_candles = 10 // Number of candles to wait after selling, unless MA cross condition met // Indicators moving_average_20 = ta.sma(close, ma_length_20) moving_average_44 = ta.sma(close, ma_length_44) moving_average_100 = ta.sma(close, ma_length_100) rsi = ta.rsi(close, rsi_length) volumeAvg = ta.sma(volume, volume_length) // Variables to manage the wait period after a sell var int last_sell_candle = 0 // Update last sell candle if (strategy.position_size[1] > 0 and strategy.position_size == 0) last_sell_candle := bar_index // Trend identification uptrend = close > moving_average_20 above_ma20_by_1_percent = close > moving_average_20 * 1.01 ma_cross = ta.crossover(moving_average_20, moving_average_44) or ta.crossunder(moving_average_20, moving_average_44) close_near_high = (close >= high * 0.993) and (close <= high) // Buy condition (only in uptrend, above 1% from 20-day MA, and respecting new filter) can_buy_after_cross = ma_cross and close > high[1] can_buy_after_wait = (bar_index - last_sell_candle) > wait_candles buy_condition = (can_buy_after_cross or can_buy_after_wait) and uptrend and above_ma20_by_1_percent and close > moving_average_44 and close > moving_average_100 and close > high[1] and rsi > 50 and volume > volumeAvg and not close_near_high // Entry if (buy_condition and strategy.position_size == 0) strategy.entry("Buy", strategy.long) // Exit conditions if (strategy.position_size > 0) // Profit target profit_level = strategy.position_avg_price * profit_target strategy.exit("Take Profit", "Buy", limit=profit_level) // Dynamic Stop Loss - Check on every bar if the price has dropped 3% below the buy price stop_loss_level = strategy.position_avg_price * stop_loss_target if (low < stop_loss_level) strategy.close("Buy", comment="Stop Loss") // Plotting plot(moving_average_20, color=color.green, title="20-Day Moving Average") plot(moving_average_44, color=color.blue, title="44-Day Moving Average") plot(moving_average_100, color=color.red, title="100-Day Moving Average")