Estratégia de arbitragem de reversão dupla

Autora:ChaoZhang, Data: 2024-02-06 09:58:04
Tags:

img

Resumo

A estratégia de arbitragem de reversão dupla é um algoritmo de arbitragem que integra indicadores de reversão dupla.

Estratégia lógica

A estratégia consiste em duas sub-estratégias:

  1. 123 Sistema de reversão: É do livro Como eu triplei meu dinheiro no mercado de futuros de Ulf Jensen, página 183. Suas regras de negociação são: quando o preço de fechamento é maior do que o preço de fechamento anterior e menor do que o preço de fechamento de 2 dias atrás, vá longo quando a linha lenta K está abaixo de 50; quando o preço de fechamento é menor do que o preço de fechamento anterior e maior do que o preço de fechamento de 2 dias atrás, vá curto quando a linha rápida K está acima de 50.

  2. Oscilador de oscilação de Gann: é adaptado do livro de Robert Krausz A W.D. Gann Treasure Discovered. Ele julga a direção das oscilações do mercado calculando a subida e queda dos preços mais altos e mais baixos durante um determinado período.

A lógica de negociação desta estratégia de arbitragem é: quando as direções de sinal das duas sub-estratégias são consistentes, os sinais de negociação reais são gerados.

Análise das vantagens

A maior vantagem desta estratégia é que, ao integrar os sinais das duas sub-estratégias, ele pode efetivamente filtrar sinais falsos e melhorar a precisão dos sinais de negociação. As duas sub-estratégias têm seus próprios pontos fortes. O sistema de reversão 123 pode capturar tendências de reversão súbita, enquanto o oscilador de balanço de Gann pode determinar a maturidade das reversões de tendência. Combinando os dois, pode tornar os sinais de negociação mais confiáveis, aumentando assim a estabilidade da estratégia.

Análise de riscos

O principal risco desta estratégia é que a probabilidade de direções inconsistentes de sinais de negociação das duas sub-estratégias é relativamente grande, o que pode levar a sinais de negociação insuficientes. Além disso, as próprias sub-estratégias também apresentam certos riscos de falsos sinais. A combinação desses dois fatores pode levar a um número insuficiente de negociações para a estratégia, sendo assim incapaz de capturar plenamente as oportunidades de mercado.

Para mitigar os riscos, os parâmetros das sub-estratégias podem ser ajustados para aumentar moderadamente a frequência de negociação, ou outros indicadores podem ser combinados para ajudar a filtrar sinais falsos.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Ajustar os parâmetros das sub-estratégias para otimizar a frequência de negociação;
  2. Adicionar avaliações de outros indicadores técnicos para melhorar a qualidade do sinal;
  3. Otimizar a ponderação das subestratégias com base em diferentes produtos e prazos;
  4. Adicionar mecanismos de stop loss para controlar a perda de uma única transação.

Resumo

A estratégia de arbitragem de reversão dupla forma sinais de negociação relativamente fortes, integrando dois tipos diferentes de estratégias de reversão. Pode efetivamente filtrar o ruído e melhorar a qualidade do sinal, adequado para capturar oportunidades de reversão no mercado. No entanto, a probabilidade de sinais inconsistentes das sub-estratégias é relativamente grande, o que pode levar a uma frequência de negociação insuficiente. Além disso, as configurações de parâmetros das próprias estratégias de combinação são bastante complexas, exigindo testes e otimização suficientes para alcançar os melhores resultados.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/11/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
// The Gann Swing Oscillator has been adapted from Robert Krausz's book, 
// "A W.D. Gann Treasure Discovered". The Gann Swing Oscillator helps 
// define market swings. 
//
// 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

    
GannSO(Length) =>
    pos = 0.0
    xGSO = 0.0
    xHH = highest(Length)
    xLL = lowest(Length)
    xGSO:= iff(xHH[2] > xHH[1] and xHH[0] > xHH[1], 1,
             iff(xLL[2] < xLL[1] and xLL[0] < xLL[1], -1, nz(xGSO[1],0)))
    pos := iff(xGSO > 0, 1,
    	     iff(xGSO < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Gann Swing Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthGSO = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posGannSO = GannSO(LengthGSO)
pos = iff(posReversal123 == 1 and posGannSO == 1 , 1,
	   iff(posReversal123 == -1 and posGannSO == -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.