Estratégia de negociação de reversão de rastreamento de oscilação dupla

Autora:ChaoZhang, Data: 2023-10-11 14:47:25
Tags:

Resumo

Trata-se de uma estratégia de negociação de reversão de rastreamento de oscilação dupla que combina a estratégia de reversão do indicador estocástico e o indicador de volatilidade de Chaikin para obter sinais de negociação mais confiáveis.

Estratégia lógica

A estratégia consiste em duas partes:

  1. Estratégia de inversão do indicador estocástico

Esta parte usa a linha rápida e a linha lenta do indicador estocástico para gerar sinais de negociação. Ele vai longo quando o preço de fechamento é menor do que o preço de fechamento anterior por dois dias consecutivos e a linha rápida está acima da linha lenta. Ele vai curto quando o preço de fechamento é maior do que o preço de fechamento anterior por dois dias consecutivos e a linha rápida está abaixo da linha lenta.

  1. Indicador de volatilidade de Chaikin

Este indicador calcula a mudança no spread entre os preços mais altos e mais baixos ao longo de um período de tempo. Quando o spread aumenta, ele sinaliza volatilidade crescente e uma posição curta pode ser tomada. Quando o spread estreita, ele sinaliza diminuição da volatilidade e uma posição longa pode ser tomada.

O sinal de negociação final é uma combinação dos sinais das duas partes. Quando o sinal do indicador estocástico e o sinal do indicador de volatilidade concordam, esse sinal é tomado. Caso contrário, nenhuma negociação é feita se os dois sinais discordam.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A combinação de dois tipos diferentes de indicadores melhora a precisão do sinal.

  2. O mecanismo de confirmação dupla reduz os falsos sinais e controla o risco.

  3. Concentrar-se nas reversões como a principal direção de negociação permite lucros nos pontos de virada da tendência.

  4. As definições de parâmetros flexíveis tornam-no adaptável a diferentes produtos e prazos.

  5. O ajuste fino dos parâmetros do indicador permite a otimização.

Análise de riscos

Os riscos desta estratégia incluem:

  1. Os sinais de reversão podem ser julgados erroneamente, levando a perdas.

  2. O curto-circuito durante a volatilidade em forte aumento tem riscos de perda. O stop loss pode controlar o risco.

  3. A combinação de dois indicadores pode falhar durante oscilações extremas do mercado.

  4. A monitorização de dois indicadores aumenta a carga de trabalho.

Orientações para melhorias

As melhorias desta estratégia incluem:

  1. Teste mais combinações de parâmetros para encontrar parâmetros ideais.

  2. Adicionar outros indicadores de confirmação, como volume, etc., para criar confirmações múltiplas.

  3. Adicionar mecanismos de stop loss como trailing stop, zone stop etc. para controlar ainda mais o risco.

  4. Otimizar a gestão do dinheiro como fracionário fixo, Kelly etc. para melhorar a eficiência do lucro.

  5. Teste a aplicabilidade em mais produtos e prazos com diferentes definições de parâmetros.

Conclusão

Esta estratégia combina indicadores duplos para sinais de negociação, com foco na captura de reversões. Tem vantagens como alta precisão do sinal e bom controle de risco, e tem espaço para melhorias. Com otimizações para parâmetros, stop loss, gerenciamento de dinheiro, etc., pode ser aprimorada em uma robusta estratégia de negociação de reversão de médio a longo prazo.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/07/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
// Chaikin's Volatility indicator compares the spread between a security's
// high and low prices. It quantifies volatility as a widening of the range
// between the high and the low price.
// You can use in the xPrice1 and xPrice2 any series: Open, High, Low, Close, HL2,
// HLC3, OHLC4 and ect...
//
// 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

ChaikinVolatility(Length, ROCLength, Trigger) =>
    pos = 0
    xPrice1 = high
    xPrice2 = low
    xPrice = xPrice1 - xPrice2
    xROC_EMA = roc(ema(xPrice, Length), ROCLength)
    pos := iff(xROC_EMA < Trigger, 1,
	         iff(xROC_EMA > Trigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Chaikin Volatility", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCV = input(10, minval=1)
ROCLength = input(12, minval=1)
Trigger = input(0, minval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posChaikinVolatility = ChaikinVolatility(LengthCV, ROCLength, Trigger)
pos = iff(posReversal123 == 1 and posChaikinVolatility == 1 , 1,
	   iff(posReversal123 == -1 and posChaikinVolatility == -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.