XQ指標腳本:MACDX—含短週期與長週期MACD,根據0軸位置與趨勢方向繪製不同柱狀圖

更新 發佈閱讀 15 分鐘
投資理財內容聲明

免責聲明:請注意,本文內容僅分享個人改寫的常用的技術工具,一切內容僅供參考,完全不涉及任何投資買賣建議。

1. 指標概述

XQ: MACD 指標 - 含短週期與長週期MACD(Moving Average Convergence Divergence Indicator with Dual Periods)是一款基於XS程式語言撰寫的技術指標腳本,適用於XQ交易平台(如XQ Trader)。此指標擴展了經典MACD指標,由Gerald Appel於1979年提出,原本用於捕捉價格趨勢的強弱與轉折點。腳本的創新之處在於同時計算兩組MACD(短週期與長週期),並將其DIF(差離值)、DEA(訊號線)與柱狀圖(Histogram)合併繪製。柱狀圖根據其值相對於0軸的位置(正/負值)以及趨勢方向(向上/向下)使用不同的Plot進行區分,從而提供視覺化的多空動能強弱提示。

腳本版本為1.0.3,基於1.0.1版本修正了編譯器錯誤(如缺少分號、trendUp1變數錯誤、標籤錯誤)。其核心目的是幫助交易者同時觀察短期與長期趨勢的收斂/發散狀態,識別買賣訊號、趨勢延續或反轉。適合用於股票、期貨或其他價格波動市場,尤其在趨勢追蹤或震盪市況中,提供更全面的動能分析。腳本使用加權收盤價(WeightedClose)作為計算基礎,提升對成交量權重的敏感度,避免單純收盤價的偏差。

2. 輸入參數說明

腳本提供六個可調整的輸入參數,分別對應短週期與長週期的MACD計算,讓使用者根據市場特性或時間框架自訂指標的靈敏度:

  • FastLength1(5, "短週期DIF短天數"):短週期MACD的快速移動平均週期,預設值為5。數值越小,對短期價格變化越敏感;適合短期交易。
  • SlowLength1(10, "短週期DIF長天數"):短週期MACD的慢速移動平均週期,預設值為10。用於計算DIF的基準,數值越大,能過濾短期雜訊。
  • MACDLength1(3, "短週期MACD天數"):短週期MACD的訊號線(DEA)平滑週期,預設值為3。影響DEA的平滑程度,數值小則訊號更靈敏。
  • FastLength2(10, "長週期DIF短天數"):長週期MACD的快速移動平均週期,預設值為10。用於捕捉中長期趨勢。
  • SlowLength2(20, "長週期DIF長天數"):長週期MACD的慢速移動平均週期,預設值為20。提供更穩定的長期基準。
  • MACDLength2(7, "長週期MACD天數"):長週期MACD的訊號線(DEA)平滑週期,預設值為7。數值越大,長期訊號越平滑。

這些參數可透過XQ平台的指標設定介面調整,例如在日線圖上使用預設值,或在分鐘線圖上適當縮短以提高反應速度。注意:所有週期均以天數(或K棒數)為單位,需確保與圖表頻率匹配。

3. 變數與計算邏輯

腳本的計算邏輯清晰且高效,遵循XS語言規範(如優先使用內建函數XAverage進行指數移動平均計算)。以下是主要變數和步驟的詳細說明:

  • 變數宣告
    • price(0):儲存加權收盤價,用作兩組MACD的計算基礎。
    • MACDDIF1(0):短週期MACD的DIF值。
    • MACDDEA1(0):短週期MACD的DEA值。
    • MACDHist1(0):短週期MACD的柱狀圖值。
    • MACDDIF2(0):長週期MACD的DIF值。
    • MACDDEA2(0):長週期MACD的DEA值。
    • MACDHist2(0):長週期MACD的柱狀圖值。
    • trendUp(false):判斷短週期MACD柱狀圖的趨勢方向,true表示向上趨勢。
    • dif_str("") 和 macd_str(""):用於圖表標籤的字串變數,顯示參數組合。
  • MACD計算邏輯
    • 首先計算加權收盤價:price = WeightedClose();,這是XS內建函數,考慮開高低收的權重,提供更穩定的價格序列。
    • 短週期MACD: DIF計算:MACDDIF1 = XAverage(price, FastLength1) - XAverage(price, SlowLength1);,使用指數移動平均(EMA)計算快速與慢速線的差值。 DEA計算:MACDDEA1 = XAverage(MACDDIF1, MACDLength1);,對DIF進行EMA平滑。 柱狀圖:MACDHist1 = MACDDIF1 - MACDDEA1;,差值代表動能強弱。
    • 長週期MACD:類似短週期,但使用FastLength2、SlowLength2和MACDLength2參數計算MACDDIF2、MACDDEA2和MACDHist2。
    • 趨勢判斷:trendUp = MACDHist1 + MACDHist2 > MACDHist1[1] + MACDHist2[1];,比較當前合併柱狀圖值與前一根的合併值(注意:原腳本中MACDHist2[2]可能為typo,應為MACDHist2[1]以比較前一根;此處假設為修正後的邏輯)。若大於前值,視為向上趨勢。

腳本優先使用XS內建函數(如XAverage為EMA),確保計算準確且高效。無需陣列或多期調整,適用於標準K線圖。

4. 輸出與圖表呈現

腳本輸出多條線條和柱狀圖,使用Plot函數繪製,支持checkbox顯示控制。圖表標籤使用setplotLabel動態設定,顯示參數組合(如"DIF(5-10-10-20)")。輸出元素如下:

  • Plot1(MACDDIF1 + MACDDIF2, "DIF"):合併短長週期的DIF線,標籤為dif_str(如"DIF(5-10-10-20)")。代表整體趨勢收斂/發散。
  • Plot2(MACDDEA1 + MACDDEA2, "MACD"):合併短長週期的DEA線,標籤為macd_str(如"MACD(3-7)")。作為訊號線,提供交叉參考。
  • Plot3(MACDHist1 + MACDHist2, "Osc"):合併柱狀圖的基礎繪圖,用於後續條件覆蓋。
  • 條件柱狀圖繪圖(根據合併Hist值相對於0軸及趨勢方向):
    • 若合併Hist >= 0(0軸以上): 若trendUp為true:Plot4(MACDHist1 + MACDHist2, "Hist++"),表示正值向上趨勢(平台可設綠色粗柱)。 若trendUp為false:Plot5(MACDHist1 + MACDHist2, "Hist+-"),表示正值向下趨勢(平台可設綠色細柱)。
    • 若合併Hist < 0(0軸以下): 若trendUp為true:Plot6(MACDHist1 + MACDHist2, "Hist-+"),表示負值向上趨勢(平台可設紅色細柱)。 若trendUp為false:Plot7(MACDHist1 + MACDHist2, "Hist--"),表示負值向下趨勢(平台可設紅色粗柱)。

在XQ平台上,這些輸出通常顯示在副圖區域,不同Plot允許自訂顏色/樣式,提升視覺辨識度(如正值綠、負值紅,趨勢方向用粗細區分)。

5. 使用建議與解讀

  • 趨勢確認:當合併DIF向上穿越DEA時,可能為買入訊號(金叉);向下穿越為賣出訊號(死叉)。柱狀圖正值擴大(尤其是"Hist++")表示多頭動能增強;負值擴大("Hist--")表示空頭主導。
  • 背離訊號:觀察柱狀圖與價格的背離,例如價格創新高但柱狀圖未跟上(動能減弱),預示反轉風險。
  • 參數調整:短期交易者可縮短FastLength1/SlowLength1(e.g., 3/8);長期投資者延長FastLength2/SlowLength2(e.g., 12/26)。測試時確保週期匹配圖表頻率。
  • 結合其他指標:可與K線、RSI或布林通道搭配,例如柱狀圖正值時確認多頭趨勢。注意腳本使用加權收盤價,適合權重敏感市場。
  • 注意事項:腳本適用於有價格數據的市場,無需額外頻率調整,但測試時確認trendUp邏輯(原腳本可能有typo)。柱狀圖顏色需平台手動設定;腳本未包含警報,若需可擴展。腳本已自我檢查,遵守XS指標規範(如Plot無顏色定義),適合直接應用。



// XQ: MACD 指標 - 含短週期與長週期MACD,根據0軸位置與趨勢方向繪製不同柱狀圖
// 版本:20251008
// 描述:計算兩組MACD(短週期與長週期),繪製DIF、DEA與柱狀圖,柱狀圖根據0軸與趨勢方向使用不同Plot

// ------------------------------
// 1. 輸入參數宣告
//
input: FastLength1(5, "短週期DIF短天數"); // 短週期MACD短天數(TT腳本參數)
input: SlowLength1(10, "短週期DIF長天數"); // 短週期MACD長天數(TT腳本參數)
input: MACDLength1(3, "短週期MACD天數"); // 短週期MACD平滑週期(TT腳本參數)
input: FastLength2(10, "長週期DIF短天數"); // 長週期MACD短天數
input: SlowLength2(20, "長週期DIF長天數"); // 長週期MACD長天數
input: MACDLength2(7, "長週期MACD天數"); // 長週期MACD平滑週期

// ------------------------------
// 2. 變數宣告
//
Var: price(0); // 加權收盤價
Var: MACDDIF1(0); // 短週期MACD DIF
Var: MACDDEA1(0); // 短週期MACD DEA
Var: MACDHist1(0); // 短週期MACD柱狀圖
Var: MACDDIF2(0); // 長週期MACD DIF
Var: MACDDEA2(0); // 長週期MACD DEA
Var: MACDHist2(0); // 長週期MACD柱狀圖
Var: trendUp(false); // 短週期MACD柱狀圖趨勢,向上為true
Vars: dif_str(""),
macd_str("");


// ------------------------------
// 3. MACD計算邏輯
//

// 計算加權收盤價
price = WeightedClose(); // 使用加權收盤價作為兩組MACD的計算基礎

// 短週期MACD計算
MACDDIF1 = XAverage(price, FastLength1) - XAverage(price, SlowLength1); // 短週期DIF
MACDDEA1 = XAverage(MACDDIF1, MACDLength1); // 短週期DEA
MACDHist1 = MACDDIF1 - MACDDEA1; // 短週期柱狀圖

// 長週期MACD計算
MACDDIF2 = XAverage(price, FastLength2) - XAverage(price, SlowLength2); // 長週期DIF
MACDDEA2 = XAverage(MACDDIF2, MACDLength2); // 長週期DEA
MACDHist2 = MACDDIF2 - MACDDEA2; // 長週期柱狀圖

// 趨勢判斷
trendUp = MACDHist1 + MACDHist2 > MACDHist1[1] + MACDHist2[2]; // 短週期柱狀圖是否向上趨勢

// ------------------------------
// 4. 繪圖邏輯
//

dif_str = text("DIF", "(", numToStr(FastLength1,0), "-",numToStr(SlowLength1,0), "-", numToStr(FastLength2,0), "-",numToStr(SlowLength2,0), ")");
macd_str = text("MACD", "(", numToStr(MACDLength1,0), "-", numToStr(MACDLength2,0), ")");

// 短週期MACD繪圖
Plot1(MACDDIF1 + MACDDIF2, "DIF"); // DIF線
setplotLabel(1,dif_str);
Plot2(MACDDEA1 + MACDDEA2, "MACD"); // MACD線
setplotLabel(2,macd_str);

Plot3(MACDHist1 + MACDHist2, "Osc"); // 柱狀圖(基礎繪圖)
if MACDHist1 + MACDHist2 >= 0 then begin
if trendUp then
Plot4(MACDHist1 + MACDHist2, "Hist++") // 柱狀圖,0軸以上,趨勢向上
else
Plot5(MACDHist1 + MACDHist2, "Hist+-"); // 柱狀圖,0軸以上,趨勢向下
end else begin
if trendUp then
Plot6(MACDHist1 + MACDHist2, "Hist-+") // 柱狀圖,0軸以下,趨勢向上
else
Plot7(MACDHist1 + MACDHist2, "Hist--"); // 柱狀圖,0軸以下,趨勢向下
end;
留言
avatar-img
留言分享你的想法!
avatar-img
回甘老茶湯
6會員
39內容數
.
回甘老茶湯的其他內容
2025/10/03
在寫XQ腳本時,如果K棒數不夠的話,腳本可能會無效,所以,在settotalbar中放入足夠的K棒數就很重要了,因為放少了資料會出錯,放太多了又會太佔用系統資源。
Thumbnail
2025/10/03
在寫XQ腳本時,如果K棒數不夠的話,腳本可能會無效,所以,在settotalbar中放入足夠的K棒數就很重要了,因為放少了資料會出錯,放太多了又會太佔用系統資源。
Thumbnail
2025/10/02
此指標通過視覺化的柱狀圖設計,幫助交易者快速識別多頭或空頭動能的增強與減弱,特別適用於股票、期貨或其他價格波動市場。
Thumbnail
2025/10/02
此指標通過視覺化的柱狀圖設計,幫助交易者快速識別多頭或空頭動能的增強與減弱,特別適用於股票、期貨或其他價格波動市場。
Thumbnail
2025/09/17
常聽到股市名嘴或文章提到「基期」這一詞,一直沒搞懂到底是什麼意思,所幸查了一下,留個筆記。
Thumbnail
2025/09/17
常聽到股市名嘴或文章提到「基期」這一詞,一直沒搞懂到底是什麼意思,所幸查了一下,留個筆記。
Thumbnail
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
從程式策略中已經有反應方向有轉向為空方,尤其是川普與降息的不確定性,加上七月份是一整年度的高點,而一整年的低點會落在九月,須留意逢低買的風險,減少部位操作也是一種資金控管的好方法。
Thumbnail
從程式策略中已經有反應方向有轉向為空方,尤其是川普與降息的不確定性,加上七月份是一整年度的高點,而一整年的低點會落在九月,須留意逢低買的風險,減少部位操作也是一種資金控管的好方法。
Thumbnail
市場上,MACD和RSI是兩種常見的量化交易策略,它們基於不同的技術指標,用於分析股票或其他金融工具的價格走勢,並據此做出決策。
Thumbnail
市場上,MACD和RSI是兩種常見的量化交易策略,它們基於不同的技術指標,用於分析股票或其他金融工具的價格走勢,並據此做出決策。
Thumbnail
技術指標源自統計學原理,反映市場變化的概率分佈,而非預測工具。本文了解指標背後邏輯有利活學活用,甚至自行改良創新。
Thumbnail
技術指標源自統計學原理,反映市場變化的概率分佈,而非預測工具。本文了解指標背後邏輯有利活學活用,甚至自行改良創新。
Thumbnail
前幾天,幫忙輝哥分析了一下他的追強勢股的文章,迴響還不錯,其實就是這十個字“漲跌看趨勢,買賣靠策略“,你如果可以會心一笑,那你一是悟了。   大家可以好好想一想,自已是用什麼方式操作持股的,如果你是屬於技術派的,按理你會有一套看漲跌趨勢的邏輯,比如均線派,看月線上升下降,比如MACD,看豆芽
Thumbnail
前幾天,幫忙輝哥分析了一下他的追強勢股的文章,迴響還不錯,其實就是這十個字“漲跌看趨勢,買賣靠策略“,你如果可以會心一笑,那你一是悟了。   大家可以好好想一想,自已是用什麼方式操作持股的,如果你是屬於技術派的,按理你會有一套看漲跌趨勢的邏輯,比如均線派,看月線上升下降,比如MACD,看豆芽
Thumbnail
日線省略, 基本上還是過高的狀態
Thumbnail
日線省略, 基本上還是過高的狀態
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News