
La stratégie utilise des indicateurs dynamiques tels que l’indicateur de direction moyen (ADX), l’indicateur de tendance (DMI) et l’indicateur de trajectoire des marchandises (CCI) pour déterminer la direction de la tendance et suivre la tendance. Lorsque l’ADX et l’indicateur de tendance confirment la formation d’une tendance, établissez une position au moment où le CCI est dépassé.
Calculer les indicateurs ADX, DMI et CCI
Déterminer la direction à prendre.
Entrée dans le stade.
Les pertes en jeu.
Utilisez l’ADX pour juger si la tendance est forte ou faible et évitez de faire des transactions inutiles en l’absence de tendance évidente.
L’utilisation du DMI pour déterminer la direction des tendances réduit la probabilité d’erreurs de jugement.
L’entrée en bourse en cas de dépassement de la CCI permet de saisir en temps opportun le point de basculement de la tendance et de réduire le risque d’entrée en bourse.
L’utilisation d’une combinaison d’indicateurs de dynamique peut améliorer l’exactitude des jugements.
Il existe des mécanismes de prévention qui limitent les pertes individuelles.
Lorsque l’ADX recule, il peut y avoir plusieurs transactions d’anxiété qui entraînent des pertes. Il est possible d’augmenter la marge d’entrée de l’ADX de manière appropriée pour s’assurer que la tendance est suffisamment évidente.
L’indicateur DMI est en retard et peut manquer des opportunités plus tôt dans la tendance. Il peut être combiné avec d’autres indicateurs ou une analyse graphique technique pour déterminer le moment d’entrée.
Le CCI est susceptible de générer des transactions fréquentes. La marge de la CCI peut être allégée de manière appropriée pour filtrer une partie du bruit.
En cas de prise de position en cours de négociation, il est recommandé d’adopter une stratégie neutre sur le marché boursier et de définir des règles de couverture pour réduire le risque de position globale.
Optimiser les paramètres ADX pour trouver le meilleur équilibre entre le filtrage du bruit et la capture de la tendance dans le temps.
Optimiser les paramètres DMI, équilibrer le retard et la sensibilité.
Optimiser les paramètres CCI, équilibrer la fréquence des transactions et la capacité à capturer les inversions.
Le test ajoute ou modifie d’autres indicateurs pour trouver une meilleure combinaison. Par exemple, MACD, KDJ, etc.
Test des variétés commerciales pour trouver les variétés les plus adaptées.
Optimiser les stratégies de gestion des positions et contrôler les risques tout en conservant la capacité de suivre les tendances.
La stratégie utilise les tendances de jugement ADX, la direction déterminée par le DMI et la logique de suivi de la tendance de la position du point de retournement CCI pour les transactions de suivi de la tendance, avec une logique plus forte. Cependant, l’optimisation des paramètres est toujours nécessaire et la gestion de la position est utilisée pour contrôler le risque. Si les paramètres sont ajustés au niveau approprié et appliqués sur des variétés où la tendance est évidente, la stratégie est susceptible de générer des gains stables.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX Strategy", currency = "USD", initial_capital = 1000, overlay=true)
adxlen = input(9, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_Entry = input(25, title="ADX Entry")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[sig, up, down] = adx(dilen, adxlen)
cci_length = input(20, minval=1, title="CCI Length")
cci_ma = sma(close, cci_length)
cci = (close - cci_ma) / (0.015 * dev(close, cci_length))
stop_loss = syminfo.mintick * 100
open_longs = strategy.position_size > 0
open_shorts = strategy.position_size < 0
possible_bull = false
possible_bull := not open_longs ? (possible_bull[1] and not crossunder(up,down) ? true : false) : false
possible_bear = false
possible_bear := not open_shorts ? (possible_bear[1] and not crossunder(down,up) ? true : false) : false
bool bull_entry = crossover(up,down)
if(bull_entry and up < ADX_Entry and cci < 0)
possible_bull := true
bull_entry := false
if(possible_bull and up > ADX_Entry and cci > -100)
bull_entry := true
bool bear_entry = crossover(down,up)
if(bear_entry and down < ADX_Entry and cci > 0)
possible_bear := true
bear_entry := false
if(possible_bear and down >= ADX_Entry and cci < 100)
bear_entry := true
strategy.entry("Short", strategy.short, qty = 1,comment="Short", stop=high[1] - stop_loss, when = bear_entry)
strategy.entry("Long", strategy.long, qty = 1, comment="Long", stop=low[1] - stop_loss, when = bull_entry )
strategy.close_all(when = (open_shorts and (crossover(up,down) or crossover(sig,down))) or (open_longs and ( crossover(down,up) or crossover(sig, up))))