Stratégie d'inversion de tendance basée sur l'indicateur ADX

Auteur:ChaoZhang est là., Date: 2023-09-13 17h02h31
Les étiquettes:

Cette stratégie s'appelle Trend Reversal Strategy Based on ADX Indicator. Elle utilise l'indicateur ADX pour mesurer la force de la tendance et saisir les opportunités d'inversion en cas de surachat/survente.

L'ADX est l'abréviation de l'indice de direction moyen, qui reflète la force d'une tendance.

Le DMI comprend les lignes DI+ et DI-. DI+ au-dessus de DI- indique une tendance à la hausse, tandis que DI- au-dessus de DI+ indique une tendance à la baisse.

La logique de négociation est la suivante:

  1. Lorsque l'ADX est supérieur à 45, la tendance est considérée comme très forte.

  2. Si DI+ est inférieur à DI- alors, cela indique un état de survente et une opportunité d'inversion de tendance, en long.

  3. À l'inverse, si le DI- est inférieur au DI+, cela suggère des conditions de surachat et une opportunité de renversement pour un short.

  4. Prenez des bénéfices en temps opportun après le renversement.

L'avantage est d'utiliser l'ADX pour déterminer les points d'inversion de tendance forts. Des valeurs ADX élevées filtrent efficacement les faux signaux des marchés variés. Mais les paramètres ADX ont besoin d'optimisation, et le stop loss est également important.

En conclusion, l'ADX est habile à mesurer le moment où les tendances s'inverseront, mais les traders doivent encore surveiller plus de facteurs, en utilisant l'ADX comme indicateur supplémentaire.


/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='DMI swings',title='DMI swings', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true        // create function "within window of time"

[pos_dm, neg_dm, avg_dm] = dmi(14, 14)

//Entry 
strategy.entry(id="long", long = true, when = avg_dm > 45 and pos_dm < neg_dm and window())

//Exit
strategy.close("long", when = avg_dm > 45 and pos_dm > neg_dm and window())

Plus de