Estratégia composta de criação de riqueza

Autora:ChaoZhang, Data: 2023-11-01 16:28:55
Tags:

img

Resumo

Esta estratégia é uma estratégia de negociação composta que visa lucrar no médio a curto prazo.

Estratégia lógica

A estratégia consiste em duas partes:

123 Estratégia de reversão

Esta parte é adaptada da estratégia de reversão descrita na página 183 do livro How I Tripled My Money in the Futures Market de Ulf Jensen. Ele vai longo quando o preço de fechamento é maior do que o fechamento anterior por 2 dias consecutivos e o Stochastic Lento de 9 dias está abaixo de 50.

Estratégia de oscilador incrível

Esta parte usa o indicador Awesome Oscillator, que compara o valor atual de AO com o anterior. Se o valor atual de AO for maior do que o anterior, indica uma boa oportunidade de longo e a cor da barra de histograma é azul. Se o valor atual de AO não for maior do que o anterior, indica uma boa chance de curto e a cor da barra é vermelha.

O sinal combinado é gerado da seguinte forma: se as estratégias 123 Reversal e Awesome Oscillator ambas derem sinais de compra, adotar uma estratégia longa; se ambas derem sinais de venda, adotar uma estratégia curta.

Análise das vantagens

A maior vantagem desta estratégia composta é que combina os pontos fortes de dois tipos diferentes de estratégias, melhorando a confiabilidade e a estabilidade dos sinais de negociação.

Especificamente, a estratégia 123 Reversal é mais aplicável no médio a curto prazo e pode capturar oportunidades de reversão. A estratégia Awesome Oscillator se concentra mais em tendências de curto prazo e é mais sensível. As duas estratégias se complementam, ajudam a filtrar falsos sinais e capturam melhores oportunidades de entrada em diferentes estágios.

Além disso, esta estratégia utiliza de forma abrangente informações da linha K e um indicador de oscilador, tendo em conta tanto a ação do preço como a relação volume-preço para uma abordagem mais completa.

Análise de riscos

O maior risco desta estratégia é que a combinação de múltiplas estratégias também compõe os seus riscos individuais.

A estratégia 123 Reversal em si não pode evitar completamente o risco de ficar preso em um mercado limitado a um intervalo.

Além disso, as configurações de parâmetros também afetam o desempenho da estratégia.

Para mitigar os riscos, dimensionar adequadamente as posições para limitar a queda em negócios individuais.

Orientações de otimização

A estratégia pode ser ainda melhorada nos seguintes aspectos:

  1. Teste e otimize os parâmetros para encontrar a combinação de parâmetros ideal.

  2. Adicionar outros indicadores ou filtros para melhorar a qualidade do sinal.

  3. Otimizar em diferentes prazos para uma abordagem de vários prazos.

  4. Adicionar paradas dinâmicas para controlar melhor os riscos.

  5. Considerar os custos reais de transacção e definir critérios de entrada/saída.

  6. Considere a principal direção da tendência para evitar a negociação de contra-tendência.

Conclusão

Esta estratégia combina os pontos fortes das estratégias 123 Reversal e Awesome Oscillator, aumentando a confiabilidade do sinal, mantendo a flexibilidade e sensibilidade às mudanças do mercado.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/08/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
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// 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


BWAC(nLengthSlow,nLengthFast) =>
    pos = 0.0
    xSMA1_hl2 = sma(hl2, nLengthFast)
    xSMA2_hl2 = sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    pos:= iff(nRes > nRes[1], 1,
             iff(nRes < nRes[1], -1, nz(pos[1], 0)))  
    pos

strategy(title="Combo Backtest 123 Reversal & Awesome Oscillator (AC)", 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, "---- Awesome Oscillator (AC) ----")
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBWAC = BWAC(nLengthSlow,nLengthFast)
pos = iff(posReversal123 == 1 and posBWAC == 1 , 1,
	   iff(posReversal123 == -1 and posBWAC == -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.