Estratégia de negociação do oscilador da OCM

Autora:ChaoZhang, Data: 2023-09-19 21:16:26
Tags:

Resumo

Esta estratégia usa o oscilador de momento de Chande (CMO) para determinar os níveis de sobrecompra e sobrevenda para os sinais de negociação. Os valores absolutos do CMO em 3 períodos são mediados para suavizar o oscilador para identificar extremos.

Estratégia lógica

A lógica chave inclui:

  1. Cálculo dos valores absolutos da OCM durante três períodos diferentes
  2. Tomando a média dos valores absolutos das OCM de três períodos
  3. Caso o valor médio exceda o limiar superior
  4. Caso o valor médio caia abaixo do limiar inferior
  5. Fechamento das posições quando a OCM retornar ao intervalo normal

A estratégia utiliza esta característica da OCM, usando uma média de vários períodos para suavizar a curva para identificar extremos.

Vantagens

  • Utiliza OCM para identificar regiões com compra/venda excessivas
  • A média de vários períodos suaviza a curva e evita sinais falsos
  • Base teórica sólida para a detecção de sobrecompra/supervenda
  • Prazos de parâmetros personalizáveis a adaptar
  • Implementação simples de reversão da média

Riscos e atenuações

  • Potencial de sinais falsos da OCM
  • Requer otimização contínua do limiar
  • Extremos sustentados durante as tendências podem causar perdas

Atenuantes:

  1. Adição de um filtro de tendência para evitar transações contra-tendência
  2. Optimização dos parâmetros para uma melhor sensibilidade da OCM
  3. Utilização de paradas para limitar perdas

Oportunidades de melhoria

A estratégia pode ser reforçada através de:

  1. Confirmação de volume para evitar falsos rompimentos
  2. Incorporação de paradas de trailering para uma melhor gestão dos riscos
  3. Optimização automática de parâmetros através de aprendizagem de máquina
  4. Posicionamento baseado na volatilidade
  5. Combinação com outras estratégias para diversificar e melhorar os rendimentos

Conclusão

Esta estratégia usa CMO para identificar overbought / oversold para a negociação de reversão média. A média de vários períodos ajuda a evitar falsos sinais. A própria CMO tem uma base teórica sólida para medir a divergência. Melhorias através de melhores parâmetros, paradas e filtros podem torná-la uma estratégia de negociação de oscilador estável.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// 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(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="CMOabsav")

Mais.