Estratégia de combinação de dupla média móvel de cruzamento e balanço de potência de "bull bear"

Autora:ChaoZhang, Data: 2024-01-08 17:09:48
Tags:

img

Resumo

Esta estratégia usa primeiro as linhas de média móvel dupla de EMA de 2 períodos e 20 períodos para determinar se o preço quebra as médias móveis, como critério básico para entrar no mercado. Ao mesmo tempo, o indicador auxiliar Bull Bear Power Balance Indicator identifica ainda mais o poder relativo entre touros e ursos para evitar operações erradas. Os dois tipos de indicadores geram conjuntamente o sinal de negociação final.

Princípio da estratégia

  1. Indicador de média móvel dupla

    • Calcular a média móvel exponencial (EMA) de 2 períodos e de 20 períodos
    • Gerar sinais de negociação quando o preço de fechamento atravessa de um lado das médias móveis para o outro
    • A ruptura da 20-EMA determina a direcção da tendência
    • A ruptura do 2-EMA determina o ponto de entrada específico
  2. Indicador de Balanço de Força do Touro Urso

    • Calcular separadamente o valor da potência de touro e o valor da potência de urso
    • Compare os dois valores para determinar a força relativa entre touros e ursos
    • A direcção mais forte serve de juízo auxiliar para a entrada
  3. Julgamento combinado dos dois indicadores

    • Indicador de média móvel dupla julga a principal direcção da tendência
    • Indicador de equilíbrio de poder do touro urso faz julgamento regional local
    • Emissão de sinais de negociação quando ambos os indicadores emitirem um julgamento coerente

Análise das vantagens

A maior vantagem desta estratégia combinada é a integração de indicadores de diferentes variedades para obter um julgamento comercial mais confiável.

  1. Usando média móvel dupla para determinar a direção principal, evitar ser enganado por flutuações locais
  2. Utilize o indicador de balanço de poder de urso para julgamento regional local para compreender com precisão o ponto de entrada específico
  3. Dois tipos de indicadores verificam-se mutuamente e podem filtrar algumas operações erradas para reduzir os riscos comerciais
  4. Configurações de parâmetros flexíveis que podem ser otimizadas para diferentes tipos de mercado
  5. A ideia de estratégia é simples e clara, fácil de entender e fácil de otimizar mais tarde

Análise de riscos

É necessário observar alguns riscos desta estratégia:

  1. O atraso dos sinais do indicador pode levar a pontos de stop loss profundos
  2. O indicador de média móvel dupla é sensível às definições dos parâmetros
  3. O indicador de balanço de "bull bear" tem uma precisão ligeiramente inferior na avaliação das tendências de curto prazo.
  4. O desvio de julgamento pode ocorrer para ambos os indicadores em condições especiais de mercado (sinais comuns falsos de ruptura)

Contramedidas:

  1. Redução adequada do período de retenção ou fixação de uma parada de perda de movimento adequada
  2. Teste diferentes combinações de parâmetros para encontrar parâmetros ideais
  3. Ver outros indicadores para confirmação
  4. Otimizar os parâmetros com base nas características das diferentes variedades

Orientações de otimização

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

  1. Teste mais combinações de parâmetros do indicador da média móvel
  2. Aumentar as estratégias de stop loss para controlar o single stop loss
  3. Incorporar indicadores de volatilidade para melhorar a autoadaptabilidade dos parâmetros
  4. Adicionar modelos de aprendizado de máquina para obter otimização de parâmetros dinâmicos
  5. Tente diferentes indicadores de tendência para substituir o equilíbrio de poder dos touros e ursos
  6. Desenvolver interfaces visuais para facilitar o teste de diferentes parâmetros pelo utilizador

Conclusão

Esta estratégia julga a tendência principal através do indicador de média móvel dupla e usa o indicador de equilíbrio de poder de urso para ajudar a determinar o tempo de entrada. Os dois indicadores se verificam e podem efetivamente reduzir a probabilidade de operações erradas. Os parâmetros da estratégia são flexíveis e podem ser otimizados para diferentes variedades.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/05/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//    This new indicator analyzes the balance between bullish and
//    bearish sentiment.
//    One can cay that it is an improved analogue of Elder Ray indicator.
//    To get more information please see "Bull And Bear Balance Indicator" 
//    by Vadim Gimelfarb. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


BBB(SellLevel,BuyLevel) =>
    pos = 0.0
    value = close < open ? 
              close[1] > open ?  math.max(close - open, high - low) : high - low : 
                 close > open ? 
                  close[1] > open ? math.max(close[1] - low, high - close) : math.max(open - low, high - close) :
                   high - close > close - low ? 
                     close[1] > open ? math.max(close[1] - open, high - low) :high - low : 
                      high - close < close - low ? 
                         close > open ? math.max(close - low, high - close) : open - low : 
                           close > open ? math.max(close[1] - open , high - close) :
                             close[1] < open ? math.max(open - low, high - close) : high - low
    
    value2 =close < open ? 
              close[1] < open ?  math.max(high - close[1], close - low) : math.max(high - open, close - low) : 
               close > open ? 
                 close[1] > open ?  high - low : math.max(open - close[1], high - low) : 
                  high - close > close - low ? 
                   close[1] < open ? math.max(high - close[1], close - low) : high - open : 
                     high - close < close - low ? 
                      close[1] > open ?  high - low : math.max(open - close, high - low) : 
                       close[1] > open ? math.max(high - open, close - low) :
                         close[1] < open? math.max(open - close, high - low): high - low
    nBBB = value2 - value
    pos :=  nBBB < SellLevel ? -1 :
    	     nBBB >= BuyLevel ? 1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bull And Bear Balance', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull And Bear Balance ═════●'
SellLevel = input.float(-15, step=0.01, group=I2)
BuyLevel = input.float(15, step=0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBBB = BBB(SellLevel,BuyLevel)
iff_1 = posEMA20 == -1 and prePosBBB == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBBB == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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.