
Cette stratégie combine les avantages de la moyenne mobile de Hull et de la moyenne mobile de T3 pour concevoir une stratégie de négociation entre les marchés. Cette stratégie peut être utilisée à la fois pour les transactions sur les lignes courtes et pour le suivi des tendances sur les lignes moyennes et longues.
La stratégie est basée sur les calculs de la moyenne mobile de Hull et de la moyenne mobile de T3.
La Hull Moving Average (HMA) utilise une méthode de calcul itératif des moyennes mobiles pondérées pour filtrer efficacement le bruit du marché et afficher une courbe lisse de la tendance des prix. Elle est plus sensible aux variations de prix que les moyennes mobiles simples et les moyennes mobiles indicielles, tout en supprimant efficacement les fausses ruptures.
La moyenne mobile T3 peut être rendue plus proche du prix par un ajustement de certains hyperparamètres, tout en réduisant l’effet de la traînée. Elle peut répondre plus rapidement aux variations de prix en effectuant plusieurs calculs de l’indice.
Cette stratégie calcule la moyenne des deux, en tant qu’indicateur de négociation principal. Le moment d’entrée est déterminé en fonction de la direction de cette moyenne: si la moyenne de la période en cours est supérieure à celle de la période précédente, un signal d’entrée à plusieurs têtes; si la moyenne de la période en cours est inférieure à celle de la période précédente, un signal d’entrée à vide.
Pour la règle de sortie, si le prix dépasse le point de rupture ou atteint le point d’arrêt, il sort; si la direction de la moyenne change, il effectue également un mouvement de sortie.
La stratégie combine les avantages de la moyenne mobile Hull et de la moyenne mobile T3 pour générer un indicateur intégré, à la fois en termes de fluidité et de réponse rapide aux variations de prix. Deuxièmement, la stratégie s’applique à la fois aux transactions sur les lignes courtes et moyennes et longues.
La stratégie repose principalement sur l’indicateur de la ligne de parité, qui peut générer plusieurs faux signaux dans une tendance oscillante. De plus, la ligne de parité a une certaine latence et peut manquer le moment d’entrée optimal de la fluctuation des prix. Le paramètre de stop loss doit être défini avec prudence pour éviter d’être trop lâche ou trop pressé. Enfin, les paramètres d’optimisation doivent être testés pour différents monnaies et cycles de négociation et ne peuvent pas être réutilisés directement.
On peut envisager d’ajouter d’autres indicateurs auxiliaires, tels que les indicateurs de force et de faiblesse, les indicateurs de volatilité, etc., pour vérifier les signaux de parité et filtrer les faux signaux. On peut tester différentes combinaisons de parité et les algorithmes de pondération pour optimiser l’efficacité de la génération de signaux de parité. On peut ajouter des risques de gestion dynamique d’arrêt d’adaptation et d’arrêt de suivi.
Cette stratégie intègre les avantages de la moyenne mobile de Hull et de la moyenne mobile de T3 pour former un indicateur global permettant de juger de la direction de la tendance. Grâce à l’optimisation des paramètres, la stratégie peut être adaptée de manière flexible à différents cycles de négociation. La stratégie présente certains avantages, mais il existe également des problèmes de suivi, de retard et de faux signaux.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
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/
// © exlux99
//@version=4
strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)
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 = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////GENERAL INPUTS//////////////////////////////////////
length_Ma= input(defval=50, title="Length MAs", minval=1)
//==========HMA
getHULLMA(src, len) =>
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
hullma
//==========T3
getT3(src, len, vFactor) =>
ema1 = ema(src, len)
ema2 = ema(ema1,len)
ema3 = ema(ema2,len)
ema4 = ema(ema3,len)
ema5 = ema(ema4,len)
ema6 = ema(ema5,len)
c1 = -1 * pow(vFactor,3)
c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
T3
hullma = getHULLMA(close,length_Ma)
t3 = getT3(close,length_Ma,0.7)
avg = (hullma+t3) /2
////////////////////////////PLOTTING////////////////////////////////////////////
colorado = avg > avg[1]? color.green : color.red
plot(avg , title="avg", color=colorado, linewidth = 4)
long=avg>avg[1]
short=avg<avg[1]
tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)
tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)
if(time_cond)
strategy.entry("long",1,when=long)
strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
strategy.entry("short",0,when=short)
strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")