Combo Momentum Reversal Dual-Rail Matching Estratégia

Autora:ChaoZhang, Data: 2023-11-24 10:17:15
Tags:

img

Resumo

Esta estratégia combina múltiplos indicadores técnicos para implementar a reversão de momento e a correspondência de duplo trilho para gerar sinais de negociação. A estratégia usa o padrão 123 para determinar pontos de reversão e combina sinais com o indicador CSI ergótico para rastrear tendências.

Princípios

A estratégia inclui duas partes:

  1. Modelo para determinar pontos de inversão
  2. Indicador CSI ergódico para gerar sinais de correspondência

O padrão 123 julga a inversão de preços com base nos preços de fechamento das 3 barras recentes. Se o preço de fechamento da 3a barra subir em comparação com as 2 barras anteriores, e tanto o estoque rápido quanto o lento estiverem abaixo de 50, é um sinal de compra. Se o preço de fechamento da 3a barra cair em comparação com as 2 barras anteriores, e tanto o estoque rápido quanto o lento estiverem acima de 50, é um sinal de venda.

O indicador ergótico CSI considera múltiplos fatores como preço, intervalo real, indicadores de tendência para determinar de forma abrangente as condições do mercado e gerar zonas de compra/venda. Quando o indicador sobe acima da zona de compra, ele gera um sinal de compra.

Finalmente, os sinais de reversão de 123 padrões e sinais de zona do CSI ergótico são ANDed para produzir o sinal de estratégia final.

Vantagens

  1. Capta tendências a médio e curto prazo, elevado potencial de lucro
  2. Determinação do padrão de reversão capta pontos de virada de forma eficaz
  3. A combinação de dois trilhos reduz os falsos sinais

Riscos

  1. As acções individuais podem divergir, levando a um stop loss
  2. Padrões de reversão suscetíveis de serem impactados por mercados limitados ao intervalo
  3. Espaço limitado de otimização de parâmetros, alta flutuação de desempenho

Orientações de otimização

  1. Otimizar os parâmetros para melhorar a rentabilidade da estratégia
  2. Adicionar a lógica de stop loss para reduzir a perda de uma única negociação
  3. Incorporar modelos multifatores para melhorar a selecção das unidades populacionais

Conclusão

Esta estratégia rastreia efetivamente as tendências de médio e curto prazo, combinando padrões de reversão e correspondência de duplo trilho. Em comparação com indicadores técnicos únicos, ela tem maior estabilidade e níveis de lucro. Os próximos passos são otimizar ainda mais os parâmetros, adicionar módulos de stop loss e seleção de ações para reduzir os drawdowns e melhorar o desempenho geral.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/07/2020
// 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 is one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// 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

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ECSI(r,Length,BigPointValue,SmthLen,SellZone,BuyZone) =>
    pos = 0
    source = close
    K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
    xTrueRange = atr(1) 
    xADX = fADX(Length)
    xADXR = (xADX + xADX[1]) * 0.5
    nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
    xCSI = iff(close > 0,  nRes / close, 0)
    xSMA_CSI = sma(xCSI, SmthLen)
    pos := iff(xSMA_CSI > BuyZone, 1,
             iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic CSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(32, minval=1)
LengthECSI = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.06, minval=0.00001)
BuyZone = input(0.02, minval=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posECSI = ECSI(r,LengthECSI,BigPointValue,SmthLen,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posECSI == 1 , 1,
	   iff(posReversal123 == -1 and posECSI == -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 )

Mais.