Estratégia de combinação de momentum e reversão multifatorial


Data de criação: 2023-10-23 15:11:20 última modificação: 2023-10-23 15:11:20
cópia: 0 Cliques: 700
1
focar em
1617
Seguidores

Estratégia de combinação de momentum e reversão multifatorial

Visão geral

Esta estratégia permite um modelo multifatorial para explorar oportunidades de negociação em diferentes cenários de mercado, usando uma combinação de indicadores de dinâmica CMO e Stochastic Reversal.

Análise de princípios

A estratégia é composta por duas sub-estratégias:

  1. 123 estratégia de reversão

    • O indicador Stochastic de 9 dias é usado para avaliar a sobrevenda.
    • Se o preço de fechamento estiver em alta por 2 dias consecutivos e o Stochastic estiver abaixo de 50, faça mais
    • Se o preço de fechamento cair por 2 dias consecutivos e o Stochastic estiver acima de 50, faça um corte
  2. A estratégia de valor absoluto do CMO

    • Calcular o valor absoluto de um CMO
    • O CMO considera que está sobrecomprando quando o valor absoluto é superior a 70 e faz um shorting
    • Quando o valor absoluto do CMO é inferior a 20, o CMO considera que está em um estado de sobrevenda, fazendo mais

Finalmente, se os dois sinais de estratégia secundária coincidirem, um sinal de transação será emitido.

A estratégia aproveita as vantagens do CMO, um indicador de dinâmica, e do Stochastic, um indicador de reversão. O CMO é mais capaz de identificar tendências, enquanto o Stochastic é capaz de encontrar oportunidades de reversão em curto prazo.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Modelo multifator, combinando potência e inversão, para se adaptar a diferentes condições de mercado

  2. Os CMOs são capazes de identificar tendências e os stochastic são capazes de determinar pontos de inflexão.

  3. Negocie apenas quando os dois sinais coincidem, evitando sinais errados e aumentando a probabilidade de lucro

  4. Parâmetros de otimização de espaço grande, pode ser ajustado para diferentes variedades e períodos

  5. A combinação de indicadores de longo e curto período permite descobrir mais oportunidades de negociação

  6. Regras simples, claras e fáceis de entender, adequadas para negociação algorítmica

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. Há uma probabilidade de uma sub-estratégia emitir um sinal de erro, e os parâmetros precisam ser otimizados

  2. O evento de emergência pode levar a uma reversão da tendência e a maiores perdas.

  3. A frequência de transações pode ser excessiva e os custos de transação são fatores a serem considerados

  4. As estratégias secundárias são indicadores de atraso, existem problemas de atraso de tempo

  5. Parâmetros precisam ser ajustados para diferentes variedades, exigindo maior otimização de parâmetros

Resposta:

  1. Parâmetros de subestratégia de otimização para reduzir a probabilidade de sinais errados

  2. Estabelecer o stop loss e controlar os perdas individuais

  3. Ajustar as condições de abertura de posições e reduzir a frequência de negociação

  4. Utilização de dados de ticks em tempo real para reduzir o atraso

  5. Parâmetros de otimização automática usando métodos de aprendizagem de máquina

Direção de otimização

Esta estratégia pode ser melhorada em:

  1. A introdução de mais fatores, como a taxa de flutuação, a quantidade, etc., formam um modelo multifatorial sistemático

  2. Construir mecanismos de otimização de parâmetros dinâmicos, ajustando os parâmetros de acordo com as condições do mercado

  3. Optimizar a lógica de abertura de posições, introduzir probabilidades e métodos de suavização de índices

  4. Objetivo duplo: proteger posições de longo prazo no curto prazo

  5. Usando a aprendizagem profunda para extrair mais características e criar regras de negociação não lineares

  6. Explorar modelos sem parâmetros e evitar desvios com parâmetros de seleção manual

  7. Combinação de dados de alta frequência e eventos de notícias para reduzir o atraso do sinal

Resumir

Esta estratégia, através da utilização do indicador de dinâmica CMO e do indicador de reversão Stochastic, permite a realização de modelos de múltiplos fatores, explorando mais oportunidades de negociação em mercados de transição. Em comparação com o indicador único, o conjunto de múltiplos fatores pode se adaptar a um ambiente de mercado mais complexo. Ao mesmo tempo, o espaço de otimização dos parâmetros da estratégia é grande, as regras são simples e adequadas para o desenvolvimento de algoritmos de negociação.

Código-fonte da estratégia
/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/09/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//    This indicator plots the absolute value of CMO. CMO was developed by Tushar 
//    Chande. A scientist, an inventor, and a respected trading system developer, 
//    Mr. Chande developed the CMO to capture what he calls "pure momentum". For 
//    more definitive information on the CMO and other indicators we recommend the 
//    book The New Technical Trader by Tushar Chande and Stanley Kroll.
//    The CMO is closely related to, yet unique from, other momentum oriented indicators 
//    such as Relative Strength Index, Stochastic, Rate-of-Change, etc. It is most closely 
//    related to Welles Wilder`s RSI, yet it differs in several ways:
//        - It uses data for both up days and down days in the numerator, thereby directly 
//          measuring momentum;
//        - The calculations are applied on unsmoothed data. Therefore, short-term extreme 
//          movements in price are not hidden. Once calculated, smoothing can be applied to 
//          the CMO, if desired;
//        - The scale is bounded between +100 and -100, thereby allowing you to clearly see 
//          changes in net momentum using the 0 level. The bounded scale also allows you to 
//          conveniently compare values across different securities.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

CMOabs(Length, TopBand, LowBand) =>
    pos = 0
    xMom = abs(close - close[1])
    xSMA_mom = sma(xMom, Length)
    xMomLength = close - close[Length]
    nRes = abs(100 * (xMomLength / (xSMA_mom * Length)))
    pos := iff(nRes > TopBand, -1,
    	     iff(nRes < LowBand, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & CMOabs", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(9, minval=1)
TopBand = input(70, minval=1)
LowBand = input(20, maxval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOabs = CMOabs(LengthCMO, TopBand, LowBand)
pos = iff(posReversal123 == 1 and posCMOabs == 1 , 1,
	   iff(posReversal123 == -1 and posCMOabs == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )