Stratégie de divergence directionnelle Momentum


Date de création: 2023-12-27 15:37:31 Dernière modification: 2023-12-27 15:37:31
Copier: 0 Nombre de clics: 724
1
Suivre
1623
Abonnés

Stratégie de divergence directionnelle Momentum

Aperçu

La stratégie est basée sur l’une des techniques décrites par William Blau dans son livre Momentum, Direction et Divergence. La stratégie se concentre sur trois aspects clés: la dynamique, la direction et la diffusion. M. Blau, ingénieur électricien, puis trader, a étudié en profondeur la relation entre prix et dynamique.

Cette stratégie trace l’indice de diffusion de la direction de la force motrice (CSI ergotique) et sa ligne de lissage pour filtrer le bruit.

Principe de stratégie

Le début du code définit une fonction fADX qui s’adapte à l’indice d’orientation ((ADX) et qui accepte le paramètre Len pour les cycles de lissage. Cette fonction calcule la moyenne mobile de sélection ((RMA) de la plage réelle ((TR) en tant que fraction, calcule la dynamique de la polype et la dynamique de la tête vide (RMA) en tant que molécule, puis sépare le rapport obtenu pour indiquer la force relative de la polype et de la tête vide. Enfin, la valeur d’ADX est obtenue par une formule combinant la force de la polype et la force de la tête vide.

Puis vient la définition des paramètres de stratégie: r représente le paramètre de lissage de l’ATR, Length représente la longueur de l’ADX, BigPointValue représente la longueur du gros point, SmthLen représente la longueur de lissage du CSI, SellZone et BuyZone représentent les zones de vente et d’achat éligibles.

La logique clé est de calculer le CSI. Comptez d’abord l’amplitude de fluctuation réelle ATR et ADX. Comptez ensuite le coefficient de pénalité K, qui contient les valeurs de gros point, ATR et ADX. Comptez le solde standardisé nRes, qui combine les informations sur l’ATR, l’ADX et le prix de clôture.

Déterminez la direction de la transaction en fonction de la valeur SMA du CSI. Si vous êtes au-dessus de la zone d’achat, vous faites plus, et si vous êtes en dessous de la zone de vente, vous faites moins.

Analyse des avantages

Cette stratégie combine les avantages de l’indicateur de dynamique ATR et de l’indicateur de tendance ADX, en tenant compte à la fois de la volatilité du marché et du degré de tendance, et évite les limites de l’utilisation de l’ATR et de l’ADX uniquement. La conception du coefficient de pénalité K intègre habilement la relation entre ces indicateurs et la valeur du grand point.

L’équilibre normalisé nRes s’ajoute à l’utilisation de l’information sur les prix, qui se concentre non seulement sur la dynamique des tendances, mais aussi sur le niveau absolu des prix, ce qui, contrairement à l’oscillator général, renforce la performance de la stratégie.

Le traitement en douceur et le jugement des segments fournissent des signaux de transaction clairs pour les décisions stratégiques, ce qui favorise les opérations en direct.

Analyse des risques

La stratégie est sensible aux paramètres tels que la longueur des cycles ATR et ADX, la définition de la valeur du grand point, les paramètres de l’alignement CSI, etc. qui affectent la performance de la stratégie. Une combinaison appropriée de paramètres doit être déterminée par un grand nombre de rétro-mesures.

Le CSI est un nouvel oscillateur dont l’efficacité doit être vérifiée dans de nombreux marchés différents. Si l’indicateur ne fonctionne pas bien, cela affecte la rentabilité de la stratégie.

La stratégie elle-même n’a pas de mécanisme de stop-loss, elle est directement suivie par un signal de CSI, il existe un certain degré de risque, qui doit être utilisé en combinaison avec le stop-loss.

Direction d’optimisation

Il est possible de tester des combinaisons de paramètres dans différents marchés pour trouver une combinaison plus générale.

Un mécanisme de longueur dynamique du cycle ADX peut être introduit pour ajuster les paramètres de l’ADX en fonction de l’état du marché.

Il peut être combiné avec d’autres indicateurs d’oscillation pour déterminer le moment d’achat et de vente, ce qui rend la stratégie plus stable.

La stratégie globale peut être améliorée par l’ajout d’une stratégie de stop-loss.

Résumer

La stratégie de dispersion dynamique intègre les avantages d’un certain nombre d’indicateurs et utilise les dimensions de prix, de dynamique et de tendance pour concevoir et négocier des indicateurs CSI. La stratégie est flexible dans la configuration de ses paramètres, performante, mérite d’être testée et optimisée, et peut être un outil avantageux pour le trading quantifié.

Code source de la stratégie
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2018
// This is one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

strategy(title="Ergodic CSI Backtest")
r = input(32, minval=1)
Length = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.004, minval=0.00001)
BuyZone = input(0.024, minval=0.001)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
source = close
K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
xTrueRange = atr(1) 
xADX = fADX(Length)
xADXR = (xADX + xADX[1]) * 0.5
nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
xCSI = iff(close > 0,  nRes / close, 0)
xSMA_CSI = sma(xCSI, SmthLen)
pos = iff(xSMA_CSI > BuyZone, 1,
       iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xCSI, color=green, title="Ergodic CSI")
plot(xSMA_CSI, color=red, title="SigLin")