Esta estratégia gera sinais de negociação calculando o indicador MACD do indicador OBV para determinar a tendência e os pontos de inflexão do momento do OBV. A ideia central é gerar sinais de compra quando o histograma OBV MACD atravessa o eixo 0 da região negativa para a região positiva e gerar sinais de venda quando atravessa o eixo 0 da região positiva para a região negativa.
O indicador MACD pode refletir a tendência de momentum de um estoque, analisando estatisticamente a relação entre as direções de mudança dos preços de fechamento e os volumes de negociação ao longo de um período de tempo para determinar se o impulso ascendente está fortalecendo ou enfraquecendo. O indicador MACD mostra a diferença entre diferentes médias móveis para refletir o impulso das mudanças de preço.
Especificamente, esta estratégia primeiro calcula o indicador OBV, que calcula a linha de momento OBV analisando estatisticamente a relação entre as direções de mudança dos preços de fechamento e os volumes de negociação ao longo de um período de tempo. Em seguida, com base na linha de momento OBV, seu indicador MACD é calculado, incluindo a linha MACD, linha de sinal e histograma. Finalmente, quando o histograma macd atravessa o eixo 0 da região negativa para a região positiva, um sinal de compra é gerado; quando o histograma atravessa o eixo 0 da região positiva para a região negativa, um sinal de venda é gerado.
Com este meio, o MACD exibe intuitivamente as características de impulso do volume OBV e julga a tendência das mudanças de volume.
Esta estratégia combina análise de volume OBV e indicadores de momento MACD para julgamentos relativamente precisos sobre as alterações de volume e tendência de preços, que podem filtrar efetivamente sinais FALSOS.
A estratégia apresenta também alguns riscos, principalmente nos seguintes aspectos:
Para fazer face a estes riscos, podem ser tomadas as seguintes medidas:
Ainda há espaço para uma maior otimização desta estratégia, principalmente nos seguintes domínios:
Através de testes e otimização contínuos, esta estratégia pode tornar-se uma estratégia comercial quantitativa estável e eficiente.
Esta estratégia é uma estratégia quantitativa típica que combina análise de volume e indicadores de impulso para determinar tendências de preços e gerar sinais de negociação. Ela pode identificar claramente os pontos de inflexão das flutuações de preços e os sinais de negociação são relativamente confiáveis. Com configurações razoáveis de parâmetros, bons resultados de estratégia podem ser obtidos. Mas também tem alguns riscos que precisam ser reduzidos por otimização contínua para melhorar o desempenho. Em geral, esta estratégia fornece uma idéia típica para estratégias de negociação quantitativas que vale a pena pesquisar e aplicar.
/*backtest start: 2023-12-17 00:00:00 end: 2024-01-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "MACD of OBV", overlay = false) //////////////////////// OBV /////////////////////////// src = close obv = cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume) //////////////////////// OBV ////////////////////////// //////////////// MACD OF OBV //////////////////////////// sourcemacd = obv fastLength = input(12, minval=1), slowLength=input(26,minval=1) signalLength=input(9,minval=1) fastMA = ema(sourcemacd, fastLength) slowMA = ema(sourcemacd, slowLength) macd = fastMA - slowMA signal = ema(macd, signalLength) delta=macd-signal swap1 = delta>0?green:red plot(delta,color=swap1,style=columns,title='Histo',histbase=0,transp=20) p1 = plot(macd,color=blue,title='MACD Line') p2 = plot(signal,color=red,title='Signal') fill(p1, p2, color=blue) hline(0) /////////////////////////MACD OF OBV ////////////////////////// // Conditions longCond = na sellCond = na longCond := crossover(delta,0) sellCond := crossunder(delta,0) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( longCond ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( sellCond ) strategy.close("BUY")