Esta estratégia é um sistema de negociação de tendência baseado no oscilador de momento de Chande (CMO). Ele busca oportunidades de compra em regiões supervendidas e oportunidades de venda em regiões supercompradas, ao mesmo tempo em que incorpora limites de tempo de detenção de posição para gerenciamento de risco. Esta abordagem permite capturar reversões de preços, evitando a negociação frequente em mercados variados.
O núcleo da estratégia usa o indicador CMO para medir o ímpeto do mercado. O CMO gera um oscilador que varia de -100 a 100 calculando a proporção da diferença entre os movimentos ascendentes e descendentes para a sua soma. O sistema gera um sinal longo quando o CMO cai abaixo de -50, indicando uma condição de mercado de sobrevenda. As posições são fechadas quando o CMO excede 50 ou quando o período de detenção excede 5 ciclos. Este design capta oportunidades de rebote de preço enquanto implementa medidas de captação de lucro e stop-loss oportunas.
Esta estratégia baseada na tendência de momento capta oportunidades de sobrecompra e sobrevenda do mercado usando o indicador CMO. O design da estratégia é racional, com regras de negociação claras e mecanismos de controle de risco. Embora existam riscos inerentes, a otimização pode melhorar ainda mais a estabilidade e a lucratividade da estratégia. A estratégia é particularmente adequada para mercados altamente voláteis e pode alcançar bons retornos durante fases de tendência claras.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Momentum Oscillator Strategy", overlay=false) // Input for the CMO period cmoPeriod = input.int(9, minval=1, title="CMO Period") // Calculate price changes priceChange = ta.change(close) // Separate positive and negative changes up = priceChange > 0 ? priceChange : 0 down = priceChange < 0 ? -priceChange : 0 // Calculate the sum of ups and downs using a rolling window sumUp = ta.sma(up, cmoPeriod) * cmoPeriod sumDown = ta.sma(down, cmoPeriod) * cmoPeriod // Calculate the Chande Momentum Oscillator (CMO) cmo = 100 * (sumUp - sumDown) / (sumUp + sumDown) // Define the entry and exit conditions buyCondition = cmo < -50 sellCondition1 = cmo > 50 sellCondition2 = ta.barssince(buyCondition) >= 5 // Track if we are in a long position var bool inTrade = false if (buyCondition and not inTrade) strategy.entry("Long", strategy.long) inTrade := true if (sellCondition1 or sellCondition2) strategy.close("Long") inTrade := false // Plot the Chande Momentum Oscillator plot(cmo, title="Chande Momentum Oscillator", color=color.blue) hline(-50, "Buy Threshold", color=color.green) hline(50, "Sell Threshold", color=color.red)