La stratégie est composée de deux parties: la première utilise la stratégie 123 inversion et la deuxième utilise l’indicateur TEMA. Les signaux de négociation produits par les deux parties sont combinés pour filtrer les signaux erronés et améliorer la qualité du signal.
La première partie utilise la stratégie de 123 inversion. Cette stratégie est basée sur l’indicateur stochastique, qui génère un signal d’achat ou de vente lorsque le cours de l’action est inversé (par exemple, lorsque le cours de la clôture de deux jours est inversé par une chute) et que l’indicateur stochastique affiche un signal de surachat ou de survente.
Plus précisément, si le prix de clôture est supérieur au prix de clôture du jour précédent et que la ligne stochastique est inférieure à 50, un signal d’achat est généré. Si le prix de clôture est inférieur au prix de clôture du jour précédent et que la ligne stochastique est supérieure à 50, un signal de vente est généré.
La deuxième partie utilise l’indicateur TEMA. TEMA représente une moyenne mobile à triple indice, calculée comme suit:
TEMA = 3*EMA(CLOSE, N) - 3*EMA(EMA(CLOSE, N), N) + EMA(EMA(EMA(CLOSE, N), N), N)
N est la longueur des paramètres. Si le prix de clôture est supérieur à la valeur de l’indicateur TEMA, un signal d’achat est généré. Si le prix de clôture est inférieur à la valeur de l’indicateur TEMA, un signal de vente est généré.
Enfin, un signal combinant deux indicateurs. Un signal de transaction réel n’est généré que lorsque les deux indicateurs produisent un signal cohérent (à la fois acheté et vendu).
Cette stratégie améliore la qualité du signal de négociation grâce à une combinaison raisonnable de plusieurs indicateurs et est une stratégie de négociation quantitative très efficace. Cependant, il est nécessaire de surveiller le contrôle des risques, d’ajuster les paramètres de manière appropriée ou d’ajouter d’autres composants pour optimiser la stratégie afin qu’elle puisse fonctionner de manière stable sur différents marchés.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-06 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 24/11/2021
// 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
// This study plots the TEMA1 indicator. TEMA1 ia s triple MA (Moving Average),
// and is calculated as 3*MA - (3*MA(MA)) + (MA(MA(MA)))
//
// 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
TEMA(Length) =>
pos = 0.0
xPrice = close
xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xEMA1, Length)
xEMA3 = ema(xEMA2, Length)
nRes = 3 * xEMA1 - 3 * xEMA2 + xEMA3
pos := iff(close > nRes, 1,
iff(close < nRes, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & TEMA1", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- TEMA1 ----")
LengthTEMA = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posT3A = TEMA(LengthTEMA)
pos = iff(posReversal123 == 1 and posT3A == 1 , 1,
iff(posReversal123 == -1 and posT3A == -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 )