Stratégie de couverture à haute fréquence basée sur la couleur des barres MACD et la régression linéaire

Auteur:ChaoZhang est là., Date: 2023-10-27 à 10h42
Les étiquettes:

img

Résumé

Cette stratégie combine la couleur des barres MACD et les indicateurs de régression linéaire pour obtenir un trading d'inversion à haute fréquence, particulièrement adapté à l'arbitrage et à la couverture à court terme.

La logique de la stratégie

La stratégie est composée des principales composantes suivantes:

  1. Lorsque la barre MACD est verte, elle indique une tendance à la hausse, donc aucun ordre court ne doit être placé. Lorsque la barre MACD est rouge, elle indique une tendance à la baisse, donc aucun ordre long ne doit être placé.

  2. Régression linéaire comme indicateur clé du signal de trading. Allez long lorsque le prix traverse au-dessus de la ligne de régression linéaire et allez court lorsque le prix traverse en dessous de la ligne.

  3. Le canal PAC est formé par l'EMA des prix élevés, bas et fermés pour déterminer la direction de la ligne de régression linéaire.

  4. EMA 89 comme la ligne de stop-loss. Fermez les positions lorsque le prix traverse à nouveau au-dessus de cette ligne.

La logique des signaux commerciaux est la suivante:

Signal long: la régression linéaire traverse la bande inférieure du PAC ET la régression linéaire est en pente vers le haut ET la barre MACD n'est pas rouge.

Signal court: la régression linéaire passe en dessous de la bande supérieure PAC ET la régression linéaire est en pente descendante ET la barre MACD n'est pas verte.

Signal de sortie: les prix dépassent l'EMA 89.

Cette stratégie combine le jugement de tendance et les niveaux de prix clés pour réaliser des opérations de couverture à haute fréquence.

Analyse des avantages

  1. La couleur de la barre MACD aide à déterminer la tendance majeure et évite de négocier contre la tendance.

  2. La régression linéaire est lisse et filtre le bruit.

  3. Le canal EMA définit clairement le biais haussier/baissier.

  4. Le stop loss est raisonnablement réglé pour maximiser les bénéfices.

  5. La fréquence de négociation élevée le rend approprié pour le trading algorithmique.

  6. Réalise des opérations de couverture et peut tirer profit des marchés à plage.

Analyse des risques

  1. Les paramètres de régression linéaire et de canal doivent être optimisés, sinon ils peuvent échouer.

  2. Le stop loss peut être déclenché fréquemment lors d'importantes fluctuations de prix.

  3. La fréquence élevée des échanges signifie que les coûts de transaction peuvent être substantiels.

  4. Le MACD a un certain retard et peut manquer les renversements de tendance à court terme.

  5. Les canaux de l'EMA ont également besoin d'une optimisation continue pour s'adapter à l'évolution des conditions du marché.

Directions d'optimisation

  1. Ajustez les paramètres de régression linéaire et de canal pour mieux adapter les différents instruments.

  2. Élargir la plage d'arrêt des pertes tout en maintenant le ratio risque/rendement au-dessus de 1.

  3. Optimiser les paramètres MACD pour capturer plus de signaux à court terme.

  4. Essayez d'autres indicateurs pour remplacer la régression linéaire, tels que les bandes de Bollinger.

  5. Ajouter la dimension de position pour éviter les pertes unidirectionnelles excessives.

  6. Incorporer d'autres indicateurs comme le RSI pour filtrer certains signaux commerciaux.

Conclusion

Cette stratégie combine plusieurs indicateurs techniques pour réaliser le trading de couverture à haute fréquence. Sa force réside dans la capture des renversements à court terme avec des contrôles de risque raisonnables, ce qui la rend très adaptée aux conditions de marché de gamme.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1)
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, EMA, 0)
plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1)
//////ICHIMOKU/////////
conversionPeriods = input(9),
basePeriods = input(26, minval=1, title="Base Line")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine) 
leadLine2 = donchian(laggingSpan2Periods-1)
p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90)
p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90)
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud")
///////////////// MACD BARCOLOR /////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
///////////// SIGNAL ///////////////
conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1,
	     iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0)))
consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1,
	     iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0)))
golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1
goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1
if(golong)
    strategy.entry("Buy",strategy.long)
if(goshort)
    strategy.entry("Sell",strategy.short)
closelong= conbuy==-1
closeshort=consell==-1
if(closelong)
    strategy.close("Buy")
if(closeshort)
    strategy.close("Sell")
 ////////////// TP and SL//.
//SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1)
//rr= input(defval=0.1,title="Reward/Risk",type=float)
//useTPandSL = input(defval = false, title = "Use exit order strategy?")
//Stop = SL
//Take=SL*rr
//Q = 100
//if(useTPandSL)
//    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
//    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop) 

Plus de