
Cette stratégie est une stratégie de négociation en double optimisation combinant les deux types de stratégies, la stratégie de rétrogradation et la stratégie pondérée par l’EMA, pour produire un signal de négociation plus fiable en déterminant si les signaux des deux stratégies sont cohérents.
La partie inverse utilise la stratégie de 123 inversions. Cette stratégie juge la relation entre les prix de clôture des deux jours précédents et produit un signal avec une combinaison d’indicateurs aléatoires. Les règles spécifiques sont les suivantes:
La partie pondérée de l’EMA utilise les moyennes mobiles de l’indice et la pondération de la quantité de transactions. La formule de calcul est la suivante:
xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol
La règle de négociation est la suivante: lorsque l’indicateur nRes est inférieur ou supérieur au prix de clôture d’hier, faire plus ou moins.
Enfin, la stratégie juge si les signaux des deux parties sont cohérents, ce qui produit un signal de transaction réel.
La stratégie combine deux types de stratégies différentes qui peuvent se vérifier mutuellement, améliorant la fiabilité du signal et réduisant les faux signaux. Dans le même temps, la partie inverse peut capturer les points de basculement et la partie pondérée EMA peut suivre la tendance, les deux pouvant atteindre des avantages complémentaires.
Cette stratégie présente un certain retard dans le temps et permet de manquer des opportunités de négociation sur des lignes courtes. De plus, l’EMA pondérée sur les fluctuations des prix n’a pas été très efficace sur le marché. De plus, la fiabilité des signaux de reprise doit être vérifiée.
Les paramètres peuvent être raccourcis de manière appropriée, accélérant la vitesse de réaction. Ajout d’un stop-loss pour contrôler le risque. Introduction de plus de facteurs pour vérifier le signal de retour.
Cette stratégie intègre les avantages de deux types de stratégies différentes, améliore la qualité du signal et surmonte dans une certaine mesure les inconvénients d’une seule stratégie. Cependant, il existe également un certain retard qui nécessite une optimisation supplémentaire.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/10/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
// The related article is copyrighted material from Stocks & Commodities 2009 Oct
//
// 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
fFilter(xSeriesSum, xSeriesV, Filter) =>
iff(xSeriesV > Filter, xSeriesSum, 0)
EMA_VW(Length) =>
pos = 0.0
xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol
pos := iff(nRes < close[1], 1,
iff(nRes > close[1], -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & EMA & Volume Weighting", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthEMA_VM = input(22, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA_VW = EMA_VW(LengthEMA_VM)
pos = iff(posReversal123 == 1 and posEMA_VW == 1 , 1,
iff(posReversal123 == -1 and posEMA_VW == -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 )