Stratégie de triple dynamique EMA

Auteur:ChaoZhang est là., Date: 2023-09-27 17:19:26 Le projet de loi est en cours d'adoption.
Les étiquettes:

Résumé

Cette stratégie est modifiée à partir de SoftKill21 Amazing scalper pour les majors avec gestion des risques en utilisant des moyennes mobiles exponentielles triples au lieu de moyennes mobiles simples pour réduire le décalage.

La logique de la stratégie

La stratégie utilise trois EMA avec des périodes différentes: une EMA rapide de 25 périodes, une EMA standard de 50 périodes et une EMA lente de 100 périodes. Lorsque l'EMA rapide traverse l'EMA standard et une EMA lente, elle génère un signal d'achat. Lorsque l'EMA rapide traverse l'EMA standard et une EMA lente, elle génère un signal de vente. Pour réduire le décalage, les EMA sont calculées à l'aide de la technique de lissage exponentiel double. La stratégie vérifie également si les heures d'ouverture du marché des sessions de Londres ou de New York correspondent aux conditions d'entrée.

Plus précisément, la stratégie calcule d'abord les trois lignes EMA, puis vérifie si l'EMA rapide forme une croix dorée ou une croix de mort avec l'EMA standard et l'EMA lente. Si la condition correspond également aux heures d'ouverture du marché de Londres ou de New York, des signaux d'achat ou de vente sont générés. Lors de la détermination de la taille de la position, la stratégie calcule un pourcentage fixe du capital du compte en tant qu'exposition au risque, puis le convertit en taille de contrat et lots arrondis pour ajuster la position dynamiquement pour chaque ordre.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Les EMA triples peuvent efficacement lisser les données de prix et identifier la direction de la tendance.

  2. L'utilisation d'un double lissage exponentiel réduit le retard et rend les signaux plus sensibles.

  3. L'inclusion des principales sessions de négociation permet d'éviter des signaux trompeurs en dehors des heures de pointe.

  4. L'approche de gestion des risques ajuste la taille de la position en fonction du fonds propres du compte, évitant ainsi des pertes excessives sur des transactions uniques.

  5. La logique est simple et claire, facile à comprendre et à mettre en œuvre, adaptée aux débutants.

  6. La stratégie peut être optimisée et ajustée pour différentes paires de devises et délais, avec une large applicabilité.

Analyse des risques

La stratégie comporte également des risques potentiels:

  1. Les EMA ne peuvent pas filtrer efficacement les fausses éruptions à court terme causées par des événements soudains, ce qui peut générer de faux signaux.

  2. Le dimensionnement des positions par pourcentage fixe ne peut pas s'adapter dynamiquement à la volatilité du marché, ce qui conduit à des positions surdimensionnées ou sousdimensionnées.

  3. On ne considère que deux sessions principales, qui peuvent manquer des opportunités de négociation dans d'autres sessions.

  4. L'absence de mécanisme de stop loss entraîne une incapacité à contrôler efficacement la perte unilatérale.

  5. La réduction des périodes d'EMA ou l'incorporation d'indicateurs de pointe peuvent aider.

  6. Le rendement peut être affecté par les coûts de transaction, et les niveaux de stop loss et de take profit doivent être ajustés en conséquence.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez différents paramètres de période EMA pour trouver des combinaisons optimales.

  2. Ajoutez d'autres indicateurs de filtrage tels que RSI, Bollinger Bands pour améliorer la qualité du signal.

  3. Mettre en place une dimensionnement dynamique des positions basé sur la volatilité et la rentabilité du marché.

  4. Ajoutez des mouvements ou des temps d'arrêt pour limiter les pertes.

  5. Testez différentes sessions de négociation pour trouver les moments optimaux.

  6. Optimiser les niveaux de prise de profit et de stop-loss pour équilibrer la taille du profit et le taux de gain.

  7. Essayez de modifier le calcul de l'EMA comme une EMA pondérée linéaire pour réduire le décalage.

  8. Utilisez l'apprentissage automatique pour trouver les paramètres optimaux.

  9. Modèle des coûts de transaction et système d'ajustement pour un bénéfice net maximal.

Grâce aux optimisations susmentionnées, la rentabilité du système peut être améliorée, les tirages contrôlés, l'applicabilité élargie, pour obtenir une stratégie commerciale plus puissante et robuste.

Résumé

La logique générale de cette stratégie est claire, en utilisant des EMA triples pour identifier les tendances, en combinant avec les principales sessions pour l'exécution et en adoptant la taille des positions basée sur le pourcentage du compte. Il appartient à un système typique de suivi des tendances. Il y a beaucoup de place pour l'optimisation via l'ajustement des paramètres, des améliorations des mécanismes, l'introduction de la technologie, etc. pour étendre davantage son applicabilité sur plus de marchés et améliorer la robustesse. En tant qu'apprentissage pour les débutants, il fournit un bon point de départ. Avec la pratique et les améliorations, il peut se transformer en une stratégie quantitative mature et fiable.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// original author SoftKill21
//@version=4
//@capam 

strategy(title="Triple EMA Scalper low lag strat", shorttitle="3EMA scalper", overlay=true)
strategy.initial_capital = 50000
len1 = input(25, minval=1, title="Length")
len2 = input(50, minval=1, title="Length")
len3 = input(100, minval=1, title="Length")

src = input(close, title="Source")
tmp1 = ema(src, len1)
tmp2 = ema(src, len2)
tmp3 = ema(src, len3)
fastemaOut = 2*tmp1 - ema(tmp1, len1)
standardemaOut = 2*tmp2 - ema(tmp2, len2)
slowemaOut = 2*tmp3 - ema(tmp3, len3)
//fastemaOut = sma(src, len1)
//standardemaOut = sma(src, len2)
//slowemaOut = sma(src, len3)

plot(fastemaOut, color=color.black, title="First EMA")
plot(standardemaOut, color=color.yellow, title="Second EMA")
plot(slowemaOut, color=color.blue, title="Third EMA")


timeinrange(res, sess) => time(res, sess) != 0


londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longCondition = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and londopen //or nyopen)
shortCondition = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and londopen// or nyopen)

longCondition2 = crossover(fastemaOut,standardemaOut) and crossover(fastemaOut,slowemaOut) and nyopen
shortCondition2 = crossunder(fastemaOut,standardemaOut) and crossunder(fastemaOut,slowemaOut) and nyopen
tp = input(50,title="TP")
sl = input(100, title="SL")

tradeLondon =  input(title="Trade london session?", type=input.bool, defval=true)
tradeNewyork = input(title="Trade new york session?", type=input.bool, defval=true)

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ")/100           //risk % per trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000        

if(tradeLondon==true)
    strategy.entry("long",1,when=longCondition)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

if(tradeNewyork==true)
    strategy.entry("long",1,when=longCondition2)
    strategy.exit("tp/sl","long",profit=tp,loss=sl)
    
    strategy.entry("short",0,when=shortCondition2)
    strategy.exit("tp/sl","short",profit=tp,loss=sl)

// strategy.risk.max_intraday_filled_orders(2) 

Plus de