Cette stratégie est un système de trading adaptatif basé sur les moyennes mobiles exponentielles (EMA) et les indicateurs directionnels lisses (SDI). Elle combine plusieurs indicateurs techniques et outils de gestion des risques pour capturer les tendances du marché et contrôler le risque.
La force de base de cette stratégie réside dans sa capacité d'adaptation et son approche globale de la gestion des risques. Grâce à l'utilisation de paramètres réglables tels que les périodes EMA, l'assouplissement du SDI et les seuils de gestion des risques, les traders peuvent optimiser la stratégie pour différentes conditions du marché et les préférences personnelles en matière de risque.
Calculs des indicateurs:
Génération de signaux commerciaux
Gestion des postes:
Gestion des risques:
Filtrage du temps:
Capacité de capture des tendances: identifie et suit efficacement les tendances du marché en combinant EMA et SDI.
Haute adaptabilité: s'adapte aux différentes conditions du marché grâce à des paramètres réglables.
Gestion complète des risques: intégrer le profit, le stop-loss et le trailing stop pour un contrôle complet des risques.
Contrôle de position flexible: ratio d'effet de levier et d'utilisation du capital réglable en fonction des différents besoins en risques.
Retour de test convivial: Prend en charge le retour de test des données historiques pour l'optimisation de la stratégie.
Neutre émotionnelle: basée sur des indicateurs objectifs, réduisant l'impact des émotions subjectives.
Versatilité: peut être appliquée à différents délais et instruments de négociation.
Survente: peut entraîner des transactions fréquentes sur des marchés instables, ce qui augmente les coûts.
Nature retardée: l'EMA et l'ISD sont des indicateurs retardés, qui peuvent être lents à réagir à des renversements de tendance.
Faux risque de rupture: peut interpréter à tort les fluctuations à court terme comme des tendances, conduisant à des transactions incorrectes.
Sensibilité des paramètres: les performances sont fortement dépendantes des paramètres, nécessitant une optimisation continue.
Dépendance de l'environnement du marché: peut être sous-performant dans certaines conditions de marché.
Risque d'effet de levier: un effet de levier élevé peut amplifier les pertes, ce qui nécessite une utilisation prudente.
Dépendance de la technologie: s'appuie sur un environnement technique stable, les défaillances du système peuvent entraîner des pertes.
Ajustement dynamique des paramètres: mettre en œuvre un ajustement adaptatif des paramètres EMA et SDI pour les adapter aux différentes phases du marché.
Analyse multi-temporielle: intégrer des signaux provenant de plusieurs périodes pour améliorer la précision du jugement de la tendance.
Filtrage de la volatilité: intégrer des indicateurs de volatilité tels que ATR pour ajuster les règles de négociation pendant les périodes de forte volatilité.
Reconnaissance de l'état du marché: introduire une classification de l'état du marché (tendance/intervalle) pour optimiser la logique de négociation en conséquence.
Optimisation de la gestion des capitaux: mettre en œuvre un ajustement dynamique de la position basé sur l'état des profits et pertes du compte.
Combinaison d'indicateurs: envisager d'ajouter des indicateurs complémentaires tels que le RSI ou le MACD pour améliorer la fiabilité du signal.
Intégration de l'apprentissage automatique: introduire des algorithmes d'apprentissage automatique pour optimiser la sélection des paramètres et la génération de signaux.
Cette stratégie adaptative de suivi des tendances combinant EMA et SDI démontre une puissante adaptabilité du marché et des capacités de gestion des risques. Grâce à des paramètres flexibles et des mesures complètes de contrôle des risques, elle fournit aux traders un cadre commercial quantitatif fiable. Les principaux avantages de la stratégie résident dans sa capture sensible des tendances et son contrôle strict des risques, lui permettant de maintenir une performance stable dans différents environnements de marché.
Cependant, les traders doivent toujours être conscients des risques potentiels inhérents à la stratégie, tels que le décalage et la sensibilité des paramètres.
Dans l'ensemble, cette stratégie fournit une base solide pour le trading quantitatif, adaptée aux investisseurs à la recherche de méthodes de trading systématiques et disciplinées.
/*backtest start: 2024-06-01 00:00:00 end: 2024-06-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © erdas0 //@version=5 strategy("Strategy SEMA SDI Webhook", overlay=true, slippage = 1, commission_value = 0.035, default_qty_type=strategy.percent_of_equity, default_qty_value=50, initial_capital = 1000, calc_on_order_fills = true, process_orders_on_close = true) // Start and end dates dts=input(false,"",inline="dts") dte=input(false,"",inline="dte") start_date = input(timestamp("2023-01-01 00:00:00"), "Start Date",inline="dts") end_date = input(timestamp("2124-01-01"), "End Date",inline="dte") times = true // Initial capital leverage= input.int(10, "Leverage", minval=1,inline="qty") //Leverage Test usdprcnt= input.int(50, "%", minval=1,inline="qty") qty= input(false,"Inital USDT ◨",inline="qty") initial_capital = qty ? (strategy.initial_capital+strategy.netprofit)/close*leverage*usdprcnt/100 : na //Level Inputs tpon=input(false,"TP ◨",group ="Take Profit/Stop Loss", inline="1") sloc=input(true,"SL ◨",group ="Take Profit/Stop Loss", inline="1") tron=input(true,"Trailing ◨",group ="Take Profit/Stop Loss", inline="1") tp = tpon ? input.float(25, "Take Profit %", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="2") : na sl = sloc ? input.float(4.8, "Stop Loss %", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="2") : na tr = tron ? input.float(1.9, "Trailing Stop ", minval=0.1,step=0.1,group ="Take Profit/Stop Loss", inline="4") : na // Take profit and stop loss levels dir=strategy.position_size/math.abs(strategy.position_size) //Directions newtrade=strategy.closedtrades>strategy.closedtrades[1] pftpcnt=dir<0 ? (strategy.position_avg_price-low)/strategy.position_avg_price*100 : dir>0 ? (high-strategy.position_avg_price)/strategy.position_avg_price*100 : na //max profit pftpr= (1 + pftpcnt*dir/100) * strategy.position_avg_price //Trailing Price take_profit = (1 + tp*dir/100) * strategy.position_avg_price stop_loss = (1 - sl*dir/100) * strategy.position_avg_price var float maxpft=na //max profit percent maxpft := newtrade ? 0 : strategy.openprofit > 0 ? math.max(pftpcnt,maxpft) : maxpft var float Tr=na //Trailing Tr := newtrade ? na : pftpcnt >= tr and maxpft-pftpcnt >= tr ? close : Tr //Inputs ocema=input(true, title='EMA ◨',group="Inputs",inline="2") ocsd=input(true, title='SDI ◨',group="Inputs",inline="2") ocsm=input(true, title='Smooth ◨',group="Inputs",inline="2") lenf = input.int(58, "Fast Ema", minval=1,group ="Inputs", inline="3") lens = input.int(70, "Slow Ema", minval=1,group ="Inputs", inline="3") slen = input.int(3, "Smooth", minval=1,group ="Inputs", inline="4") dilen = input.int(1, title="DI Length", minval=1,group ="SDI", inline="5") sdi = input.int(6, title="DI Smooth", minval=1,group ="SDI", inline="5") //EMA emaf=ta.ema(close,lenf) emas=ta.ema(close,lens) semaf=ta.ema(emaf,slen) semas=ta.ema(emas,slen) //SDI dirmov(len,smt) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = ta.ema(fixnan(100 * ta.rma(plusDM, len) / truerange),smt) minus = ta.ema(fixnan(100 * ta.rma(minusDM, len) / truerange),smt) [plus, minus] [plus,minus]=dirmov(dilen,sdi) pm=ta.ema(plus-minus,10) sdcl= plus>minus ? color.new(color.green,80) :plus<minus ? color.new(color.red,80) : na cpm= pm>pm[1] ? color.lime : pm<pm[1] ? color.red : color.yellow barcolor(cpm,title="PM Color") //Plot plot(ocsm ? semaf:emaf,"Fast Ema",color=color.green) plot(ocsm ? semas:semas,"Slow Ema",color=color.red) // Conditions Long = (ocsd ? plus>minus:true) and (ocema ? (ocsm ? semaf:emaf)>(ocsm ? semas:emas):true) Short = (ocsd ? plus<minus:true) and (ocema ? (ocsm ? semaf:emaf)<(ocsm ? semas:emas):true) // Strategy conditions if Long and times strategy.close("Short","Close S") strategy.entry("Long", strategy.long, comment="L",qty = initial_capital) if strategy.position_size>0 strategy.exit("Long LTP", "Long", limit=take_profit, stop=stop_loss, comment="LSL",comment_profit = "LTP") if Tr and strategy.position_size>0 strategy.exit("Long LTP", "Long", limit=take_profit, stop=pftpr, comment="Tr",comment_profit = "LTP") if Short and times strategy.close("Long","Close L") strategy.entry("Short", strategy.short, comment="S",qty = initial_capital) if strategy.position_size<0 strategy.exit("Short STP", "Short", limit=take_profit, stop=stop_loss, comment="SSL",comment_profit ="STP" ) if Tr and strategy.position_size<0 strategy.exit("Short STP", "Short", limit=take_profit, stop=pftpr, comment="Tr",comment_profit = "STP") if not times strategy.close_all()