Stratégie de trading quantitative basée sur le MACD normalisé


Date de création: 2023-09-14 20:01:07 Dernière modification: 2023-09-14 20:01:07
Copier: 1 Nombre de clics: 1118
1
Suivre
1617
Abonnés

Cet article détaille une stratégie de trading quantitatif basée sur des indicateurs MACD normalisés. Cette stratégie est optimisée par rapport à la stratégie MACD classique pour améliorer la qualité du signal.

Premièrement, les principes stratégiques

L’idée centrale de cette stratégie est d’uniformiser les indicateurs MACD traditionnels afin de réduire le taux d’erreur. Les étapes sont les suivantes:

  1. Calculer les moyennes mobiles de Hull à court et à long terme pour déterminer les grandes tendances en fonction de leur relation croisée;

  2. Calculer la différence entre les MACD;

  3. le traitement de l’indicateur MACD par homogénéisation sur une période donnée;

  4. Calculer la ligne moyenne de la MACD rétrogradée pour former un déclencheur de transaction;

  5. Lorsque le MACD est homogène, le déclencheur est aligné en haut et vide en bas.

  6. Le filtrage est effectué en fonction d’une relation homogène afin d’éviter de rater une tendance majeure.

  7. Il est possible de définir un stop loss et de contrôler le risque d’une seule transaction.

Le traitement standardisé permet de réduire l’amplitude absolue du décalage MACD, ce qui réduit le bruit et améliore la qualité du signal. Le filtrage de tendance évite également les opérations inverses dues à des ajustements locaux. L’arrêt de perte contrôle les pertes individuelles.

Deux, les avantages stratégiques

La stratégie présente un avantage majeur par rapport à la simple stratégie MACD, qui consiste à effectuer un traitement homogène, ce qui permet de réduire efficacement le taux d’erreur du MACD et d’améliorer l’exactitude du signal.

Un autre avantage est l’ajout d’un filtre de jugement de tendance, qui évite les opérations inverses dans la tendance. Cela améliore la stabilité de la stratégie.

Enfin, la mise en place de conditions de stop-loss permet également de contrôler le risque et le bénéfice de chaque transaction, ce qui permet une gestion active de l’argent.

Troisièmement, les risques potentiels

Bien que cette stratégie soit optimisée, les risques suivants doivent être pris en compte dans la pratique:

Tout d’abord, il est difficile d’optimiser les paramètres, car une configuration inappropriée peut entraîner une suradaptation.

Deuxièmement, un arrêt de perte trop proche peut être atteint et entraîner une augmentation des pertes.

Enfin, il peut y avoir un retard de signal lors d’un changement de tendance et une incapacité à réagir en temps opportun.

Quatrième partie, résumé

Cet article présente en détail une stratégie de négociation quantitative pour le traitement normalisé des indicateurs MACD. Cette stratégie est une amélioration de la stratégie classique de MACD, qui permet d’améliorer efficacement la qualité du signal et d’intégrer un mécanisme de gestion des risques.

Code source de la stratégie
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420
strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) 
p=input(ohlc4)
jah=input(title="HullMA cross",defval=21)
tsp = input(34,title='Trigger')
np = input(50,title='Normalize')
SL = input(defval=-420.00, title="Stop Loss in $", step=1)
TP = input(defval=31.00, title="Target Point in $", step=1)
ot=1
n2ma=2*wma(p,round(jah/2))
nma=wma(p,jah)
diff=n2ma-nma
sqn=round(sqrt(jah))
n2ma1=2*wma(p[2],round(jah/2))
nma1=wma(p[2],jah)
diff1=n2ma1-nma1
sqn1=round(sqrt(jah))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
sh=n1
lon=n2
ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist =(MacNorm2-Trigger)
Hist2= Hist>1?1:Hist<-1?-1:Hist
teh=MacNorm2+MacNorm2[2]-MacNorm2[1]
closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1]
if (closelong)
    strategy.close("Long")
closeshort = strategy.openprofit<SL or strategy.openprofit>TP or  teh[1]>Trigger[1] and n1>n2[1]
if (closeshort)
    strategy.close("Short")
longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot 
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot 
if (shortCondition)
    strategy.entry("Short",strategy.short)