Estratégia de rastreamento de média móvel dinâmica


Data de criação: 2023-12-04 15:38:09 última modificação: 2023-12-04 15:38:09
cópia: 5 Cliques: 699
1
focar em
1619
Seguidores

Estratégia de rastreamento de média móvel dinâmica

Visão geral

Esta estratégia utiliza a estratégia explicada por Larry Williams em seu livro Secret Short Term Trading, que utiliza duas médias móveis de 3 períodos, uma representando os altos e outra representando os baixos. Quando o preço está abaixo da média móvel de 3 períodos baixos, temos um sinal de posição longa.

Princípio da estratégia

A lógica central da estratégia é calcular a média móvel de 3 períodos de altas e baixas. Concretamente, ela usa a função ta.ema para calcular a média móvel do índice de altas e baixas dos últimos 3 bares para produzir pontos de apoio e resistência dinâmicos. Quando o preço cai abaixo da média da média, indica que está em queda, para que possamos fazer mais; Quando o preço volta a subir acima da média da média da alta, indica que a tendência ascendente terminou.

Análise de vantagens

A maior vantagem da estratégia reside na sua simplicidade e dinâmica. Em comparação com a média de alta e baixa de um determinado período tradicional, a estratégia usa médias móveis de curto prazo calculadas de forma contínua, que são mais sensíveis e oportunas para capturar as mudanças de preço. Isso permite que ele identifique rapidamente os pontos de compra e venda para entrar e sair do mercado.

Riscos e soluções

O principal risco da estratégia é que ela é lenta em reagir a eventos inesperados, como grandes notícias. Devido ao seu curto período de média móvel, ela precisa de algum tempo para ajustar a posição da linha média quando há uma forte oscilação de preços. Isso pode levar a perdas ou a oportunidades perdidas. Além disso, a excesso de sensibilidade pode levar a transações erradas.

Direção de otimização

A estratégia ainda tem muito espaço para otimização. Primeiro, podemos combinar outros indicadores, como o indicador de choque para filtrar, tornando o sinal mais confiável. Segundo, também podemos adicionar a lógica de stop-loss para controlar o risco.

Resumir

Esta estratégia é muito simples e prática, com base em uma média de curto prazo de altos e baixos, para julgar a tendência. Os seus benefícios são a forte dinâmica, o baixo volume de cálculo, a alta disponibilidade em tempo real e a conveniência de negociações frequentes. Mas também há problemas de falta de sensibilidade à reação a eventos inesperados e a alta taxa de erro de sinal.

Código-fonte da estratégia
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(
     "Larry Williams 3 Period EMAs strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)

endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

// EMA
period = 3

emaH = ta.ema(high, period)
emaL = ta.ema(low, period)

// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)

// Conditions
if(inDateRange and close < emaL)
    strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
    strategy.close("Long", comment="Close Long")

// Uncomment to enable short entries
//if(inDateRange and close > emaH)                                    
//    strategy.entry("Short", strategy.short, comment="Short")    
//if(close < emaL)
//    strategy.close("Short", comment="Close Short")