ADX Filtré Chande Kroll Tendance à la baisse de la perte à la suite de la stratégie

Auteur:ChaoZhang est là., Date: 2023-11-06 14:52:27 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur de stop loss de Chande Kroll et l'indicateur d'indice de mouvement directionnel moyen (ADX) pour mettre en œuvre une stratégie de suivi de tendance relativement simple.

La logique de la stratégie

La stratégie calcule d'abord les lignes longues et courtes de l'arrêt-perte de Chande Kroll. La ligne longue est calculée sur la base du prix le plus élevé au cours des dernières périodes p. La ligne courte est calculée sur la base du prix le plus bas au cours des dernières périodes p. Le point le plus élevé des lignes longues et courtes au cours des dernières périodes q est ensuite utilisé comme les lignes longues et courtes actuelles. Cela filtre les fluctuations de prix à court terme et déclenche uniquement l'arrêt-perte aux points d'inversion de tendance.

Lorsque le prix de clôture dépasse la ligne courte stop_short, un signal long est généré.

En outre, l'indicateur ADX est utilisé pour juger de la force de la tendance.

Les avantages

La stratégie combine les avantages des indicateurs de tendance et des indicateurs de stop-loss. Elle peut capturer en temps opportun les renversements de tendance tout en évitant les coups de fouet sur les marchés non directionnels. L'optimisation des paramètres de stop-loss de Chande Kroll peut faciliter le filtrage et assurer le stop-loss uniquement aux points de renversement de tendance. L'indicateur ADX garantit l'entrée uniquement lorsque la tendance est significative, évitant les coups de fouet de stop-loss pendant la consolidation du marché.

Les risques

Si le seuil ADX est trop élevé, les opportunités d'entrée peuvent être manquées au début des tendances lorsque les valeurs ADX sont encore faibles.

Les points de stop-loss qui sont trop proches peuvent également entraîner une ouverture et une fermeture fréquentes des positions de stratégie. Cela augmentera les coûts de négociation et de glissement. Les points de stop-loss doivent être réglés de manière raisonnable pour laisser un espace pour les tendances.

Optimisation

Considérez la possibilité d'autoriser les signaux stop loss à se déclencher uniquement lorsque l'ADX dépasse un seuil. Cela peut améliorer la fiabilité du timing d'entrée. D'autres indicateurs de tendance peuvent également être combinés pour des conditions conjonctives, telles que la combinaison des valeurs ADX avec les pentes de l'EMA.

Les lignes de stop loss peuvent également être ajustées dynamiquement en fonction de l'ATR, permettant des arrêts plus larges lorsque la volatilité du marché augmente pour éviter une sensibilité excessive.

Résumé

La stratégie intègre les forces des indicateurs de stop loss et ADX de Chande Kroll pour créer une stratégie de suivi de tendance relativement simple et pratique.


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

//@version=5
strategy(title = "Chande Kroll Stop", overlay=true)
p = input.int(10, minval=1)
x = input.int(1, minval=1)
q = input.int(9, minval=1)
first_high_stop = ta.highest(high, p) - x * ta.atr(p)
first_low_stop = ta.lowest(low, p) + x * ta.atr(p)
stop_short = ta.highest(first_high_stop, q)
stop_long = ta.lowest(first_low_stop, q)
plot(stop_long, color=color.blue)
plot(stop_short, color=color.orange)

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_sig = input.int(20, title="minimum ADX threshold for signal")
dirmov(len) =>
	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 = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)


if ta.crossunder(close, stop_long) and sig>ADX_sig
    strategy.entry("long", strategy.long)
if ta.crossover(close, stop_short) and sig>ADX_sig
    strategy.entry("short", strategy.short)

Plus de