Cette stratégie est basée sur les idées du maître de l'analyse technique John Ehlers, utilisant l'indicateur Ehlers pour juger du cycle historique des prix et générer des signaux d'achat et de vente.
La stratégie calcule d'abord le prix synthétique décentralisé (DSP), qui est obtenu en soustrayant la valeur d'un filtre Butterworth de troisième ordre d'un filtre Butterworth de deuxième ordre pour obtenir une fonction en phase avec le cycle dominant des données de prix réels.
Ensuite, il calcule l'indicateur de référence Ehlers (ELI), qui est obtenu en soustrayant la moyenne mobile simple du prix synthétique détérioré du prix synthétique détérioré lui-même, et peut donner une indication avancée d'un tournant cyclique.
Enfin, lorsque la ligne ELI traverse le DSP, des signaux d'achat et de vente sont générés. Si ELI traverse au-dessus du DSP, un signal d'achat est généré.
Le plus grand avantage de cette stratégie est l'utilisation de l'indicateur Ehlers Leading Indicator pour juger des points tournants dans les tendances des prix à l'avance.
En outre, la combinaison du prix décentralisé pour la génération de signaux commerciaux filtre les informations de basse fréquence non pertinentes sur les prix, ce qui rend la stratégie plus axée sur les tendances cycliques des prix sans être perturbée par le bruit de marché à court terme.
Le principal risque de cette stratégie est la possibilité que l'ELI identifie incorrectement les signaux, ce qui entraîne une entrée prématurée et des pertes.
Les traders doivent également noter que cette stratégie ne s'applique qu'aux produits présentant des schémas cycliques évidents. Elle serait moins efficace pour les produits présentant des mouvements de prix chaotiques.
Les risques peuvent être gérés en confirmant les signaux avec d'autres indicateurs, ou en ajustant la taille des positions et les stratégies de stop loss.
Cette stratégie identifie la cyclicité des prix à l'aide de l'indicateur Ehlers Leading Indicator, en entrant dans des positions tôt avant le début de nouveaux cycles, ce qui en fait une tendance typique suivant la stratégie.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 23/03/2017 // This Indicator plots a single // Daily DSP (Detrended Synthetic Price) and a Daily ELI (Ehlers Leading // Indicator) using intraday data. // Detrended Synthetic Price is a function that is in phase with the dominant // cycle of real price data. This one is computed by subtracting a 3 pole Butterworth // filter from a 2 Pole Butterworth filter. Ehlers Leading Indicator gives an advanced // indication of a cyclic turning point. It is computed by subtracting the simple // moving average of the detrended synthetic price from the detrended synthetic price. // Buy and Sell signals arise when the ELI indicator crosses over or under the detrended // synthetic price. // See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading //////////////////////////////////////////////////////////// strategy(title="D_ELI (Ehlers Leading Indicator)", shorttitle="D_ELI (Ehlers Leading Indicator)") Length = input(7, minval=1) reverse = input(false, title="Trade reverse") hline(0, color=red, linestyle=line) xHL2 = request.security(syminfo.tickerid, 'D', hl2) xEMA1 = ema(xHL2, Length) xEMA2 = ema(xHL2, 2 * Length) xEMA1_EMA2 = xEMA1 - xEMA2 xResultEMA = ema(xEMA1_EMA2, Length) nRes = xEMA1_EMA2 - xResultEMA pos = iff(nRes > 0, 1, iff(nRes < 0, -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(request.security(syminfo.tickerid, "D", xEMA1_EMA2), color=blue, title="D_DSP") plot(request.security(syminfo.tickerid, "D", nRes), color=green, title="D_ELI")