
La stratégie de rétrogradation des moyennes mobiles doubles est une stratégie utilisée principalement pour les transactions à moyen terme sur le marché des changes. La stratégie utilise des moyennes mobiles de deux périodes différentes pour générer des signaux de négociation.
La stratégie utilise des moyennes mobiles sur deux périodes de temps, 1 heure et 1 jour. Les moyennes mobiles sur une période d’une heure sont plus sensibles aux changements de prix et peuvent être utilisées comme moyennes mobiles rapides. Les moyennes mobiles sur une période d’un jour sont plus lentes à répondre aux changements de prix et peuvent être utilisées comme moyennes mobiles lentes.
Le principe d’entrée en position forte ou en position courte pour rechercher un revers est que lorsque la moyenne mobile rapide et la moyenne mobile lente se croisent en or ou en fourche, cela indique que le marché est susceptible d’avoir un revirement. Une traversée sur la ligne rapide ou une descente sur la ligne lente est le moment pour générer un signal de revirement. Selon la théorie du revirement, les prix ne vont généralement pas à la hausse ou à la baisse, et il est fort probable que le moment où le cours de l’action reverse après une rupture ou un support et une résistance importants.
La stratégie impose également des conditions de filtrage de la date et de l’heure de la transaction, permettant de négocier uniquement dans les limites de la date et de la période de transaction, et d’éviter de négocier à des périodes inappropriées.
Les stratégies d’inversion de tendance des moyennes mobiles doubles présentent les avantages suivants:
Les stratégies de retournement ont l’avantage d’avoir une marge de profit. Les opérations de retournement permettent d’obtenir des bénéfices plus élevés dans des conditions de forte fluctuation des prix en effectuant des opérations de retournement à des points clés.
Les combinaisons de deux moyennes mobiles sont utilisées pour filtrer les signaux et éviter les faux signaux. Un seul indicateur est susceptible de produire de faux signaux, tandis que les combinaisons de deux indicateurs peuvent améliorer la fiabilité du signal, filtrer certains faux signaux et rendre les opportunités de trading plus fiables.
Définir les conditions de la date et du moment de la transaction pour éviter les périodes d’inactivité du marché et éviter le blocage. Traiter uniquement dans les périodes et les dates de la transaction définie pour éviter les périodes de fortes fluctuations des prix et éviter le blocage des transactions.
La stratégie inverse convient aux transactions à moyen terme. Comparée aux transactions à haute fréquence, la stratégie de négociation à moyen terme est plus stable et évite les transactions trop fréquentes.
Le contrôle du retrait maximal est bénéfique pour la gestion des fonds. Le réglage du pourcentage de retrait maximal permet de bien contrôler le risque du jour au lendemain et d’éviter une perte importante de fonds.
Les stratégies d’inversion de tendance des moyennes mobiles doubles présentent également les risques suivants:
Les signaux d’inversion peuvent être inefficaces et entraîner des pertes. Les signaux d’inversion des prix ne sont pas toujours fiables.
Les déviations de la tendance entraînent des pertes. Une inversion peut être risquée lorsque les deux moyennes mobiles sont déjà clairement séparées. Le moment de la inversion peut être déterminé en observant l’intervalle des moyennes mobiles.
Une mauvaise configuration de la période de négociation peut entraîner des opportunités manquées. Si la période de négociation est trop stricte, des opportunités de négociation peuvent être manquées.
L’élargissement de la perte d’arrêt après le renversement n’est pas possible en temps opportun. Si le prix continue sa tendance initiale après le renversement, il faut arrêter les pertes en temps opportun pour contrôler les pertes.
Les stratégies d’inversion de tendance des moyennes mobiles doubles peuvent également être optimisées dans les domaines suivants:
Tester plus de combinaisons d’indicateurs pour trouver de meilleurs signaux de négociation. D’autres indicateurs tels que le MACD, le KDJ et d’autres peuvent être testés en combinaison avec des moyennes mobiles doubles pour améliorer l’exactitude du signal.
Optimiser les paramètres de périodicité des moyennes mobiles pour trouver les meilleurs. Le nombre optimal de périodes peut être déterminé en relançant les paramètres de différentes longueurs des moyennes mobiles.
Augmenter ou réduire le temps de transaction pour trouver le meilleur moment de transaction. Selon les caractéristiques des différentes variétés, tester l’efficacité de l’ajustement du temps de transaction.
Ajouter des conditions de filtrage de tendance pour éviter les déviations. Vous pouvez ajouter des indicateurs comme l’ADX pour juger de la force de la tendance et éviter de faire un renversement en l’absence de tendance évidente.
Ajout de modèles d’apprentissage automatique pour la vérification des signaux. Les modèles peuvent être entraînés à juger de la fiabilité des signaux d’inversion et à filtrer certains signaux de mauvaise qualité.
Il utilise des moyennes mobiles rapides et des moyennes mobiles plus lentes pour générer des signaux de retournement, effectuer des opérations inverses à des points clés du marché, avec de grandes opportunités de profit. Il utilise également des moments de négociation et des réglages de retrait maximum pour contrôler les risques. Il s’agit d’un système de retournement plus stable qui permet à la fois de générer des rendements plus élevés et de contrôler les risques.
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21
//@version=4
strategy("gbpnzd 1h", overlay=true)
src = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60")
len = input(28, title="Moving Average Length - LookBack Period")
//periodT3 = input(defval=7, title="Tilson T3 Period", minval=1)
factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0)
atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3")
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
res = useCurrentRes ? timeframe.period : resCustom
resCustom2 = input(title="plm", type=input.resolution, defval="D")
res2 = resCustom2
//hull ma definition
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
//TEMA definition
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
tema = 3 * (ema1 - ema2) + ema3
//Tilson T3
factor = factorT3 *.10
gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor
t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor)
tilT3 = t3(src, len, factor)
avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3
out = avg
ema20 = security(syminfo.tickerid, res, out)
plot3 = security(syminfo.tickerid, res2, ema20)
plot33 = security(syminfo.tickerid, res, ema20)
plot(plot3,linewidth=2,color=color.red)
plot(plot33,linewidth=2,color=color.white)
// longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1]
// shortc = crossunder(close[2],plot3) and close[1] < close[2] and close < close[1]
volumeMA=input(24)
ema_1 = ema(volume, volumeMA)
timeinrange(res, sess) => time(res, sess) != 0
//entrytime = timeinrange(timeframe.period, "0900-0915")
myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours")
entrytime = time(timeframe.period, myspecifictradingtimes) != 0
longC = crossover(plot33,plot3) and time_cond and entrytime
shortc = crossunder(plot33,plot3) and time_cond and entrytime
// exitlong = crossunder(plot33,plot3)
// exitshort = crossover(plot33,plot3)
distanta=input(1.0025)
exitshort = plot33/plot3 > distanta
exitlong = plot3/plot33 > distanta
inverse = input(true)
exit = input(false)
if(inverse==false)
strategy.entry("long",1,when=longC)
strategy.entry("short",0,when=shortc)
if(inverse)
strategy.entry("long",1,when=shortc)
strategy.entry("short",0,when=longC)
if(exit)
strategy.close("long",when=exitlong)
strategy.close("short",when=exitshort)
// if(dayofweek==dayofweek.friday)
// strategy.close_all()
// risk = input(25)
// strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)