Stratégie de combinaison MACD et DMI étendue sur un cloud unique basée sur plusieurs périodes


Date de création: 2024-02-02 18:04:28 Dernière modification: 2024-02-02 18:04:51
Copier: 6 Nombre de clics: 1266
1
Suivre
1617
Abonnés

Stratégie de combinaison MACD et DMI étendue sur un cloud unique basée sur plusieurs périodes

Aperçu

Cette stratégie utilise une extension de cloud, des signaux de concentration des moyennes mobiles (MACD) et des indicateurs de tendance (DMI) sur plusieurs périodes de temps pour identifier les opportunités d’achat et de vente potentielles. Elle est conçue pour fournir une référence aux traders qui souhaitent examiner le marché à partir de deux dimensions: à court terme et à moyen terme.

Principe de stratégie

La stratégie s’appuie sur des signaux de concordance sur les graphiques 15 minutes (M15) et 1 heure (H1) pour exécuter les conditions d’achat et de vente, tout en se référant à la période de 4 heures (H4) comme confirmation supplémentaire.

Conditions d’achat

  • Les prix sur les périodes M15, H1 et H4 sont supérieurs à une extension de nuage
  • La ligne MACD sur le graphique H1 est supérieure à la ligne de signal, et les deux lignes sont supérieures à 0
  • La ligne DI+ sur le graphique H1 est supérieure à la ligne DI- et l’ADX est au moins égal à 25
  • La ligne MACD sur le graphique M15 est supérieure à 0, la ligne DI+ est supérieure à la ligne DI- et l’ADX est au moins égal à 25

Conditions de vente

  • Les prix sur les périodes M15, H1 et H4 sont inférieurs à une extension de nuage
  • La ligne MACD sur le graphique H1 est inférieure à la ligne de signal, et les deux lignes sont inférieures à 0
  • La ligne DI- sur le graphique H1 est supérieure à la ligne DI+ et l’ADX est au moins égal à 25
  • La ligne MACD sur le graphique M15 est inférieure à 0, la ligne DI est supérieure à la ligne DI+ et l’ADX est au moins égal à 25

Entrée et sortie

  • Création d’une position à plusieurs têtes lorsque toutes les conditions d’achat sont remplies, indiquant un élan à la hausse sur une période de temps
  • Créer une position vide lorsque toutes les conditions de vente sont remplies, indiquant une tendance à la baisse sur une période de temps
  • Le plafond indique un potentiel renversement ou une perte d’élan lorsque les conditions opposées sont remplies.

Avantages stratégiques

  • Considérant plusieurs périodes, améliorer la précision de la prise de décision
  • Un nuage étend sa portée pour juger de la direction et de la force des tendances
  • Le MACD détermine la dynamique à court et à moyen terme
  • Le DMI détermine la dynamique de la tendance et la force d’achat
  • La combinaison de plusieurs indicateurs permet de juger de façon globale de la direction du marché
  • Conditions de vente et d’achat personnalisées avec paramètres réglables
  • Largement utilisable dans les marchés où la tendance est claire

Risque stratégique

  • Les jugements sur plusieurs périodes peuvent être divergents, ce qui entraîne des signaux erronés.
  • Une extension de nuage peut être trompeuse si elle est mal utilisée
  • Le MACD et le DMI sont à la traîne et risquent de manquer un tournant
  • La nécessité de surveiller simultanément plusieurs indicateurs du calendrier
  • La prudence est de mise pour gérer les fluctuations massives de prix provoquées par des événements inattendus.

Orientation de l’optimisation de la stratégie

  • Optimiser les combinaisons de paramètres pour une extension de nuage, MACD et DMI
  • Test de combinaisons de plus de périodes, comme le jour
  • Ajout de confirmation d’autres indicateurs, tels que la volatilité, les moyennes mobiles, etc.
  • Voir plus de données historiques pour optimiser les conditions d’achat et de vente
  • Paramètres d’optimisation dynamique des méthodes combinées avec l’apprentissage automatique

Résumer

Cette stratégie exploite pleinement les avantages de l’analyse de plusieurs périodes et de plusieurs indicateurs pour identifier efficacement la direction et la force des tendances. Elle peut être adaptée à différentes variétés par des ajustements de paramètres et peut également être optimisée pour des situations spécifiques.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © haidinh83

//@version=5
strategy("Ichimoku, MACD, DMI Multiple time frame 21/01/2024", overlay=true)
    // Khung thời gian
timeframe1 = "5"   // M5
timeframe2 = "15"  // M15
timeframe3 = "60"  // H1
timeframe4 = "240" // H4

    // Nhập tham số ADX và DI
lengthDMI = input(14, title="DMI Length")
thresholdADX = input(20, title="ADX Threshold")

// Tính giá trị Ichimoku
ichimoku(tenkanPeriod, kijunPeriod, senkouPeriod) =>
    tenkanSen = (ta.highest(high, tenkanPeriod) + ta.lowest(low, tenkanPeriod)) / 2
    kijunSen = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2
    senkouSpanA = (tenkanSen + kijunSen) / 2
    senkouSpanB = (ta.highest(high, senkouPeriod) + ta.lowest(low, senkouPeriod)) / 2
    [tenkanSen, kijunSen, senkouSpanA, senkouSpanB]

    // Lấy Ichimoku từng khung thời gian
[tenkanM5, kijunM5, spanAM5, spanBM5] = request.security(syminfo.tickerid, timeframe1, ichimoku(9, 26, 52))
[tenkanM15, kijunM15, spanAM15, spanBM15] = request.security(syminfo.tickerid, timeframe2, ichimoku(9, 26, 52))
[tenkanH1, kijunH1, spanAH1, spanBH1] = request.security(syminfo.tickerid, timeframe3, ichimoku(9, 26, 52))
[tenkanH4, kijunH4, spanAH4, spanBH4] = request.security(syminfo.tickerid, timeframe4, ichimoku(9, 26, 52))

    // Tính giá trị MACD và Signal Line cho từng khung thời gian
[macdM5, signalM5, _] = request.security(syminfo.tickerid, timeframe1, ta.macd(close, 12, 26, 9))
[macdM15, signalM15, _] = request.security(syminfo.tickerid, timeframe2, ta.macd(close, 12, 26, 9))
[macdH1, signalH1, _] = request.security(syminfo.tickerid, timeframe3, ta.macd(close, 12, 26, 9))
[macdH4, signalH4, _] = request.security(syminfo.tickerid, timeframe4, ta.macd(close, 12, 26, 9))

  // Tính giá trị DMI cho từng khung thời gian
calcDMI(len) =>
    up = ta.change(high)
    down = -ta.change(low)
    plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    trur = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / trur)
    minus = fixnan(100 * ta.rma(minusDM, len) / trur)
    adx = 100 * ta.rma(math.abs(plus - minus) / (plus + minus == 0 ? 1 : plus + minus), len)
    [plus, minus, adx]  // Đảm bảo mỗi phần của hàm nằm trên một dòng riêng biệt


[plusM5, minusM5, adxM5] = request.security(syminfo.tickerid, timeframe1, calcDMI(lengthDMI))
[plusM15, minusM15, adxM15] = request.security(syminfo.tickerid, timeframe2, calcDMI(lengthDMI))
[plusH1, minusH1, adxH1] = request.security(syminfo.tickerid, timeframe3, calcDMI(lengthDMI))
[plusH4, minusH4, adxH4] = request.security(syminfo.tickerid, timeframe4, calcDMI(lengthDMI))



// Điều kiện mua cho H1
buyConditionH1 = (close > spanAM15) and (close > spanAH1) and (close > spanAH4) and 
                 (macdH1 > signalH1) and (macdH1 > 0) and (signalH1 > 0) and 
                 (plusH1 > minusH1) and (adxH1 >= 25)

// Điều kiện mua cho M15
buyConditionM15 = (close > spanAM15) and (close > spanAH1) and (close > spanAH4) and 
                  (macdM15 > 0) and (plusM15 > minusM15) and (adxM15 >= 25)

// Điều kiện mua tổng hợp
buyCondition = buyConditionH1 and buyConditionM15

// Điều kiện bán cho H1
sellConditionH1 = (close < spanAM15) and (close < spanAH1) and (close < spanAH4) and 
                  (macdH1 < signalH1) and (macdH1 < 0) and (signalH1 < 0) and 
                  (minusH1 > plusH1) and (adxH1 >= 25)

// Điều kiện bán cho M15
sellConditionM15 = (close < spanAM15) and (close < spanAH1) and (close < spanAH4) and 
                   (macdM15 < 0) and (minusM15 > plusM15) and (adxM15 >= 25)

// Điều kiện bán tổng hợp
sellCondition = sellConditionH1 and sellConditionM15

// Thực hiện giao dịch nếu điều kiện bán hoặc mua được đáp ứng
if buyCondition
    strategy.entry("Buy", strategy.long)

if sellCondition
    strategy.entry("Sell", strategy.short)


    // Vẽ và tô màu giữa Senkou Span A và B cho mỗi khung thời gian
p1 = plot(spanAM15, color=color.blue, title="Span A M15")
p2 = plot(spanBM15, color=color.blue, title="Span B M15")
fill(p1, p2, color=color.new(color.blue, 90), title="M15 Cloud")

p3 = plot(spanAH1, color=color.purple, title="Span A H1")
p4 = plot(spanBH1, color=color.purple, title="Span B H1")
fill(p3, p4, color=color.new(color.purple, 90), title="H1 Cloud")

p5 = plot(spanAH4, color=color.orange, title="Span A H4")
p6 = plot(spanBH4, color=color.orange, title="Span B H4")
fill(p5, p6, color=color.new(color.orange, 90), title="H4 Cloud")

    // Tô màu nền và hiển thị cảnh báo
 
bgcolor(buyCondition ? color.new(color.green, 45) : sellCondition ? color.new(color.red, 45) : na)
alertcondition(buyCondition, title="Mua Signal", message="Điều kiện mua đã được đáp ứng")
alertcondition(sellCondition, title="Bán Signal", message="Điều kiện bán đã được đáp ứng")