Estratégia de arbitragem de média móvel dupla


Data de criação: 2023-11-24 14:21:06 última modificação: 2023-11-24 14:21:06
cópia: 0 Cliques: 768
1
focar em
1617
Seguidores

Estratégia de arbitragem de média móvel dupla

Visão geral

A estratégia é uma estratégia de arbitragem que utiliza a forma de dupla equilíbrio. Combina uma inversão de forma 123 e dois elementos de volume de transação limitado (FVE) para uma operação de arbitragem quando ambos emitem sinais de compra ou venda ao mesmo tempo.

Princípio da estratégia

123 Reversão de forma

A sub-estratégia é inspirada no livro de Ulf Jensen, How to Triple Your Profits in the Futures Market. Ela dá sinais de que:

  • Fazer mais quando o preço de fechamento está acima por 2 dias consecutivos e o indicador de Stoch está abaixo de 50 por 9 dias;
  • Quando o preço de fechamento cair por 2 dias consecutivos e o indicador de stoch rápido estiver acima de 50 no dia 9, faça um corte.

Elementos de quantidade limitada (FVE)

O FVE é um indicador de volume de transação puro. Dependendo da volatilidade dos preços e do tamanho do volume de transação, ele determina se o dinheiro está entrando ou saindo.

Quando os dois indicadores de FVE das barras mais recentes subem ou descem ao mesmo tempo, é emitido um sinal.

Análise de vantagens

A estratégia combina dois indicadores para determinar a tendência do mercado e o fluxo de capital, evitando sinais errôneos. E ambas as estratégias secundárias possuem certas características de inversão, portanto, podem ser usadas para arbitragem para obter lucro.

Além disso, quando a forma de dupla equilíbrio aparece, representa uma tendência consistente no curto e médio prazo e, portanto, possui uma maior estabilidade.

Análise de Riscos

A estratégia depende de uma forma linear, quando os mercados estão em turbulência, e é propenso a sinais errados que levam a perdas. Além disso, a reversão do fracasso é um risco comum.

Pode-se tornar a estratégia mais robusta através de ajustes apropriados de parâmetros, ou pode-se definir um stop loss para controlar o risco.

Direção de otimização

Pode-se testar mais tipos de indicadores de linha média para encontrar a melhor correspondência. Também pode-se introduzir outros indicadores auxiliares de julgamento, como indicadores de força e fraqueza, indicadores de flutuação, etc., para evitar sinais errados.

Além disso, pode-se estudar como ajustar os parâmetros de acordo com a dinâmica da situação do mercado para tornar a estratégia mais adaptável. Também pode ser explorado o aprendizado de máquina e algoritmos de redes neurais para realizar a auto-adaptação dos parâmetros.

Resumir

A estratégia de arbitragem de dupla linha de equilíbrio integra dois indicadores de inversão de pensamento para julgar, evitando o risco até certo ponto. Mas, devido à dependência da forma de equilíbrio, ainda é necessário otimizar ainda mais para tornar a estratégia mais estável. Em geral, a estratégia fornece uma estrutura básica para a negociação de arbitragem de linha curta e vale a pena estudar mais.

Código-fonte da estratégia
/*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 25/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
// The FVE is a pure volume indicator. Unlike most of the other indicators 
// (except OBV), price change doesn?t come into the equation for the FVE (price 
// is not multiplied by volume), but is only used to determine whether money is 
// flowing in or out of the stock. This is contrary to the current trend in the 
// design of modern money flow indicators. The author decided against a price-volume 
// indicator for the following reasons:
// - A pure volume indicator has more power to contradict.
// - The number of buyers or sellers (which is assessed by volume) will be the same, 
//     regardless of the price fluctuation.
// - Price-volume indicators tend to spike excessively at breakouts or breakdowns.
//
// 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


FVE(Period,Factor) =>
    pos = 0
    nRes = 0.0
    xhl2 = hl2
    xhlc3 = hlc3
    xClose = close
    xVolume = volume
    xSMAV = sma(xVolume, Period)
    nMF = xClose - xhl2 + xhlc3 - xhlc3[1]
    nVlm = iff(nMF > Factor * xClose / 100,  xVolume, 
             iff(nMF < -Factor * xClose / 100, -xVolume, 0))
    nRes := nz(nRes[1],0) + ((nVlm / xSMAV) / Period) * 100
    pos := iff(nRes > nRes[1] and nRes > nRes[2], 1,
             iff(nRes < nRes[1] and nRes < nRes[2], -1, nz(pos[1], 0)))   
    pos

strategy(title="Combo Backtest 123 Reversal & Finite Volume Elements (FVE)", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Period = input(18, minval=1)
Factor = input(0.6, minval=0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFVE = FVE(Period,Factor)
pos = iff(posReversal123 == 1 and posFVE == 1 , 1,
	   iff(posReversal123 == -1 and posFVE == -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 )