資源の読み込みに... 荷物...

マルチレベルダイナミックMACDトレンドフォロー戦略 52週間の高低延長分析システム

作者: リン・ハーンチャオチャン開催日:2024年12月27日 14:27:51
タグ:マックドマルチエイマSMARSI

img

概要

この戦略は,複数のタイムフレームからのMACDクロスシグナルと,52週間の高値と低値に基づいたダイナミックなサポートとレジスタンスレベルを組み合わせます. 52週間の高値と低値によって形成されたダイナミックなサポートとレジスタンスラインを使用して,市場のトレンド分析を支援しながら,週間の低値と低値の両方でMACDクロスオーバーを通じて取引シグナルを確認し,より堅牢な取引決定を可能にします.この戦略は,利益を確保しながらリスクを効果的に制御するためにダイナミックなストップ・ロスのメカニズムを使用します.

戦略の原則

戦略は次の基本的な論理に基づいています

  1. エントリーシグナルは,毎週と毎日のMACDの黄金十字によって確認され,両時間枠で上昇シグナルが必要です.
  2. アクジットシグナルは,毎日のMACDデッドクロスで起動し,下落シグナルの出現でポジションは閉じる.
  3. ダイナミックストップ・ロスは,出口信号が発信される日の最低価格に設定されます.
  4. 52週間の高値/低値線は,ユーザが選択した計算ベース (高値/低値または閉値) に基づいて動的に生成され,重要な基準値として右に拡張されます.
  5. この戦略は,取引1通貨単位の取引コストで 5%のポジション管理を使用しています.

戦略 の 利点

  1. マルチタイムフレームの確認: MACD信号の連動によって偽ブレイクをフィルタリングし,取引の精度を向上させる.
  2. 動的サポート/レジスタンス: 52 週間の高値/低値線は重要な心理的な価格基準を提供し,トレンド強度を評価するのに役立ちます.
  3. 総合的なリスク管理: ダイナミックストップ・ロスのメカニズムは,利益を保護するために市場の変動に調整されます.
  4. 高度な可視化: 明確なグラフィカルインターフェースは,重要な価格レベルとシグナルを表示し,理解と操作を容易にする.
  5. 体系的な取引: 厳格な入国/退出規則は,感情的な干渉を避け,取引の客観性を高めます.

戦略リスク

  1. 横向市場におけるMACDのクロスオーバーが頻繁な場合,過剰な誤った信号を生む可能性があります.
  2. 遅延リスク:MACD指標の固有の遅延は,最適なエントリーポイントを逃す可能性があります.
  3. 資金管理リスク: 固定比率のポジショニングは,特定の市場条件では柔軟性が欠けることがあります.
  4. 市場格差リスク: 格差が大きい場合,実際のストップロスの価格が予想値を下回る可能性があります.
  5. パラメータ最適化リスク:過剰な最適化によりオーバーフィット問題が発生する可能性があります.

戦略の最適化方向

  1. 価格とボリューム関係分析を組み込む:既存のMACD信号にボリューム確認を追加することを検討する.
  2. ポジション管理の最適化: 市場変動に動的に適応するより柔軟なポジション管理メカニズムを設計する.
  3. ストップ・ロスのメカニズムの強化: トレイリング・ストップやATRベースのダイナミック・ストップを追加することを検討する.
  4. 市場環境のフィルタリングを追加: 傾向強さの指標を導入し,強い傾向の市場でのポジションのみを開く.
  5. シグナルフィルタリングメカニズムを開発: 偽信号を減らすため,より厳格な信号確認条件を設計する.

概要

この戦略は,52週間の高値と低値に基づいた動的なサポートとレジスタンスラインとマルチタイムフレームMACDクロスシグナルを組み合わせて,完全なトレンドフォロー取引システムを構築する.この戦略の強みは信号確認の信頼性と包括的なリスク管理にあります.しかし,市場と遅れのリスクに注意を払う必要があります.継続的な最適化と改善を通じて,この戦略はトレンド市場で安定したリターンを達成するための約束を示しています.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD Bitcoin strategy con 52W High/Low (linee estese)", overlay=true)

// === MACD SETTINGS ===
fastLength = 12
slowLength = 26
signalSmoothing = 9

// Funzione per ottenere i valori MACD
getMACD(source, timeframe) =>
    [macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)
    [macdLine, signalLine]

// Valori MACD Settimanali
[macdWeekly, signalWeekly] = request.security(syminfo.tickerid, "W", getMACD(close, "W"), lookahead=barmerge.lookahead_on)

// Valori MACD Giornalieri
[macdDaily, signalDaily] = getMACD(close, "D")

// Variabile per lo stop loss
var float lowOfSignalCandle = na

// Condizione per l'ingresso
longConditionWeekly = ta.crossover(macdWeekly, signalWeekly)
exitConditionDaily = ta.crossunder(macdDaily, signalDaily)

// Imposta Stop Loss sulla candela giornaliera
if (exitConditionDaily)
    lowOfSignalCandle := low

// Condizione di ingresso nel trade
enterTradeCondition = macdWeekly > signalWeekly and ta.crossover(macdDaily, signalDaily)

if (enterTradeCondition)
    strategy.entry("MACD Long", strategy.long)

if (not na(lowOfSignalCandle))
    strategy.exit("Stop Loss", "MACD Long", stop=lowOfSignalCandle)

if (strategy.position_size == 0)
    lowOfSignalCandle := na

// // === 52 WEEK HIGH/LOW SETTINGS ===
// // Input per selezionare tra Highs/Lows o Close
// high_low_close = input.string(defval="Highs/Lows", title="Base 52 week values on candle:", options=["Highs/Lows", "Close"])

// // Calcolo dei valori delle 52 settimane
// weekly_hh = request.security(syminfo.tickerid, "W", ta.highest(high, 52), lookahead=barmerge.lookahead_on)
// weekly_ll = request.security(syminfo.tickerid, "W", ta.lowest(low, 52), lookahead=barmerge.lookahead_on)
// weekly_hc = request.security(syminfo.tickerid, "W", ta.highest(close, 52), lookahead=barmerge.lookahead_on)
// weekly_lc = request.security(syminfo.tickerid, "W", ta.lowest(close, 52), lookahead=barmerge.lookahead_on)

// // Selezione dei valori in base all'input
// high_plot = high_low_close == "Highs/Lows" ? weekly_hh : weekly_hc
// low_plot = high_low_close == "Highs/Lows" ? weekly_ll : weekly_lc

// // === LINEE ORIZZONTALI ESTESE FINO AL PREZZO ATTUALE ===
// var line highLine = na
// var line lowLine = na

// // Linea Orizzontale per il 52W High
// if (na(highLine))
//     highLine := line.new(bar_index, high_plot, bar_index + 1, high_plot, color=color.green, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(highLine, high_plot)
//     line.set_y2(highLine, high_plot)

// // Linea Orizzontale per il 52W Low
// if (na(lowLine))
//     lowLine := line.new(bar_index, low_plot, bar_index + 1, low_plot, color=color.red, width=2, style=line.style_dashed, extend=extend.right)
// else
//     line.set_y1(lowLine, low_plot)
//     line.set_y2(lowLine, low_plot)

// // Etichette per le linee orizzontali
// var label highLabel = na
// var label lowLabel = na

// if (na(highLabel))
//     highLabel := label.new(bar_index, high_plot, "52W High", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.small)
// else
//     label.set_y(highLabel, high_plot)
//     label.set_x(highLabel, bar_index)

// if (na(lowLabel))
//     lowLabel := label.new(bar_index, low_plot, "52W Low", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.small)
// else
//     label.set_y(lowLabel, low_plot)
//     label.set_x(lowLabel, bar_index)

// // Tracciamento delle Linee Estese
// plot(high_plot, title="52W High", color=color.green, style=plot.style_linebr)
// plot(low_plot, title="52W Low", color=color.red, style=plot.style_linebr)


関連性

もっと