O recurso está a ser carregado... Carregamento...

Estratégia de tendência da EMA de vários prazos com sistema diário de ruptura alta-baixa

Autora:ChaoZhang, Data: 2024-11-28 15:20:59
Tags:EMAMA

img

Resumo

Esta é uma estratégia quantitativa de negociação que combina breakouts diários altos e baixos com tendências de EMA de vários prazos. A estratégia identifica principalmente oportunidades de negociação monitorando breakouts de preços dos níveis altos e baixos do dia anterior, combinados com tendências de EMA e o indicador Chaikin Money Flow (CMF).

Princípios de estratégia

A lógica de base inclui os seguintes elementos-chave:

  1. Utiliza a função request.security para obter os preços altos e baixos do dia anterior como níveis principais de suporte e resistência.
  2. Incorpora a EMA de 24 períodos como linha de base para a determinação da tendência.
  3. Implementa o CMF (20 períodos) como um indicador abrangente de volume e preço para avaliar o fluxo de caixa do mercado.
  4. Calcula 200 EMAs em prazos de tempo atuais e de 1 hora para determinar direcções de tendência maiores.

Regras comerciais específicas: Entrada longa: quebras de preços acima dos máximos do dia anterior + fechamento acima da EMA + CMF positivo Entrada curta: Preços abaixo dos mínimos do dia anterior + Fechamento abaixo da EMA + CMF negativo Exit: cruzar abaixo da EMA para longs, cruzar acima da EMA para shorts

Vantagens da estratégia

  1. A validação de múltiplos indicadores técnicos melhora a fiabilidade das negociações
  2. A análise de quadros de tempo múltiplos fornece uma avaliação abrangente da tendência
  3. A integração do indicador CMF capta melhor as condições de fluxo de caixa do mercado
  4. Os níveis altos e baixos do dia anterior alinham-se com os hábitos de negociação dos participantes no mercado
  5. Uma lógica estratégica clara, fácil de compreender e executar
  6. Condições de entrada e saída bem definidas minimizam o julgamento subjetivo

Riscos estratégicos

  1. Pode gerar sinais falsos frequentes em mercados variados
  2. Não responder suficientemente a variações instantâneas de preços
  3. Oportunidades potencialmente perdidas nos níveis chave
  4. Falta de consideração das tendências de um período mais longo
  5. Possui riscos significativos durante a volatilidade extrema do mercado

Sugestões de controlo de riscos:

  1. Implementar níveis de stop-loss adequados
  2. Ajustar os parâmetros com base nas condições do mercado
  3. Adicionar filtros de tendência
  4. Considerar a incorporação de indicadores de volatilidade

Orientações de otimização

  1. Implementar mecanismos de otimização de parâmetros adaptativos
  2. Adicionar mais filtros de condições de mercado
  3. Otimizar os mecanismos de stop-loss e take-profit
  4. Incluir indicadores de volatilidade para diferentes condições de mercado
  5. Considerar mecanismos de gestão de posições
  6. Adicionar indicadores de análise de volume

Resumo

Esta é uma estratégia de negociação completa que combina múltiplos indicadores técnicos e análise de vários prazos. A estratégia busca oportunidades de negociação através de análise abrangente de breakouts altos e baixos intradiários, tendências médias móveis e fluxo de dinheiro. Embora existam certos riscos, a estratégia possui bom valor prático através de controle de risco adequado e otimização contínua.


/*backtest
start: 2024-10-28 00:00:00
end: 2024-11-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='The security Daily HIGH/LOW strategy', overlay=true, initial_capital=10000, calc_on_every_tick=true, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100, 
         commission_type=strategy.commission.percent, commission_value=0.1)

// General Inputs
len = input.int(24, minval=1, title='Length MA', group='Optimization parameters')
src = input.source(close, title='Source MA', group='Optimization parameters')
out = ta.ema(src, len)

length = input.int(20, minval=1, title='CMF Length', group='Optimization parameters')
ad = close == high and close == low or high == low ? 0 : (2 * close - low - high) / (high - low) * volume
mf = math.sum(ad, length) / math.sum(volume, length)

// Function to get daily high and low
f_secureSecurity(_symbol, _res, _src) =>
    request.security(_symbol, _res, _src[1], lookahead=barmerge.lookahead_on)

pricehigh = f_secureSecurity(syminfo.tickerid, 'D', high)
pricelow = f_secureSecurity(syminfo.tickerid, 'D', low)

// Plotting previous daily high and low
plot(pricehigh, title='Previous Daily High', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0))
plot(pricelow, title='Previous Daily Low', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0))

// Entry Conditions
short = ta.crossunder(low, pricelow) and close < out and mf < 0
long = ta.crossover(high, pricehigh) and close > out and mf > 0

if short and barstate.isconfirmed
    strategy.entry('short', strategy.short, stop=pricelow[1])
    strategy.close('short', when=close > out)

if long and barstate.isconfirmed
    strategy.entry('long', strategy.long, stop=pricehigh[1])
    strategy.close('long', when=close < out)

// 200 EMA on 1-hour timeframe
ema_200 = ta.ema(close, 200)
ema_200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))

plot(ema_200_1h, color=color.purple, title="200 EMA (1H)")
plot(ema_200, color=color.white, title="200 EMA")

Relacionados

Mais.