Stratégie de négociation croisée sur deux moyennes mobiles

Auteur:ChaoZhang est là., Date: 2023-10-24 à 16h55
Les étiquettes:

img

Résumé

Cette stratégie combine les avantages de la moyenne mobile de Hull et de la moyenne mobile T3 pour concevoir une stratégie de trading trans-marché. Elle peut être utilisée à la fois pour le trading à court terme et le suivi des tendances à long terme.

La logique de la stratégie

La stratégie repose principalement sur le calcul de la moyenne mobile de Hull et de la moyenne mobile de T3.

La moyenne mobile Hull (HMA) utilise une méthode de calcul itérative de moyenne mobile pondérée pour filtrer efficacement le bruit du marché et afficher une courbe de tendance de prix lisse.

La moyenne mobile T3 réagit plus rapidement aux changements de prix tout en réduisant le décalage en ajustant les paramètres.

Cette stratégie prend la moyenne des deux indicateurs de négociation comme indicateur principal et juge le moment de l'entrée selon la direction de cette ligne moyenne: si la moyenne de la période en cours est supérieure à celle de la période précédente, il s'agit d'un signal d'entrée long; si elle est inférieure, il s'agit d'un signal d'entrée court.

Pour les règles de sortie, si le prix franchit le point stop loss ou take profit, sortie; sortie également lorsque la direction de la moyenne mobile change.

Analyse des avantages

Cette stratégie combine les avantages de la moyenne mobile de Hull et de la moyenne mobile T3 pour générer un indicateur complet. Ensuite, cette stratégie convient à la fois au trading à court et à long terme en ajustant le paramètre du cycle.

Analyse des risques

La stratégie repose principalement sur l'indicateur de moyenne mobile, ce qui peut générer de multiples faux signaux dans les tendances variantes. En outre, le retard des moyennes mobiles peut manquer le meilleur moment d'entrée. Les points de stop-loss et take profit doivent être soigneusement réglés pour éviter d'être trop lâches ou trop serrés. Enfin, les paramètres doivent être optimisés pour différentes devises et délais.

Optimisation

Envisagez d'ajouter d'autres indicateurs pour vérifier le signal MA et filtrer les faux signaux. Testez différentes combinaisons MA et algorithmes de pondération pour optimiser le signal MA. Ajoutez un stop loss adaptatif et un trailing take profit pour gérer dynamiquement les risques. Effectuez une optimisation de backtesting sur différentes devises et délais pour trouver les ensembles de paramètres optimaux.

Résumé

Cette stratégie intègre les forces de la moyenne mobile de Hull et de la moyenne mobile T3 pour former un indicateur complet permettant de juger de la direction de la tendance. Grâce à l'optimisation des paramètres, la stratégie peut être appliquée de manière flexible à différents cycles de négociation.


/*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")


Plus de