Stratégie de négociation quantitative de la moyenne mobile double

Auteur:ChaoZhang est là., Date: 2024-02-05 12:05:10 Le gouvernement a décidé d'arrêter le projet de loi.
Les étiquettes:

img

Résumé

Cette stratégie combine les indicateurs doubles de moyenne mobile et de Supertrend pour construire des signaux de trading et juge la direction de la tendance à travers différentes combinaisons de cycles afin d'obtenir une rentabilité élevée.

Principe

Cette stratégie utilise les indicateurs MACD et Supertrend pour déterminer le moment de l'entrée sur le marché. Les moyennes mobiles doubles MACD déterminent la direction de la tendance à court terme, tandis que Supertrend détermine la direction de la tendance à moyen et long terme.

Lorsque la ligne rapide traverse la ligne lente vers le haut, c'est un signal d'achat. À ce moment-là, si la Supertrend à moyen et long terme est également une tendance à la hausse, le signal d'achat final est généré pour aller long. Au contraire, lorsque la ligne rapide traverse la ligne lente vers le bas, c'est un signal de vente. À ce moment-là, si la Supertrend à moyen et long terme est également une tendance à la baisse, le signal de vente final est généré pour aller court.

Le stop loss et le take profit sont fixés à des valeurs fixes.

Analyse des avantages

L'avantage majeur de cette stratégie est qu'elle utilise à la fois des moyennes mobiles doubles et Supertrend pour déterminer l'orientation du marché, combinant des analyses à moyen et court terme et à moyen et long terme pour améliorer considérablement l'efficacité des décisions et éviter de fausses ruptures.

Analyse des risques

Le principal risque de cette stratégie est que les paramètres de stop loss et de take profit fixes peuvent manquer de plus grandes opportunités de profit. De plus, s'il y a une divergence entre les jugements à moyen et court terme et à moyen et long terme, la stratégie ne fonctionnera pas correctement. Nous pouvons réduire ce risque par des paramètres de stop loss et de take profit flottants.

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Améliorer le mécanisme d'ajustement dynamique pour le stop loss et le take profit et définir le stop loss et le take profit en fonction de la volatilité et des tendances du marché.

  2. Optimiser les paramètres du MACD pour trouver des paramètres de moyenne mobile plus adaptés à la variété cible.

  3. Optimiser les paramètres de Supertrend pour ajuster sa sensibilité au marché.

  4. Augmenter les autres indicateurs de jugement pour fournir des signaux plus dimensionnels et améliorer les performances de la stratégie.

Résumé

Cette stratégie combine avec succès les avantages des moyennes mobiles doubles et des indicateurs de Supertrend. En combinant différents jugements de cycle, elle filtre les mauvais signaux et obtient de meilleurs rendements sur les marchés tendance. Nous pouvons encore améliorer la stabilité et la rentabilité de cette stratégie grâce à l'optimisation des paramètres et aux ajustements du mécanisme.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

strategy("Super Trend 2 MACD", overlay=true)
// MACD input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)

Macd = fastMA - slowMA
Signal = sma(Macd, signalLength)


res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 and Macd > Signal
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 and Macd < Signal

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)


Plus de