Stratégie de divergence de la direction de l'élan

Auteur:ChaoZhang est là., Date: 2023-12-27 15h37 et 31 min
Les étiquettes:

img

Résumé

La stratégie de divergence de direction de l'élan est l'une des techniques décrites par William Blau dans son livre Momentum, Direction and Divergence. La stratégie se concentre sur trois aspects clés: l'élan, la direction et la divergence. Blau, qui était ingénieur électricien avant de devenir trader, examine en profondeur la relation entre le prix et l'élan.

La stratégie comporte des plans Ergotic CSI et sa ligne lissée pour filtrer le bruit.

La logique de la stratégie

Le code commence par définir une fonction d'indice de direction adaptatif (ADX) fADX, qui prend le paramètre Len comme période de lissage. La fonction calcule le RMA de True Range (TR) comme dénominateur, et le RMA de momentum ascendant et momentum descendant comme numérateur, puis les divise pour obtenir des ratios indiquant la force relative de la hausse et de la baisse. Enfin, ADX est obtenu en combinant la force ascendante et la force descendante.

Ensuite, les paramètres de stratégie sont définis. r est le paramètre de lissage pour ATR, Longueur est la longueur d'ADX, BigPointValue est la valeur du point, SmthLen est la longueur de lissage pour CSI, SellZone et BuyZone sont des zones de vente et d'achat qui répondent aux critères. inverse indique si inverser les signaux de trading.

La logique clé est dans le calcul du CSI. Tout d'abord, ATR et ADX sont calculés. Ensuite, le coefficient de pénalité K est calculé, en incorporant des considérations de la valeur du grand point, ATR et ADX. Le nRes résiduel standardisé combine les informations du ATR, ADX et du prix de clôture. Enfin, la valeur du CSI est obtenue et son SMA est calculé.

La direction du trading est déterminée en fonction de la valeur SMA du CSI. Allez long si vous êtes au-dessus de la zone d'achat, allez court si vous êtes en dessous de la zone de vente. Tracez la courbe CSI et son SMA, code couleur des différentes zones de trading.

Analyse des avantages

La 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 de la force de la tendance, en évitant les limitations de l'utilisation d'ATR ou d'ADX seul.

Les nRes résiduels standardisés intègrent des informations sur les prix, en accordant une attention non seulement à la tendance de l'élan, mais aussi au niveau absolu des prix, qui est différent des oscillateurs typiques, ce qui améliore les performances de la stratégie.

Le processus d'assouplissement et la détermination des zones fournissent des signaux de négociation clairs pour le commerce pratique.

Analyse des risques

La stratégie est assez sensible aux paramètres tels que les périodes d'ATR et ADX, la valeur du point grand, etc., ce qui peut affecter les performances.

En tant qu'oscillateur récemment proposé, l'efficacité du CSI doit être validée sur des marchés plus diversifiés.

La stratégie elle-même n'a pas de mécanisme de stop loss, juste directement long ou short par signal CSI.

Directions d'optimisation

Testez des combinaisons de paramètres sur différents marchés pour trouver des paramètres relativement universels.

Mettre en place un mécanisme dynamique de période ADX permettant d'ajuster les paramètres ADX en fonction de l'état du marché.

Incorporer d'autres indicateurs d'oscillateur pour déterminer les entrées et les sorties pour rendre la stratégie plus robuste.

Ajoutez des mécanismes de stop loss pour compléter la stratégie.

Résumé

La stratégie de divergence de direction de l'élan intègre les avantages de plusieurs indicateurs, en utilisant les dimensions de prix, d'élan et de tendance pour concevoir l'indicateur CSI pour le trading.


/*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")

Plus de