
Cette stratégie consiste à utiliser une combinaison de deux indicateurs dynamiques pour découvrir plus d’opportunités de négociation. Le premier indicateur est la stratégie d’inversion de l’indicateur rapide et aléatoire proposée par Wolf Jansen dans son livre. Le deuxième indicateur est le prix de synthèse de tendance de John Ehlers.
Le principe de la première partie de la stratégie de retournement d’indicateur aléatoire rapide et lent est le suivant: faire plus lorsque le prix de clôture est inférieur au prix de clôture du jour précédent pendant deux jours consécutifs et que la ligne rapide est supérieure à la ligne lente; faire moins lorsque le prix de clôture est supérieur au prix de clôture du jour précédent pendant deux jours consécutifs et que la ligne rapide est inférieure à la ligne lente.
La formule de calcul de la synthèse des prix détrends de la deuxième partie est la suivante:
DSP = EMA ((HL/2, 0,25 cycle) - EMA ((HL/2, 0,5 cycle)
Le HL/2 est le point médian des hauts et des bas du prix calculé. L’EMA de 0,25 cycles représente la tendance à court terme du prix et l’EMA de 0,5 cycles représente la tendance à long terme du prix. Le prix synthétique de tendance à la baisse représente la hausse et la baisse du prix par rapport à son cycle dominant.
La stratégie prend en compte les signaux des deux indicateurs. Seuls les signaux d’achat ou de vente des deux indicateurs sont pris en compte.
La stratégie utilise deux indicateurs dynamiques différents pour améliorer la qualité du signal par un double filtrage et contrôler les risques tout en maintenant la fréquence des transactions. Cependant, il est nécessaire de tenir compte des limites de l’indicateur lui-même et d’optimiser les paramètres de manière appropriée.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/11/2019
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Detrended Synthetic Price is a function that is in phase with the
// dominant cycle of real price data. This DSP is computed by subtracting
// a half-cycle exponential moving average (EMA) from the quarter cycle
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
D_DSP(Length, SellBand, BuyBand) =>
pos = 0.0
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos := iff(xEMA1_EMA2 > SellBand, 1,
iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price) V 2", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
SellBand = input(-25)
BuyBand = input(25)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP, SellBand, BuyBand)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
iff(posReversal123 == -1 and posD_DSP == -1, -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)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )