Estratégia combinada de reversão e fluxo de caixa

Autora:ChaoZhang, Data: 2023-09-17 22:37:54
Tags:

Esta estratégia combina 123 padrões de reversão e um indicador de fluxo de caixa para identificar reversões de tendência.

Estratégia lógica

Em primeiro lugar, 123 padrões de reversão são usados para detectar pontos de reversão potenciais. Especificamente, um sinal de compra é gerado quando os preços fecham nos dois primeiros dias e depois fecham no terceiro dia, com o oscilador estocástico abaixo do limiar. Um sinal de venda é gerado quando os preços fecham nos dois primeiros dias e depois fecham no terceiro dia, com o oscilador estocástico acima do limiar.

Em segundo lugar, as linhas rápidas e lentas do indicador de fluxo de dinheiro são calculadas. A linha rápida consiste em média móvel exponencial de curto período do fluxo de dinheiro, enquanto a linha lenta é a EMA de período mais longo. Quando a linha rápida está acima da linha lenta, ela indica o fluxo de dinheiro e gera um sinal de compra. O oposto sugere o fluxo de dinheiro e gera um sinal de venda.

Por fim, quando ambos os sinais de inversão e fluxo de caixa 123 concordam, um sinal de negociação é gerado.

Análise das vantagens

  • A combinação de múltiplos sinais melhora a confiabilidade.
  • 123 reversões detectam pontos de virada e o fluxo de caixa indica fluxos de fundos.
  • Os parâmetros podem ser ajustados para diferentes produtos e prazos.
  • Os sinais individuais podem também ser utilizados de forma independente.

Análise de riscos

  • As inversões podem gerar sinais falsos.
  • O fluxo de caixa tem um efeito retardador, incapaz de capturar pontos de viragem em tempo hábil.
  • Lógica complexa com vários sinais combinados.
  • Preciso de ajustar os parâmetros para evitar excessos.

Os riscos podem ser geridos melhorando a fiabilidade da reversão, ajustando a sensibilidade do fluxo de caixa, implementando stop loss, etc.

Orientações de otimização

  • Teste diferentes conjuntos de parâmetros para encontrar valores ideais.
  • Ajustar os limiares de compra/venda para reduzir as operações incorretas.
  • Adicionar outros indicadores técnicos para melhorar a qualidade do sinal.
  • Implementar stop loss para controlar a perda de uma única transação.
  • Otimizar as estratégias de gestão de fundos para gerir o risco global.

Conclusão

A estratégia integra as vantagens da negociação de reversão e da tendência seguinte. Pode identificar efetivamente pontos de virada do mercado. No entanto, o ajuste de parâmetros e o controle de risco são necessários para evitar sinais falsos excessivos ao rastrear tendências. Se usado corretamente, pode se tornar uma estratégia de negociação eficiente.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/02/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
//    Indicator plots Money Flow Indicator (Chaikin). This indicator looks 
//    to improve on Larry William's Accumulation Distribution formula that 
//    compared the closing price with the opening price. In the early 1970's, 
//    opening prices for stocks stopped being transmitted by the exchanges. 
//    This made it difficult to calculate Williams' formula. The Chaikin 
//    Oscillator uses the average price of the bar calculated as follows 
//    (High + Low) /2 instead of the Open.
//    The indicator subtracts a 10 period exponential moving average of the 
//    AccumDist function from a 3 period exponential moving average of the 
//    AccumDist function.  
//
// 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


MFI(Fast,Slow) =>
    pos = 0.0
    lenMax = max(Fast, Slow)
    lenMin = min(Fast, Slow)
    xDiv = (high - low) * volume
    SumMax = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMax)
    SumMin = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMin)
    emaMax = ema(SumMax, lenMax)
    emaMin = ema(SumMin, lenMin)
    nRes = emaMax - emaMin
    pos:= iff(nRes > 0, 1,
           iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Money Flow Indicator", 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, "---- Money Flow ----")
Fast = input(3, minval=1)
Slow = input(10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMFI = MFI(Fast,Slow)
pos = iff(posReversal123 == 1 and posMFI == 1 , 1,
	   iff(posReversal123 == -1 and posMFI == -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.