Cet article présente une stratégie de trading quantitative qui combine la double stratégie de moyenne mobile et l'indicateur stochastique.
La stratégie se compose de deux parties:
Stratégie de moyenne mobile double
Utiliser des moyennes mobiles rapides et lentes pour générer des signaux d'achat croisés dorés et des signaux de vente croisés morts.
Indicateur stochastique
Utilisation de la caractéristique d'oscillation du stochastique pour identifier les situations de surachat et de surachat. Un stochastique supérieur à la ligne lente indique un signal de surachat, tandis qu'un stochastique inférieur à la ligne lente indique un signal de surachat.
Les signaux provenant des deux parties sont combinés pour former les signaux de négociation finaux.
Les risques peuvent être réduits en optimisant les combinaisons de paramètres et en ajoutant un stop loss aux pertes de contrôle.
La stratégie peut être optimisée dans les aspects suivants:
Cette stratégie combine les avantages des moyennes mobiles doubles et stochastiques. Tout en suivant la tendance principale du marché, elle évite les inversions défavorables. De meilleurs résultats de stratégie peuvent être obtenus grâce à l'optimisation des paramètres. L'ajout d'arrêts et de filtres de tendance peut rendre la stratégie plus robuste.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 24/11/2020 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // As the name suggests, High low bands are two bands surrounding the underlying’s // price. These bands are generated from the triangular moving averages calculated // from the underlying’s price. The triangular moving average is, in turn, shifted // up and down by a fixed percentage. The bands, thus formed, are termed as High // low bands. The main theme and concept of High low bands is based upon the triangular // moving average. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos HLB(Length, PercentShift) => pos = 0.0 xTMA = sma(sma(close, Length), Length) xHighBand = xTMA + (xTMA * PercentShift / 100) xLowBand = xTMA - (xTMA * PercentShift / 100) pos :=iff(close > xHighBand, 1, iff(close <xLowBand, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & High Low Bands", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- Length_HLB = input(14, minval=1) PercentShift = input(1, minval = 0.01, step = 0.01) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posHLB = HLB(Length_HLB, PercentShift) pos = iff(posReversal123 == 1 and posHLB == 1 , 1, iff(posReversal123 == -1 and posHLB == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )