Stratégie de moyenne mobile double combinée à l'indicateur stochastique

Auteur:ChaoZhang est là., Date: 12 janvier 2024 à 11 h 16 min 52 s
Les étiquettes:

img

Résumé

Cet article présente une stratégie de trading quantitative qui combine la double stratégie de moyenne mobile et l'indicateur stochastique.

Principe de stratégie

La stratégie se compose de deux parties:

  1. 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.

  2. 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.

Analyse des avantages

  • Combine les avantages des moyennes mobiles doubles et stochastiques, plus stables.
  • Moyennes mobiles pour suivre la tendance, stochastique pour la confirmation, bon effet.
  • Les paramètres personnalisables s'adaptent aux différentes conditions du marché.

Analyse des risques

  • Les moyennes mobiles doubles peuvent facilement générer de faux signaux.
  • Des paramètres stochastiques incorrects peuvent manquer les tendances.
  • Il faut ajuster les paramètres pour s'adapter aux changements du marché.

Les risques peuvent être réduits en optimisant les combinaisons de paramètres et en ajoutant un stop loss aux pertes de contrôle.

Directions d'optimisation

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

  1. Tester les effets des différents paramètres de la moyenne mobile sur la stratégie.
  2. Tester les effets de différents paramètres stochastiques sur la stabilité de la stratégie.
  3. Ajouter des indicateurs de filtrage de tendance pour améliorer le taux de victoire.
  4. Mettre en place un mécanisme dynamique d'arrêt des pertes pour contrôler les pertes.

Résumé

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 )

Plus de