Stratégie de négociation quantitative croisée multipériodique de l'EMA

Auteur:ChaoZhang est là., Date: 2023-12-27 17h09:23
Les étiquettes:

img

Résumé

Cet article présente une stratégie de négociation quantitative basée sur les points de croisement des moyennes mobiles exponentielles (EMA) sur trois périodes différentes.

Principe de stratégie

La stratégie utilise des EMA de trois périodes différentes: 10 jours, 100 jours et 200 jours. Les signaux d'achat ou de vente sont générés en fonction de la direction du croisement lorsque l'EMA à courte période (10 jours) traverse les EMA à plus longue période (100 jours ou 200 jours). La stratégie intègre également un filtre temporel pour s'assurer que les transactions ne sont exécutées que dans des délais spécifiques. Cette combinaison ajoute de la flexibilité et de l'adaptabilité à la stratégie.

Analyse des avantages

La force de cette stratégie réside dans sa simplicité et sa grande adaptabilité. Les EMA à plusieurs périodes fournissent une vue multidimensionnelle des tendances du marché, augmentant la précision des décisions de négociation. En outre, le filtre temporel évite l'instabilité pendant des périodes de marché spécifiques, réduisant les risques potentiels.

Analyse des risques

Malgré son efficacité, la stratégie comporte certains risques. Le risque principal est la volatilité du marché due à des événements imprévus, ce qui peut conduire à l'échec de la stratégie. De plus, les EMA peuvent être en retard, retardant la réflexion des changements du marché. Les méthodes pour atténuer ces risques comprennent la surveillance du marché en temps réel et la combinaison d'autres indicateurs techniques pour améliorer la précision des décisions.

Direction de l'optimisation

Les orientations d'optimisation de la stratégie comprennent l'utilisation intégrée de divers indicateurs techniques, tels que l'indice de force relative (RSI) et les bandes de Bollinger, pour approfondir et élargir l'analyse du marché.

Conclusion

Dans l'ensemble, cette

La stratégie quantitative de trading crossover multi-période EMA est un outil efficace qui peut aider les traders à prendre de meilleures décisions dans un marché volatil.


/*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)

Plus de