Stratégie de combinaison de percée de prix à double moyenne mobile et d'équilibre de puissance long-short


Date de création: 2024-01-08 17:09:48 Dernière modification: 2024-01-08 17:09:48
Copier: 3 Nombre de clics: 635
1
Suivre
1617
Abonnés

Stratégie de combinaison de percée de prix à double moyenne mobile et d’équilibre de puissance long-short

Aperçu

Cette stratégie utilise d’abord les moyennes mobiles indicielles des périodes 2 et 20 pour construire un indicateur de double équilibre afin de déterminer si le prix a franchi la ligne moyenne, comme jugement de base dans la zone d’entrée. En même temps, l’indicateur de jugement auxiliaire de l’indicateur d’équilibre de la force de l’indicateur de l’indicateur de l’indicateur de la force de l’indicateur de l’indicateur de la force de l’indicateur de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de l’indicateur de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de la force de l’indicateur de

Principe de stratégie

  1. Indicateur de la ligne moyenne 220

    • Calculer les moyennes mobiles indicielles des périodes 2 et 20 (EMA)
    • Un signal de transaction est émis lorsque le prix de clôture passe d’un côté de la moyenne à l’autre.
    • Une rupture de la moyenne des 20 est un signal de tendance
    • Le signal de la ligne moyenne de rupture 2 détermine le point d’entrée spécifique.
  2. Indicateur d’équilibre des forces aériennes

    • Calcul des forces multiples et des forces vides
    • La comparaison de la taille des deux a révélé que la force aérienne était relativement faible
    • L’orientation de la force en tant que jugement auxiliaire de l’entrée
  3. Les deux indicateurs combinés

    • Indicateur à double ligne pour juger de la direction des grandes tendances
    • Indicateur de l’équilibre des forces aériennes pour un jugement régional local
    • Le signal de transaction est émis lorsque les deux juges sont d’accord.

Analyse des avantages

Le plus grand avantage de cette stratégie combinée réside dans la combinaison de différents types d’indicateurs, permettant des décisions commerciales plus fiables. Plus précisément, il y a les avantages suivants:

  1. Utilisez les équations binaires pour juger de la direction générale et éviter les escroqueries de fluctuations locales
  2. Les indicateurs de la balance des forces aériennes permettent de déterminer les zones locales et de déterminer avec précision les points d’entrée
  3. Les deux types d’indicateurs s’authentifient mutuellement, ce qui permet de filtrer certaines erreurs et de réduire le risque de transaction.
  4. La configuration des paramètres est flexible et peut être optimisée pour différentes variétés du marché
  5. Les stratégies sont simples, claires, faciles à comprendre et à optimiser ultérieurement.

Analyse des risques

Cette stratégie comporte également des risques à prendre en compte:

  1. Le retard de l’indicateur peut entraîner un point d’arrêt trop profond
  2. L’indicateur bi-homogène est plus sensible aux paramètres
  3. L’indicateur d’équilibre multi-zones est un peu moins précis sur les tendances à court terme
  4. Dans des circonstances particulières (faux signaux de rupture courants), des biais de jugement peuvent survenir dans les deux indicateurs.

La réponse:

  1. Réduire la période de détention de manière appropriée ou mettre en place un stop-loss mobile approprié
  2. Tester différentes combinaisons de paramètres pour trouver le meilleur
  3. Autres indicateurs de référence auxiliaires pour la confirmation
  4. Paramètres d’optimisation en fonction des caractéristiques de la variété

Direction d’optimisation

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

  1. Tester plus de combinaisons de paramètres de l’indicateur de la moyenne
  2. Augmentation des stratégies de stop loss et maîtrise des stops simples
  3. L’indicateur de volatilité est associé à une meilleure adaptabilité des paramètres.
  4. Ajout de modèles d’apprentissage automatique pour optimiser les paramètres dynamiques
  5. Essayez d’utiliser un autre indicateur de progression plutôt qu’un indicateur d’équilibre
  6. Développement d’interfaces visuelles permettant aux utilisateurs de tester différents paramètres

Résumer

Cette stratégie utilise deux indicateurs de ligne uniforme pour juger de la tendance générale et un indicateur d’équilibre de force multi-zones pour aider à déterminer le moment d’entrée. Les deux indicateurs sont mutuellement vérifiés et peuvent réduire efficacement la probabilité d’erreur.

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