Stratégie de négociation basée sur l'ADX, BB %B, AO et EMA

Auteur:ChaoZhang est là., Date: 2023-12-11 16h24 et 11h
Les étiquettes:

img

## Vue d'ensemble Cette stratégie s'appelle Strategy de suivi de l'élan à quatre facteurs. Elle intègre l'indice de mouvement directionnel moyen (ADX) pour déterminer la direction de la tendance, le pourcentage B (BB %B) pour juger de la force relative des actions, l'oscillateur impressionnant (AO) pour déterminer l'élan et les moyennes mobiles exponentielles (EMA) pour juger des positions longues et courtes, permettant un suivi dynamique des prix des actions et la poursuite des actions fortes et l'évitement des faibles.

Le principe de la stratégie
La stratégie utilise quatre indicateurs techniques différents pour déterminer les points d'entrée et de sortie.

Condition d'entrée longue: l'EMA à 5 jours dépasse l'EMA à 21 jours, l'EMA à 50 jours dépasse l'EMA à 200 jours, BB %B est supérieur à la ligne de surachat définie, AO est supérieur à la valeur positive définie et ADX est supérieur à la valeur définie.

Condition d'entrée courte: l'EMA à 5 jours dépasse l'EMA à 21 jours, l'EMA à 50 jours dépasse l'EMA à 200 jours, BB %B est inférieur à la ligne de survente définie, AO est inférieur à la valeur négative définie et ADX est supérieur à la valeur définie.

##Analyse des avantages La stratégie combine plusieurs indicateurs pour déterminer la direction de la tendance et la force relative des stocks, ce qui peut filtrer efficacement les fausses ruptures.

  1. L'indicateur ADX peut déterminer efficacement l'existence et la force de la tendance, en évitant une ouverture fréquente dans un marché de choc.

  2. L'indicateur BB %B évalue si les stocks individuels se trouvent à un niveau haut ou faible, ce qui permet d'éviter efficacement de poursuivre des hauts et de vendre des bas.

  3. L'indicateur AO détermine s'il existe un support de dynamique relativement fort lors de l'achat afin d'assurer l'efficacité de la rupture.

  4. L'indicateur EMA, en combinaison avec le jugement de l'orientation principale du marché, évite d'ouvrir des positions contraires à la tendance.

En résumé, cette stratégie permet de contrôler efficacement les risques commerciaux et de suivre les stocks forts sur le marché.

##Analyse des risques Bien que la stratégie utilise plusieurs indicateurs pour contrôler les risques, certains risques subsistent:

  1. La combinaison de plusieurs indicateurs exponentiels est sensible aux ajustements de paramètres.

  2. La poursuite excessive de l'élan peut manquer les véritables points d'inversion du marché.

  3. Les indicateurs tels que l'EMA ont un caractère retardé et peuvent ne pas être en mesure de refléter l'impact des événements soudains dans le temps.

  4. Des événements soudains majeurs peuvent entraîner une divergence des indicateurs.

Direction de l'optimisation La stratégie peut également être optimisée sous plusieurs aspects:

  1. Utilisez l'apprentissage automatique pour trouver la combinaison optimale de paramètres.

  2. Ajouter d'autres indicateurs déterminant les tendances, tels que l'ICC et le MACD, pour former une combinaison d'indicateurs afin d'améliorer la précision des jugements.

  3. Ajouter des stratégies de stop-loss pour contrôler les pertes uniques.

  4. Prévoyez un délai pour éviter une avidité excessive.

Résumé Cette stratégie s'appelle Quatre facteurs Momentum Tracking Strategy. Elle utilise ADX, BB %B, AO et EMA quatre indicateurs pour déterminer les points d'entrée et de sortie pour suivre dynamiquement les stocks forts. La stratégie peut déterminer efficacement la direction de la tendance et la force relative des stocks pour contrôler les risques commerciaux.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//ADX + BB %B + AO + EMA

strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000)
take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100)
stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100)
bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100)
bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100)
ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2)
adx_value = input(title="ADX", type=input.integer, defval=15)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema5 = ema(close, 5)
ema21 = ema(close, 21)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

//BB %B
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)

//Awesome Oscillator
ao = sma(hl2,5) - sma(hl2,34)

// ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -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 = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, 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)
sig = adx(dilen, adxlen)

long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value
short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value

plot(ema5, color=color.blue)
plot(ema21, color=color.aqua)
plot(ema50, color=color.purple)
plot(ema200, color=color.red)
bgcolor(color=long_strategy ? color.green : na, transp=80)
bgcolor(color=short_strategy ? color.purple : na, transp=80)
    
if inDateRange and long_strategy
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100)
if inDateRange and short_strategy
    strategy.entry("short", strategy.short)
    strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)


Plus de