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

Estratégia de média móvel exponencial tripla

Autora:ChaoZhang, Data: 2023-11-15 10:54:39
Tags:

img

Resumo

A estratégia de longo prazo é uma estratégia de longo prazo baseada no indicador TEMA (Triple Exponential Moving Average). Ela usa o TEMA para filtrar o ruído do mercado de curto prazo e identificar as direções de tendência de médio a longo prazo.

Estratégia lógica

A estratégia identifica tendências de médio a longo prazo usando o indicador TEMA. O TEMA é um indicador de tendência suavizado derivado da suavização exponencial tripla da EMA padrão.

Especificamente, a estratégia primeiro calcula a EMA (ema1) do período fastEmaPeriod, depois calcula outra EMA (ema2) da ema1 usando o mesmo período e, finalmente, calcula ema3 com base na ema2.

Através de suavização exponencial múltipla, o TEMA pode identificar efetivamente direções de tendência de médio a longo prazo, apesar de ziguezague e reversões, filtrando o ruído de curto prazo.

Análise das vantagens

  • O TEMA identifica eficazmente as tendências a médio e longo prazo e filtra o ruído a curto prazo, evitando problemas.

  • Apenas as posições longas evitam riscos de queda ilimitados de curto prazo.

  • O montante das posições em risco ponderadas em função do valor da posição em risco deve ser calculado em função do valor da posição em risco.

  • O backtesting da janela de tempo otimiza parâmetros em períodos históricos específicos.

Análise de riscos

  • Os eventos graves de cisne negro podem causar reversões acentuadas durante longos períodos de retenção, levando a grandes perdas.

  • O TEMA pode não sinalizar mudanças de tendência para um stop loss oportuno.

  • A classificação por percentagem não limita o tamanho das perdas por transação, exigindo paradas.

  • O backtesting corre o risco de ser demasiado adequado, os parâmetros otimizados podem não se adequar aos mercados futuros.

Orientações para melhorias

  • Adicionar métricas de volatilidade para reforçar os parâmetros.

  • Implementar stop loss para controlar o tamanho das perdas de uma única transação.

  • Otimizar o dimensionamento das posições para reduzir o seu tamanho durante os drawdowns.

  • Adicionar indicadores de tendência de intervalo de tempo para melhorar a precisão da tendência.

  • Teste diferentes parâmetros de período de retenção para obter o óptimo.

Conclusão

Em resumo, a Triple EMA Long Only Strategy identifica direções de tendência através do indicador TEMA, mantém posições de longo prazo para evitar ruído de curto prazo, permanece apenas por muito tempo para evitar queda ilimitada e capta efetivamente tendências de médio a longo prazo.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TEMA_System_long_only", overlay=true)

//Collect inputs parameters

fastEmaPeriod = input(7, minval=1, title="Fast TEMA Period")

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 4, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2010, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2000)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

fastEma = ema(close, fastEmaPeriod)

//convert EMA into TEMA

ema1 = ema(close, fastEmaPeriod)
ema2 = ema(ema1, fastEmaPeriod)
ema3 = ema(ema2, fastEmaPeriod)

fastTEMA = 3 * (ema1 - ema2) + ema3


buy  = close > fastTEMA
sell = close < fastTEMA

plot(fastTEMA, title = 'TEMA', linewidth=3, color=white)

if window()
    strategy.entry("long",strategy.long, when = buy)
    strategy.close("long", when = sell )

Mais.