Stratégie de trading quantitatif SuperTrend à double moyenne mobile


Date de création: 2024-02-05 12:05:10 Dernière modification: 2024-02-05 12:05:10
Copier: 0 Nombre de clics: 608
1
Suivre
1617
Abonnés

Stratégie de trading quantitatif SuperTrend à double moyenne mobile

Aperçu

Cette stratégie utilise une combinaison de deux indicateurs, la ligne de bi-parité et la SuperTrend, pour construire un signal de négociation, tout en combinant les différentes périodes pour déterminer la direction de la tendance et réaliser un profit efficace.

Principe de stratégie

Cette stratégie utilise les indicateurs MACD et SuperTrend pour déterminer le moment de l’entrée sur le marché. Parmi ceux-ci, MACD est utilisé pour déterminer la direction de la tendance à court terme et SuperTrend pour déterminer la direction de la tendance à moyen terme.

Lorsque la ligne rapide franchit la ligne lente de bas en haut, elle génère un signal d’achat. Si la Supertrend à moyen et long terme est une tendance à la hausse, elle génère un signal de vente.

Le stop loss et le stop stop stop sont définis comme des valeurs fixes.

Analyse des avantages

Le plus grand avantage de cette stratégie réside dans l’utilisation simultanée de la courbe de la courbe de la courbe et de la SuperTrend pour déterminer la direction du marché, combinée à court et à moyen terme, ce qui améliore considérablement l’efficacité de la prise de décision et évite les fausses ruptures. De plus, Supertrend peut s’adapter à un environnement de marché plus large en fonction des paramètres de régulation de la volatilité du marché.

Analyse des risques

Le principal risque de cette stratégie est que le stop loss fixe peut manquer une plus grande marge de profit. De plus, si les jugements à court et moyen terme et à long terme divergent, la stratégie ne peut pas fonctionner correctement. Nous pouvons réduire ce risque en plaçant le stop loss flottant.

Direction d’optimisation

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

  1. Ajout d’un mécanisme d’ajustement dynamique des arrêts de perte, en fonction de la volatilité et de la tendance du marché.

  2. Optimiser les paramètres MACD pour trouver les paramètres de la ligne moyenne qui conviennent le mieux à la variété cible.

  3. Optimiser les paramètres de Supertrend pour les adapter à la sensibilité du marché

  4. L’ajout d’autres indicateurs de jugement, fournissant des signaux de plus grande dimension, améliore l’efficacité de la stratégie.

Résumer

Cette stratégie a réussi à combiner les avantages des deux indicateurs de la ligne de bi-parité et de la SuperTrend, à filtrer les signaux erronés en combinant des jugements sur différents cycles et ainsi à obtenir de meilleurs rendements dans un marché tendanciel. Nous pouvons améliorer encore la stabilité et la rentabilité de la stratégie en optimisant les paramètres et en ajustant le mécanisme.

Code source de la stratégie
/*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)