複数の時間枠に基づくワンクラウド拡張MACDとDMIの組み合わせ戦略


作成日: 2024-02-02 18:04:28 最終変更日: 2024-02-02 18:04:51
コピー: 6 クリック数: 1266
1
フォロー
1617
フォロワー

複数の時間枠に基づくワンクラウド拡張MACDとDMIの組み合わせ戦略

概要

この戦略は,複数のタイムフレーム上のシグナルのクラウド拡張,移動平均分散指数 (MACD) とトレンド指数 (DMI) を統合して,潜在的な買入と売却の機会を識別します. それは,短期と中期の両方の次元から市場を調査したいトレーダーに参考を提供することを目的としています.

戦略原則

この戦略は,15分 (M15) と1時間 (H1) のグラフ上の一致信号に基づいて,買入と販売条件を実行し,さらに4時間 (H4) の時間枠を追加確認として参照する.

購入条件

  • M15,H1およびH4のタイムフレームの価格は,雲の延長より高い
  • H1グラフのMACD線は信号線より高く,両方の線は0より高い
  • H1グラフのDI+線はDI-線より高く,ADXは少なくとも25
  • M15のMACD線は0より高く,DI+線はDI−線より高く,ADXも少なくとも25

販売条件

  • M15,H1およびH4のタイムフレームの価格は,雲の延長より低い
  • H1グラフのMACD線は信号線より下にあり,両方の線は0以下である
  • H1グラフのDI線はDI線より高く,ADXは少なくとも25
  • M15図の MACD線は 0 未満,DI線は DI+線より高く,ADXも少なくとも 25

入場と退場

  • 購入条件がすべて満たされたときに多頭ポジションを確立し,時間枠を超えた上昇勢いを示します.
  • すべての販売条件が満たされたときに空頭ポジションを確立し,時間枠にわたる下落傾向を示す
  • 逆の条件が満たされた場合の平仓は,潜在的反転または勢力の喪失を示します.

戦略的優位性

  • 複数の時間枠を考慮し,意思決定の正確性を向上させる
  • 傾向の方向性や強さを判断する雲の延長
  • MACDは短期と中期の動きを判断する
  • DMIはトレンドの活性を判断する
  • 複数の指標を組み合わせて,市場を総合的に判断する
  • 調整可能なパラメータのカスタム条件
  • 市場における明確なトレンドに広く適用できる

戦略リスク

  • 複数の時間枠で判断が分かれ,誤った信号が出る可能性
  • クラウド拡張は誤った使い方をすると 誤解を招く可能性があります.
  • MACDとDMIは遅滞しており,ターニングポイントを逃している可能性がある.
  • 複数のタイムフレームの指標を同時に監視する必要がある
  • 突発的な価格変動を慎重に管理する

戦略最適化の方向性

  • クラウド拡張,MACD,DMIのパラメータの組み合わせを最適化
  • タイムフレームの組み合わせをテストする.
  • 波動率,移動平均などの他の指標の確認
  • 購入条件の最適化に関する歴史データ
  • 機械学習などの方法と組み合わせた動的最適化パラメータ

要約する

この戦略は,多時間枠分析と複数の指標の優位性を充分に活用し,トレンドの方向と強さを効果的に識別できます.パラメータの調整によって,異なる品種に適用することができ,特定の状況に最適化することもできます.しかし,トレーダーは,指標の限界を考慮し,適切なリスク管理措置を講じなければなりません.全体として,この戦略は,市場を判断するための比較的包括的な枠組みを提供します.

ストラテジーソースコード
/*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")