Esta é uma estratégia de negociação quantitativa simples baseada em indicadores de média móvel. Ele usa a cruz de ouro e cruz de morte de médias móveis rápidas e lentas para determinar sinais de entrada e saída. Quando o MA rápido cruza acima do MA lento de baixo, um sinal de compra é gerado. Quando o MA rápido cruza abaixo do MA lento de cima, um sinal de venda é gerado.
A estratégia utiliza principalmente a capacidade de rastreamento de tendências das médias móveis. O MA rápido tem um parâmetro menor e pode responder rapidamente às mudanças de preço, enquanto o MA lento tem um parâmetro maior e representa a tendência de longo prazo. O cruzamento rápido do MA acima do MA lento sinaliza uma reversão nos movimentos de curto prazo e o início de uma tendência de alta. O cruzamento rápido do MA abaixo do MA lento sinaliza uma reversão para uma tendência de queda. Ao capturar esses sinais, podemos negociar junto com o impulso.
Especificamente, esta estratégia define uma média móvel dupla de 5 dias (rápida) e 34 dias (lenta). Ele calcula esses dois MA diariamente e verifica se o MA rápido cruza acima ou abaixo do MA lento. Se uma cruz de ouro acontecer, ele vai longo. Se uma cruz de morte acontecer, ele sai das posições.
Esta é uma estratégia simples e fácil de entender, adequada para iniciantes em quant trading.
A estratégia de MA dupla pode filtrar o ruído do mercado de forma eficaz e capturar a tendência principal.
Quando os preços começam a inverter a direção e a cruz de morte do MA acontece, ele sairá de posições em tempo hábil para controlar os riscos.
A estratégia de MA dupla apresenta riscos como falhas de stop loss ou falhas de ajustamento da curva.
Os MAs têm efeitos de atraso e podem gerar sinais apenas depois que a tendência já se inverteu.
Em mercados variados, pode haver muitos sinais falsos, causando negociações desnecessárias, aumento de custos e deslizamento.
A análise de mercado baseia-se exclusivamente em indicadores técnicos, sem combinar a análise fundamental.
Não considera o tamanho das posições e a gestão de riscos.
A fim de aproveitar melhor os seus pontos fortes e reduzir os riscos, podem ser realizadas as seguintes otimizações:
Adicione indicadores de tendência como MACD e indicadores de volatilidade como KDJ para definir regras de entrada mais rigorosas e filtrar sinais falsos.
Incorporar mecanismos de stop loss apropriados, como sair depois que os preços caem uma certa porcentagem após a cruz de ouro, ou depois que os preços caem um intervalo definido de novos máximos / mínimos.
Otimizar combinações de dias MA rápidos e lentos para se adaptar às variações de preços em diferentes prazos.
Indicadores de mercado de referência para determinar o regime geral do mercado e evitar a troca excessiva em mercados variados.
Incorporar alterações no volume de negociação para verificar a confiabilidade dos sinais de tendência.
A estratégia de cruzamento de média móvel dupla é uma estratégia de negociação quantitativa muito típica. Tem vantagens como simplicidade, intuitividade e facilidade de implementação. Com testes contínuos e ajuste de parâmetros, pode produzir resultados decentes. No entanto, existem problemas como identificação de sinal atrasado e sinais falsos. Mecanismos adicionais de filtragem e gerenciamento de risco precisam ser incorporados para torná-lo uma estratégia estável de geração de lucro.
/*backtest start: 2022-11-15 00:00:00 end: 2023-11-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // This strategy is a modification to the "Bill Williams, Awesome Oscillator // (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016) // // This version of the strategy by Midnight Mouse. 10/4/2018 // // DESCRIPTION // // This indicator plots the oscillator as a column where periods fit for buying // are marked as green, and periods fit for selling as orange/brown. If the // current value of AO (Awesome Oscillator) is > the previous, the period is // deemed fit for buying and the indicator is marked green. If the AO values is // not over the previous, the period is deemed fit for selling and the indicator // is marked orange/brown. // // You can change long to short in the Input Settings // // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy("Awesome Oscillator.MMouse_Lager_BCE") // === SETTINGS === // Strategy start date FromMonth = input(defval = 1, title = "From Month", minval = 1) FromDay = input(defval = 1, title = "From Day", minval = 1) FromYear = input(defval = 2017, title = "From Year", minval = 2014) // Strategy settings nLengthSlow = input(34, minval=1, title="Length Slow") nLengthFast = input(5, minval=1, title="Length Fast") allowShorts = input(false, title="Include Short Trades") reverse = input(false, title="Trade reverse") // === BODY === // Use Heikin-Ashi candles for the buy/sell signal ha_t = heikinashi(syminfo.tickerid) ha_high = security(ha_t, timeframe.period, high) ha_low = security(ha_t, timeframe.period, low) length = input( 14 ) price = open vrsi = rsi(price, length) // Calc (H+L)/2 for each length xSMA1_hl2 = sma((ha_high + ha_low)/2, nLengthFast) xSMA2_hl2 = sma((ha_high + ha_low)/2, nLengthSlow) // Get SMA difference (Fast - Slow) xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2 // Derive the color of the column cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d // Determine the position to take (Long vs. Short) pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1], 1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) // Only apply strategy from the start date if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00)) if (possig == 1) // Market is currently fit for a Long position strategy.entry("Long", strategy.long) if (possig == -1) // Market is currently fit for a Short position if(allowShorts) // Shorts are allowed. Record a Short position strategy.entry("Short", strategy.short) else // Shorts are not allowed. Closec the Long position. strategy.close("Long") // Define the candle colors //barcolor(possig == -1 ? red : // possig == 1 ? green : // blue ) // Plot the oscillator plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)