Estratégia de negociação quantitativa de crossover EMA multiperíodo


Data de criação: 2023-12-27 17:09:23 última modificação: 2023-12-27 17:09:23
cópia: 0 Cliques: 640
1
focar em
1619
Seguidores

Estratégia de negociação quantitativa de crossover EMA multiperíodo

Visão geral

Este artigo apresenta uma estratégia de negociação quantitativa baseada em três diferentes períodos de interseção de EMAs. A estratégia visa usar os interseções de EMAs para identificar tendências de longo e curto prazo no mercado de ações e tomar decisões de negociação eficazes.

Princípio da estratégia

A estratégia usa três diferentes períodos de EMA: 10 dias, 100 dias e 200 dias. Quando o curto período de EMA (de 10 dias) atravessa o longo período de EMA (de 100 dias ou 200 dias), gera um sinal de compra ou venda de acordo com a direção da travessia. A estratégia também incorpora um filtro de tempo para garantir que as transações sejam feitas apenas em determinados períodos de tempo.

Análise de vantagens

A vantagem desta estratégia é a sua simplicidade e alta adaptabilidade. O EMA multi-periódico fornece uma visão multi-angular das tendências do mercado, aumentando a precisão das decisões de negociação. Ao mesmo tempo, o filtro de tempo evita a instabilidade de um determinado período do mercado, reduzindo o risco potencial.

Análise de Riscos

Apesar da eficácia dessa estratégia, há um certo risco. O principal risco é que eventos inesperados no mercado possam levar ao fracasso da estratégia. Além disso, os indicadores EMA podem ser retardados, com atrasos para refletir as mudanças no mercado.

Direção de otimização

A direção de otimização da estratégia inclui o uso integrado de vários indicadores técnicos, como o índice de força relativa (RSI) e as faixas de Brin, para aumentar a profundidade e a amplitude da análise de mercado. Além disso, pode ser melhor adaptado a diferentes condições de mercado, ajustando o ciclo EMA.

Resumir

Em geral, esta estratégia de negociação de quantificação de EMAs de múltiplos períodos é uma ferramenta eficiente para ajudar os comerciantes a tomar melhores decisões em mercados variáveis. Ao se optimizar e se adaptar às mudanças do mercado, esta estratégia tem o potencial de obter maiores ganhos em negociações futuras.

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

//@version=5
start = timestamp(2023,1,1,0,0)
end = timestamp(2024,1,1,0,0)
strategy("Tester Emas", overlay = true)

periodo1 = input(10,"Periodo_1")
periodo2 = input(100,"Periodo_2")
periodo3 = input(200,"Periodo_3")

//definir media moviles
ema1 = ta.ema(close,periodo1)
ema2 = ta.ema(close,periodo2)
ema3 = ta.ema(close,periodo3)

//Desde
desde_a = input(2000, title = "Desde año")
desde_m = input.int(   1, title = "Desde mes", minval=1, maxval = 12)
desde_d = input.int(   1, title = "Desde dia", minval=1, maxval = 31)

//Hasta
hasta_a = input(2030, title = "Hasta año")
hasta_m = input.int(   1, title = "Hasta mes", minval=1, maxval = 12)
hasta_d = input.int(   1, title = "Hasta dia", minval=1, maxval = 31)

FechaValida() => true

//Condicion de entradas
longCondition = ta.crossover(ema1, ema2)
shortCondition = ta.crossunder(ema1,ema2)

alcista = (ema1 > ema2) and (ema2 > ema3)
comprado =strategy.position_size > 0



//Comprar o vender segun las condiciones de entradas

//if (longCondition)
if (not comprado and alcista and FechaValida())
    // Round redondea mi capital para comprar las acciones en cantidades enteras
    cantidad = math.round(strategy.equity/ close)
    strategy.entry("Compra", strategy.long, cantidad)
//if (shortCondition)
if (comprado and not alcista and FechaValida())
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta")

if (comprado and not FechaValida())
    //Cierre x finalizacion de periodo
    //strategy.entry("Venta", strategy.short)
    strategy.close("Compra" , comment = "Venta x fin")

//Graficar las medias moviles
plot(ema1, color = color.green, title = "Ema1")
plot(ema2, color = color.yellow, title = "Ema2")
plot(ema3, color = color.red, title = "Ema2")
//GMarca los cruces de medias
bgcolor(longCondition ? color.green : na)
bgcolor(shortCondition ? color.red : na)