Estratégia de rastreamento de reversão de múltiplos fatores

Autora:ChaoZhang, Data: 2023-09-15 14:31:15
Tags:

Estratégia geral

A estratégia de rastreamento de reversão multifatorial gera sinais de negociação incorporando padrões de reversão de preços e indicadores de sobrecompra e sobrevenda.

Estratégia lógica

A estratégia consiste em dois módulos:

  1. Modulo de padrão de reversão
  • Faça curto quando ver uma nova alta de 2 dias, mas recuar no 3o dia, indicando potencial alta de curto prazo.

  • Vá longo quando ver um novo mínimo de 2 dias, mas rebote no 3o dia, indicando potencial baixo de curto prazo.

  1. Módulo RSI de engenharia reversa
  • Identificar pontos de reversão ajustando dinamicamente as linhas de sobrecompra e sobrevenda do RSI.

  • Vai curto quando o RSI está acima da linha de sobrecompra ajustada, vai longo quando o RSI está abaixo da linha de sobrevenda ajustada.

Os sinais de negociação só são gerados quando ambos os módulos se alinham.

A maior vantagem é a incorporação de vários fatores para determinar altos e baixos estruturais, filtrando alguns sinais falsos de fatores individuais e melhorando a taxa de ganho de negociação real.

Vantagens da estratégia

  • Sintese multifatorial para uma identificação abrangente de níveis elevados/bajos

  • Combina padrões de reversão e indicadores de sobrecompra/supervenda

  • Filtra falsas inversões, melhora a precisão

  • Parâmetros de backtest otimizáveis adaptáveis a diferentes mercados

  • Fácil de implementar para replicação rápida

Advertências de risco

  • Os sinais de reversão podem atrasar-se, sendo necessária a atualização dos parâmetros

  • Evitar o excesso de negociação para evitar mais comissões

  • Os fundamentos das existências individuais ainda precisam ser considerados

  • Estratégias de reversão mais adequadas para índices e ações em risco

Conclusão

A estratégia de rastreamento de reversão de múltiplos fatores combina perfeitamente os pontos fortes das ferramentas quant e a experiência de análise manual, considerando múltiplas perspectivas para os sinais comerciais. Em comparação com as estratégias de indicador único, melhora significativamente a estabilidade comercial real e a taxa de vitória.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/06/2021
// 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
// The related article is copyrighted material from
// Stocks & Commodities.
//
// 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


RE_RSI(Value,WildPer) =>
    pos = 0.0
    AUC = 0.0
    ADC = 0.0
    ExpPer = 2 * WildPer - 1
    K = 2 / (ExpPer + 1)
    AUC := iff(close > close[1], K * (close - close[1]) + (1 - K) * nz(AUC[1], 1), (1-K) * nz(AUC[1], 1))
    ADC := iff(close > close[1], (1-K) * nz(ADC[1], 1), K * (close[1] - close) + (1 - K) * nz(ADC[1], 1))
    nVal = (WildPer - 1) * (ADC * Value / (100 - Value) - AUC)
    nRes = iff(nVal >= 0, close + nVal, close + nVal * (100 - Value) / Value)
    pos:= iff(nRes > close, -1,
    	   iff(nRes < close, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Reverse Engineering RSI, by Giorgos Siligardos", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Reverse Engineering RSI ----")
Value = input(50, minval=1)
WildPer = input(14,minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRE_RSI = RE_RSI(Value,WildPer)
pos = iff(posReversal123 == 1 and posRE_RSI == 1 , 1,
	   iff(posReversal123 == -1 and posRE_RSI == -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.