Cette stratégie est un système de trading auto-adaptatif de suivi de la tendance basé sur les moyennes mobiles indicielles (EMA) et les indicateurs de direction glissante (SDI). Elle combine plusieurs indicateurs techniques et outils de gestion des risques afin de capturer les tendances du marché et de contrôler les risques. La stratégie utilise les croisements d’EMA rapides et lents et la direction du SDI pour déterminer les tendances du marché et générer des signaux d’achat et de vente en conséquence.
Le cœur de la stratégie réside dans son adaptabilité et son approche globale de la gestion des risques. En utilisant des paramètres ajustables tels que les cycles EMA, la fluidité SDI et les seuils de gestion des risques, les traders peuvent optimiser la stratégie en fonction des différentes conditions du marché et des préférences de risque personnelles.
Indicateur calculé:
Le signal de transaction est généré:
Gestion des positions:
Gestion des risques :
Filtre à l’heure:
Capture de tendances: en combinaison avec l’EMA et le SDI, identifier et suivre efficacement les tendances du marché
Adaptabilité: adaptation aux différentes conditions du marché grâce à des paramètres réglables.
Gestion complète des risques: arrêt intégré, arrêt de perte et suivi des pertes, contrôle complet des risques.
Contrôle de position flexible: le ratio de levier et d’utilisation des fonds peut être ajusté en fonction des différentes préférences de risque.
La fonctionnalité de rétrospective est conviviale: elle prend en charge la rétrospective des données historiques, ce qui facilite l’optimisation des stratégies.
Neutralité émotionnelle: réduire l’impact émotionnel subjectif sur la base d’indicateurs objectifs.
Multifonctionnalité: utilisation dans différentes périodes et variétés de transactions.
Surtrades: les marchés en crise peuvent générer des transactions fréquentes, augmentant les coûts.
L’EMA et le SDI sont des indicateurs de retard qui peuvent être plus lents à réagir lorsqu’une tendance est inversée.
Risque de fausse rupture: il est possible d’avoir une mauvaise compréhension de la tendance dans les fluctuations à court terme, ce qui peut conduire à des transactions erronées.
Sensibilité aux paramètres: les performances dépendent fortement des paramètres, ce qui nécessite une optimisation continue.
Dépendance aux conditions du marché: les performances peuvent être médiocres dans certaines conditions.
Risque de levier: un levier élevé peut augmenter les pertes et doit être utilisé avec prudence.
Dépendance à la technologie: dépendance à un environnement technologique stable, où les défaillances du système peuvent entraîner des pertes.
Adaptation dynamique des paramètres: réalisation d’une adaptation automatique des paramètres EMA et SDI pour s’adapter à différentes phases du marché.
Analyse de plusieurs périodes: intégrer des signaux de plusieurs périodes pour améliorer l’exactitude des tendances.
Filtrage de la volatilité: ajout d’indicateurs de volatilité tels que l’ATR, afin d’ajuster les règles de négociation en période de forte volatilité.
Identification de l’état du marché: introduire la classification des états du marché (trends/tremblements) et optimiser la logique de négociation de manière ciblée.
Optimisation de la gestion des fonds: mise en œuvre d’un ajustement dynamique des positions, ajustement automatique des risques en fonction de la situation de la perte et de la perte du compte.
Portfolio d’indicateurs: envisagez d’ajouter d’autres 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, optimiser la sélection des paramètres et la génération de signaux.
La stratégie de suivi des tendances auto-adaptative combinée à l’EMA et à l’SDI présente une forte capacité d’adaptation au marché et de gestion des risques. Grâce à des paramètres flexibles et à des mesures de contrôle des risques complètes, elle offre aux traders un cadre de négociation quantifié fiable. Le principal avantage de la stratégie réside dans sa capture sensible des tendances et sa stricte maîtrise des risques, ce qui lui permet de maintenir une performance stable dans différents environnements de marché.
Cependant, les traders doivent toujours être attentifs aux risques potentiels tels que le retard et la sensibilité des paramètres inhérents à la stratégie. La stratégie est susceptible d’améliorer encore sa performance et sa stabilité grâce à une optimisation et à une amélioration continues, en particulier en ce qui concerne l’ajustement des paramètres dynamiques, l’analyse de plusieurs périodes et l’identification de l’état du marché.
Dans l’ensemble, cette stratégie fournit une base solide pour le trading quantitatif et convient aux investisseurs qui recherchent des méthodes de trading systématiques et disciplinées. En comprenant en profondeur les principes de la stratégie et en combinant un style de trading individuel, les traders peuvent utiliser efficacement cet outil pour renforcer leur avantage concurrentiel sur les marchés financiers.
/*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()