Estratégia de negociação de reversão de dois fatores

Autora:ChaoZhang, Data: 2023-12-27 17:22:31
Tags:

img

Resumo

Esta estratégia utiliza primeiro sinais de reversão de preço para negociação, em seguida, combina indicadores de filtragem de tendência para triagem, implementando um sistema orientado por dois fatores.

Estratégia lógica

A parte de reversão de preço usa o sistema de reversão 123. Este sistema é do livro How I Tripped My Money In The Futures Market de Ulf Jensen, página 183.

  1. O fechamento anterior é menor que o fechamento de 2 dias atrás
  2. O fechamento atual é superior ao fechamento anterior
  3. Stochastic lento de 9 dias é inferior a 50

Quando as condições acima são satisfeitas, é gerado um sinal de compra.

  1. O fechamento anterior é maior que o fechamento de há 2 dias.
  2. Fechamento atual é inferior ao fechamento anterior
  3. Stochastic rápido de 9 dias é superior a 50

É gerado um sinal de venda.

O objetivo deste sistema de reversão é capturar reversões de curto prazo quando os preços formam uma reversão temporária.

A parte de filtragem da tendência usa o sistema Extracting The Trend (ETT). O sistema ETT julga a direção da tendência através de uma combinação de filtro e média móvel. Nesta estratégia, sua principal função é verificar os sinais de reversão de preço, evitando a operação de reversão quando não há uma tendência clara.

Esta estratégia combina os sinais de negociação de ambas as sub-estratégias, eventualmente realizando um sistema de negociação de reversão orientado por dois fatores.

Análise das vantagens

A estratégia de negociação de reversão de dois fatores integra as vantagens de cada subestratégia através de uma combinação:

  1. O sistema de reversão pode captar oportunidades de reversão a curto prazo
  2. O sistema ETT pode filtrar efetivamente cenários sem tendência clara, evitando o risco de reversão da negociação
  3. A condução por dois fatores melhora a qualidade do sinal

Portanto, esta estratégia pode efetivamente filtrar sinais de reversão inválidos. Com o julgamento correto da tendência, realiza uma operação de reversão, melhorando assim o desempenho geral do sistema de negociação.

Análise de riscos

A estratégia de negociação de reversão de dois fatores apresenta os seguintes riscos principais:

  1. O risco de o preço continuar a manter a tendência original após a reversão.
  2. O risco de erro de julgamento do sistema ETT. O próprio sistema ETT também tem erros de julgamento, levando a perdas na negociação de reversão.
  3. O risco inerente ao mecanismo de dois fatores, embora menos provável, ainda há a probabilidade de que ambos os sinais de negociação façam julgamentos errados ao mesmo tempo, o que amplifica as perdas.

Para reduzir os riscos acima, considerações incluem ajustar os parâmetros do compilador, otimizar as estratégias de reversão e ETT para um melhor julgamento, bem como expandir adequadamente o intervalo de stop loss para negociação de reversão.

Optimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros do sistema de inversão para uma melhor combinação de parâmetros
  2. Otimizar os parâmetros do sistema ETT para uma maior precisão de julgamento
  3. Tente combinar outras estratégias de inversão de preços com a ETT
  4. Adicionar mecanismo de controlo de dimensionamento de posição
  5. Conduzir com mais fatores

Com a lógica da estratégia e os principais sinais de negociação inalterados, podem ser esperados melhores resultados de backtest através da otimização de parâmetros e combinações.

Conclusão

A estratégia de negociação de reversão de dois fatores combina organicamente sinais de reversão de preço e filtragem de tendência para o sistema de julgamento de múltiplos fatores. Em comparação com as estratégias de sinal de reversão único, esta estratégia pode capturar melhor as reversões de preços de curto prazo, evitando sinais falsos quando não há uma tendência clara, melhorando assim a qualidade do sinal.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/08/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
// Extracting The Trend
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// 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


ETT(Length,Delta,Trigger) =>
    pos = 0
    xBandpassFilter = 0.0
    xPrice = hl2
    beta = cos(3.1415 * (360 / Length) / 180)
    gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
    alpha = gamma - sqrt(gamma * gamma - 1)
    xBandpassFilter := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
    xMean = sma(xBandpassFilter, 2 * Length)
    pos :=iff(xMean > Trigger, 1,
	       iff(xMean < Trigger, -1, nz(pos[1], 0)))     
    pos

strategy(title="Combo Backtest 123 Reversal & Extracting The Trend", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthETT = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETT = ETT(LengthETT,Delta,Trigger)
pos = iff(posReversal123 == 1 and posETT == 1 , 1,
	   iff(posReversal123 == -1 and posETT == -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.