Stratégie de combinaison de la double moyenne mobile croisée et de la balance de puissance de l'ours taureau

Auteur:ChaoZhang est là., Date: 2024-01-08 17h09:48 Le président de la République
Les étiquettes:

img

Résumé

Cette stratégie utilise d'abord les lignes doubles de moyenne mobile de l'EMA à 2 périodes et à 20 périodes pour déterminer si le prix franchit les moyennes mobiles, comme critère de base pour entrer sur le marché.

Principe de stratégie

  1. Indicateur de moyenne mobile double

    • Calculer la moyenne mobile exponentielle (EMA) à deux périodes et à vingt périodes
    • Générer des signaux de négociation lorsque le prix de clôture passe d'un côté des moyennes mobiles à l'autre
    • La rupture de 20-EMA détermine la direction de la tendance
    • La rupture de 2-EMA détermine le point d'entrée spécifique
  2. Indicateur de l' équilibre des forces du taureau et de l' ours

    • Calculer séparément la valeur de puissance taureau et la valeur de puissance ours
    • Comparez les deux valeurs pour déterminer la force relative entre les taureaux et les ours
    • La direction la plus forte sert de jugement auxiliaire pour l'entrée
  3. L'évaluation combinée des deux indicateurs

    • L'indicateur de moyenne mobile double évalue la direction de la tendance majeure
    • L'indicateur de l'équilibre des forces des taureaux et des ours rend un jugement régional local
    • Émettre des signaux de négociation lorsque les deux indicateurs donnent un jugement cohérent

Analyse des avantages

Le plus grand avantage de cette stratégie combinée est d'intégrer des indicateurs de différentes variétés pour obtenir un jugement commercial plus fiable.

  1. En utilisant des moyennes mobiles doubles pour déterminer la direction principale, évitez de vous laisser tromper par les fluctuations locales
  2. Utilisez l'indicateur de balance de puissance de l'ours taureau pour le jugement régional local pour saisir avec précision le point d'entrée spécifique
  3. Deux types d'indicateurs se vérifient mutuellement et peuvent filtrer certaines opérations erronées afin de réduire les risques commerciaux
  4. Des paramètres flexibles pouvant être optimisés pour différentes variétés de marché
  5. L'idée de stratégie est simple et claire, facile à comprendre et facile à optimiser plus tard

Analyse des risques

Il convient de noter certains risques liés à cette stratégie:

  1. Le décalage des signaux d'indicateur peut conduire à des points de stop-loss plus profonds
  2. L'indicateur de moyenne mobile double est sensible aux paramètres
  3. L'indicateur du solde taureau-ours a une précision légèrement inférieure pour juger des tendances à court terme.
  4. L'écart de jugement peut se produire pour les deux indicateurs dans des conditions particulières de marché (signals de fausse rupture communs)

Les contre-mesures:

  1. Réduire de manière appropriée la durée de conservation ou définir un stop-loss en mouvement approprié
  2. Testez différentes combinaisons de paramètres pour trouver les paramètres optimaux
  3. Se reporter à d'autres indicateurs pour confirmation
  4. Optimiser les paramètres en fonction des caractéristiques des différentes variétés

Directions d'optimisation

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

  1. Testez plus de combinaisons de paramètres d'indicateurs de moyenne mobile
  2. Augmenter les stratégies de stop loss pour contrôler les stop loss uniques
  3. Incorporer des indicateurs de volatilité pour améliorer l'auto-adaptation des paramètres
  4. Ajouter des modèles d'apprentissage automatique pour obtenir une optimisation dynamique des paramètres
  5. Essayez différents indicateurs de tendance pour remplacer l' équilibre de puissance des taureaux et des ours.
  6. Développer des interfaces visuelles pour faciliter le test des différents paramètres par l'utilisateur

Conclusion

Cette stratégie évalue la tendance majeure à travers un indicateur de moyenne mobile double et utilise un indicateur de balance de puissance pour aider à déterminer le moment de l'entrée. Les deux indicateurs se vérifient mutuellement et peuvent réduire efficacement la probabilité de dysfonctionnements. Les paramètres de la stratégie sont flexibles et peuvent être optimisés pour différentes variétés.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/05/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//    This new indicator analyzes the balance between bullish and
//    bearish sentiment.
//    One can cay that it is an improved analogue of Elder Ray indicator.
//    To get more information please see "Bull And Bear Balance Indicator" 
//    by Vadim Gimelfarb. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


BBB(SellLevel,BuyLevel) =>
    pos = 0.0
    value = close < open ? 
              close[1] > open ?  math.max(close - open, high - low) : high - low : 
                 close > open ? 
                  close[1] > open ? math.max(close[1] - low, high - close) : math.max(open - low, high - close) :
                   high - close > close - low ? 
                     close[1] > open ? math.max(close[1] - open, high - low) :high - low : 
                      high - close < close - low ? 
                         close > open ? math.max(close - low, high - close) : open - low : 
                           close > open ? math.max(close[1] - open , high - close) :
                             close[1] < open ? math.max(open - low, high - close) : high - low
    
    value2 =close < open ? 
              close[1] < open ?  math.max(high - close[1], close - low) : math.max(high - open, close - low) : 
               close > open ? 
                 close[1] > open ?  high - low : math.max(open - close[1], high - low) : 
                  high - close > close - low ? 
                   close[1] < open ? math.max(high - close[1], close - low) : high - open : 
                     high - close < close - low ? 
                      close[1] > open ?  high - low : math.max(open - close, high - low) : 
                       close[1] > open ? math.max(high - open, close - low) :
                         close[1] < open? math.max(open - close, high - low): high - low
    nBBB = value2 - value
    pos :=  nBBB < SellLevel ? -1 :
    	     nBBB >= BuyLevel ? 1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bull And Bear Balance', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull And Bear Balance ═════●'
SellLevel = input.float(-15, step=0.01, group=I2)
BuyLevel = input.float(15, step=0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBBB = BBB(SellLevel,BuyLevel)
iff_1 = posEMA20 == -1 and prePosBBB == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBBB == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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