Stratégie d'arbre de décision multi-indicateurs : IMACD, EMA et Ichimoku Kinko Hyo


Date de création: 2024-01-22 11:25:56 Dernière modification: 2024-01-22 11:25:56
Copier: 0 Nombre de clics: 664
1
Suivre
1617
Abonnés

Stratégie d’arbre de décision multi-indicateurs : IMACD, EMA et Ichimoku Kinko Hyo

Aperçu

Cette stratégie utilise de multiples indicateurs techniques tels que l’IMACD, l’EMA et le tableau d’équilibre à première vue pour construire un modèle d’arbre de décision complet pour émettre des signaux d’achat et de vente.

Principe de stratégie

  1. IMACD: MACD amélioré pour mieux capturer les tendances du marché avec ImpulseMACD et ImpulseHisto
  2. Table d’équilibre à vue: tracez les lignes de change, les lignes de référence, les lignes A et B, et détectez les positions de support et de résistance
  3. EMA 40: aide à déterminer la direction de la tendance
  4. Les signaux de surplus et de manque sont émis en fonction de la relation spécifique entre l’IMACD, les composants du cloud et l’EMA 40

Faire plus de signaux: Faire plus de signaux lorsque l’IMACD est une couleur spécifique et que l’EMA 40 est supérieur à la trajectoire du nuage

Signal de mise à l’écart: mise à l’écart lorsque l’IMACD est rouge et que l’EMA 40 est en dessous du nuage

Analyse des avantages

  1. Portfolio d’indicateurs multiples, analyse intégrée des tendances du marché, amélioration de l’exactitude des décisions
  2. Les modèles d’arbres de décision sont clairement classés et les signaux de transaction sont clairement générés
  3. La longueur de l’EMA est réglable et offre une plus grande flexibilité pour les jugements auxiliaires
  4. Combinaison d’un graphique de nuage et d’un indicateur de tendance pour mieux identifier le support et la résistance

Analyse des risques

  1. Combinaison de plusieurs indicateurs, paramètres plus complexes
  2. Une mauvaise définition de la longueur d’EMA peut entraîner de faux signaux de trading
  3. Il est plus difficile de gérer plusieurs indicateurs en même temps.

Résolution des risques: optimisation des paramètres, ajustement de la longueur de l’EMA, simplification des processus opérationnels.

Direction d’optimisation

  1. Optimisation des paramètres pour améliorer la stabilité de la stratégie
  2. Augmenter les stratégies de stop-loss et contrôler les pertes individuelles
  3. La qualité des signaux est améliorée grâce à une rétro-analyse basée sur de grandes quantités de données.
  4. Des arbres de décision adaptatifs en combinaison avec des algorithmes d’apprentissage automatique

Résumer

Cette stratégie utilise de multiples indicateurs pour identifier les tendances, construire des modèles d’arbres de décision pour générer des signaux de trading. Les avantages sont la qualité du signal, la précision élevée et la possibilité d’optimiser progressivement. Il est nécessaire de prêter attention à l’optimisation des paramètres et à la stratégie de stop-loss pour contrôler les risques de trading et ainsi obtenir des rendements stables à long terme.

Code source de la stratégie
/*backtest
start: 2024-01-14 00:00:00
end: 2024-01-21 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Decision Tree Strategy: IMACD, EMA and Ichimoku [cryptoonchain]", overlay=true)

lengthMA = input(34, title="Length MA")
lengthSignal = input(9, title="Length Signal")
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
emaLength = input(40, title="EMA Length")  // Added user-configurable EMA length

calc_smma(src, len) =>
    smma = float(na)
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

calc_zlema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    d = ema1 - ema2
    ema1 + d

src = ohlc4
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA)

md = (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? (src > hi ? color.rgb(128, 255, 0, 26) : color.green) : (src < lo ? color.red : color.orange)

colorCondition = color.rgb(128, 255, 0, 26)

conversionLine = math.avg(ta.lowest(conversionPeriods), ta.highest(conversionPeriods))
baseLine = math.avg(ta.lowest(basePeriods), ta.highest(basePeriods))
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = math.avg(ta.lowest(laggingSpan2Periods), ta.highest(laggingSpan2Periods))

// Use user-configurable length for EMA
ema40 = ta.ema(close, emaLength)

ebc = input(false, title="Enable bar colors")
barcolor(ebc ? mdc : na)

conversionLinePlot = plot(conversionLine, color=#2962FF, title="Conversion Line", display=display.none)
baseLinePlot = plot(baseLine, color=#B71C1C, title="Base Line", display=display.none)
laggingSpanPlot = plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span", display=display.none)
leadLine1Plot = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A", display=display.none)
leadLine2Plot = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B", display=display.none)
kumoCloudUpperLinePlot = plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Upper Line", display=display.none)
kumoCloudLowerLinePlot = plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset=displacement - 1, title="Kumo Cloud Lower Line", display=display.none)
fill(kumoCloudUpperLinePlot, kumoCloudLowerLinePlot, color=leadLine1 > leadLine2 ? color.green : color.red)

a = (leadLine1 > leadLine2 ? leadLine1 : leadLine2) 
b = (leadLine1 < leadLine2 ? leadLine1 : leadLine2)  

if mdc == colorCondition and ema40 > a[displacement - 1]
    strategy.entry("Long", strategy.long)

if mdc == color.red and ema40 < b[displacement - 1]
    strategy.entry("Short", strategy.short)