免責聲明:請注意,本文內容僅分享個人改寫的常用的技術工具,一切內容僅供參考,完全不涉及任何投資買賣建議。
1. 指標概述
XQ: OBV動能柱指標(On Balance Volume Momentum Histogram Indicator)是一款基於成交量動能分析的技術指標腳本,使用XS程式語言撰寫,適用於XQ交易平台(如XQ Trader)。此指標以經典的On Balance Volume (OBV) 為基礎,計算成交量的累積變化,並透過短期和長期移動平均線(Moving Average)的差值,呈現成交量的動能柱狀圖。目的是幫助交易者識別市場的多空趨勢轉變、動能強弱,以及潛在的買賣訊號。
OBV指標最早由Joseph Granville於1963年提出,它假設成交量是價格變化的先行指標:當價格上漲時,伴隨的成交量被視為「多頭力量」;價格下跌時,則視為「空頭力量」。此腳本擴展了傳統OBV,加入動能柱的視覺化設計,讓使用者更容易觀察OBV與其移動平均之間的偏差,從而捕捉趨勢加速或反轉的機會。適合用於股票、期貨或其他有成交量數據的市場,尤其在盤整或趨勢轉折時提供參考。2. 輸入參數說明
腳本提供兩個可調整的輸入參數,讓使用者根據不同市場或時間框架自訂指標的敏感度:
- SMAlength(5, "短週期"):短期移動平均的計算週期,預設值為5。這個參數用於計算OBV的短期平均線,數值越小,指標對短期波動越敏感;數值越大,則更平滑,適合捕捉中短期趨勢。
- MMAlength(20, "長週期"):長期移動平均的計算週期,預設值為20。用於計算OBV的長期平均線,數值越大,能過濾雜訊,強調長期趨勢。
這些參數可透過XQ平台的指標設定介面調整,例如在日線圖上使用預設值,或在分鐘線圖上縮短週期以提高靈敏度。
3. 變數與計算邏輯
腳本的計算邏輯嚴謹且高效,遵循XS語言的規範(如變數名稱前加_避免衝突,但此腳本未嚴格使用,可能需依平台調整)。以下是主要變數和步驟的詳細說明:
- 變數宣告:
- obvolume(0):用於儲存累積的OBV值,初始為0。
- obvSMA(0):OBV的短期移動平均值。
- obvSMA_Str(""):短期平均線的文字標籤,用於圖表顯示(如"5MA")。
- obvMMA(0):OBV的長期移動平均值。
- obvMMA_Str(""):長期平均線的文字標籤(如"20MA")。
- OBV計算邏輯:
- 在腳本執行時,首先檢查當前K棒是否為第一根(CurrentBar = 1),若是則初始化obvolume = 0。
- 對於後續K棒,比較當前收盤價(close)與前一根收盤價(close[1]): 如果close > close[1](價格上漲),則obvolume = obvolume[1] + volume(累加當前成交量,視為多頭貢獻)。 如果close < close[1](價格下跌),則obvolume = obvolume[1] - volume(減去當前成交量,視為空頭貢獻)。 如果close = close[1](價格持平),則obvolume = obvolume[1](維持前值,不變)。
- 這符合OBV的核心原理:成交量隨價格方向累積,形成一個反映多空力量的序列。
- 移動平均計算:
- obvSMA = average(obvolume, SMAlength):使用XS內建的average函數計算OBV的短期簡單移動平均(SMA)。
- obvMMA = average(obvolume, MMAlength):計算OBV的長期簡單移動平均(MMA)。
- 標籤設定:obvSMA_Str = text(numToStr(SMAlength,0),"MA") 和 obvMMA_Str = text(numToStr(MMAlength,0),"MA"),用於圖表上顯示如"5MA"或"20MA",提升可讀性。
腳本優先使用XS內建函數(如average),避免自寫計算式,提高效率和準確性。注意腳本頻率:適用於K線圖,無需調整多期數據取值。
4. 輸出與圖表呈現
腳本輸出多條線條和柱狀圖,使用Plot函數繪製,支持checkbox顯示控制。所有輸出均為序列值,無顏色/樣式自訂(符合指標腳本規範)。圖表元素如下:
- Plot1(obvolume, "OBV", checkbox:=1):主OBV線,顯示累積成交量序列。通常呈現為折線圖,代表整體成交量趨勢。
- Plot2(obvSMA, "SMA", checkbox:=1):短期移動平均線,標籤為obvSMA_Str(如"5MA")。用於平滑OBV短期波動。
- Plot3(obvMMA, "MMA", checkbox:=1):長期移動平均線,標籤為obvMMA_Str(如"20MA")。用於捕捉OBV長期趨勢。
- Plot4(obvolume - obvSMA, "短多空", checkbox:=1):OBV與短期平均的差值柱狀圖,稱為「短多空」。正值表示短期多頭動能強(綠柱);負值表示空頭動能強(紅柱)。
- Plot5(obvSMA - obvMMA, "平均趨勢", checkbox:=1):短期平均與長期平均的差值柱狀圖,稱為「平均趨勢」。反映中長期趨勢強度。
- Plot6(obvolume - obvMMA, "長多空", checkbox:=1):OBV與長期平均的差值柱狀圖,稱為「長多空」。用於觀察長期多空偏差。
在XQ平台上,這些柱狀圖通常顯示在副圖區域,便於與價格圖比較。checkbox允許使用者隱藏特定線條,自訂視圖。
5. 使用建議與解讀
- 趨勢確認:當OBV線向上穿越其移動平均線(尤其是長期MMA),可能表示多頭趨勢加強;反之向下穿越,暗示空頭趨勢。動能柱正值擴大時,建議追多;負值擴大時,考慮做空或出場。
- 背離訊號:OBV與價格的背離是關鍵。例如,價格創新高但OBV未跟上(或動能柱減弱),可能預示反轉。
- 參數調整:在波動大市場縮短SMAlength(e.g., 3)以捕捉快速變化;在趨勢市場延長MMAlength(e.g., 50)過濾雜訊。
- 結合其他指標:可與K線、RSI或MACD搭配使用,避免單一指標盲點。例如,OBV動能柱正值時確認買入訊號。
- 注意事項:OBV依賴成交量數據,適合有真實成交量的市場(如台股)。在無成交量商品(如某些指數)上無效。腳本未使用陣列或多期數據,執行高效,但測試時需確認平台頻率一致(如日線或分鐘線)。若需進階,可添加條件判斷(如交叉訊號警報)。
此腳本已自我檢查,遵守XS指標注意事項(如plot無顏色定義),並添加詳盡註解提升可讀性。若需修改或擴展,請參考XQ官方文件。
// XQ: OBV動能柱指標
//
input:SMAlength(5,"短週期"), MMAlength(20,"長週期");
variable: obvolume(0), obvSMA(0), obvSMA_Str(""), obvMMA(0), obvMMA_Str("");
if CurrentBar = 1 then
obvolume = 0
else
begin
if close > close[1] then
obvolume = obvolume[1] + volume
else
begin
if close < close[1] then
obvolume = obvolume[1] - volume
else
obvolume = obvolume[1];
end;
end;
obvSMA = average(obvolume,SMAlength);
obvMMA = average(obvolume,MMAlength);
obvSMA_Str = text(numToStr(SMAlength,0),"MA");
obvMMA_Str = text(numToStr(MMAlength,0),"MA");
Plot1(obvolume,"OBV",checkbox:=1);
plot2(obvSMA,"SMA",checkbox:=1);
plot3(obvMMA,"MMA",checkbox:=1);
setplotLabel(2,obvSMA_Str);
setplotLabel(3,obvMMA_Str);
Plot4(obvolume-obvSMA,"短多空",checkbox:=1);
Plot5(obvSMA-obvMMA,"平均趨勢",checkbox:=1);
Plot6(obvolume-obvMMA,"長多空",checkbox:=1);