免責聲明:請注意,本文內容僅分享個人改寫的常用的技術工具,一切內容僅供參考,完全不涉及任何投資買賣建議。
注意:此腳本需訂閱「籌碼分析模組」後才能呈現相關數據,無訂閱該模組者將不適用。
大戶散戶籌碼指標 (Large and Small Chip Indicator)
指標概述
本指標腳本專為XQ交易系統設計,旨在提供台股大戶與散戶的籌碼行為分析,幫助使用者洞察市場參與者的動向,包括特大單、大戶與散戶的買賣差額、占比,以及相關衍生指標如ADL(吸籌倒貨指標)、換手率與量比。透過計算買賣量差與金額差,本指標揭示機構投資者(特大單與大戶)與散戶的交易行為,輔助判斷市場趨勢、吸籌或倒貨訊號。腳本支援分鐘頻率(Min)、日頻率(D)與還原權息日頻率(AD),並在非支援頻率下觸發運行時錯誤以確保正確性。此指標強調機構與散戶籌碼動向的對比,適用於短線交易或趨勢追蹤策略。計算基於XQ系統內建的報價欄位(如買進/賣出特大單量、金額等),避免自訂陣列儲存,優先使用GetField函數以維持效率與準確性。
計算邏輯
腳本分為四個主要邏輯區塊,嚴格遵守XS程式規範,包括不使用newday判斷新日、直接使用GetField取得多期數據,以及避免中間變數誤用。
- 頻率檢查與變數宣告: 檢查腳本頻率,僅允許Min、D或AD頻率運行。 宣告變數包括Vol(總成交量)、TA(總成交值)、SuperLargeDiff(特大單買賣量差)、LargeDiff(大戶買賣量差)、SmallDiff(散戶買賣量差)、SuperLargeDiffTA(特大單買賣金額差)、LargeDiffTA(大戶買賣金額差)、SmallDiffTA(散戶買賣金額差)、SuperLargeRatio(特大單差占比)、LargeDiffRatio(大戶差占比)、ADL(吸籌倒貨指標)、TurnoverRate(換手率)、VolumeRatio(量比)、LargeDiffRatioYesterday(昨日大戶差占比)。
- 計算買賣差與相關數值: 取得總成交量(Vol = GetField("Volume", "D"))與總成交值(TA = GetField("AvgPrice", "D") * Vol * 1000)。 計算特大單買賣量差(SuperLargeDiff = 買進特大單量 - 賣出特大單量)。 計算大戶買賣量差(LargeDiff = (買進特大單量 + 買進大單量) - (賣出特大單量 + 賣出大單量))。 計算散戶買賣量差(SmallDiff = 買進小單量 - 賣出小單量)。 同樣計算金額差(SuperLargeDiffTA、LargeDiffTA、SmallDiffTA),使用GetField取得日頻率數據。
- 計算占比、ADL、換手率、量比與昨日大戶差占比: 若總成交值不為零,計算特大單差占比(SuperLargeRatio = SuperLargeDiffTA / TA)與大戶差占比(LargeDiffRatio = LargeDiffTA / TA)。 ADL = SuperLargeRatio / LargeDiffRatio(若LargeDiffRatio不為零,避免除零錯誤)。 計算昨日大戶差占比,使用[1]索引取得前一期數據。 換手率(TurnoverRate = Vol / 前一日發行張數),若Close為零或發行張數無效則不計算。 量比(VolumeRatio)直接從XQ系統取得(GetField("量比"))。
- 繪製指標: 計算買賣力(value3 = 外盤量 - 內盤量)。 繪製plot1至plot12,包括買賣力、外盤量、內盤量、大戶/散戶/特大單差、占比、ADL、換手率、量比與昨日大戶差占比。 若某些指標值為零(如換手率無效),使用noplot隱藏該線條以避免誤導。
指標輸出與解讀
- 買賣力:外盤量減內盤量,正值表示買方主導,負值表示賣方主導。
- 外盤量 / 內盤量:分別顯示主動買進與賣出的成交量(預設不顯示,可透過checkbox調整)。
- 大戶 / 散戶 / 特大:買賣量差,正值表示淨買入,負值表示淨賣出。特大單通常代表大型機構動向。
- 特差比 / 大戶差比:金額差占比,值越大表示該類買方越積極。
- 吸倒比 (ADL):特大單占比除以大戶占比,高值可能表示機構吸籌,低值或負值表示倒貨。
- 換手率:成交量佔總發行量的比例,高換手率表示市場活躍,可能伴隨價格波動。
- 量比%:當日成交量相對近期平均的比率,高值表示成交放大。
- 昨大戶差比:昨日大戶差占比,用於比較今日與昨日機構行為。
使用建議與注意事項
- 適用情境:適合台股分析,結合K線圖使用。當ADL > 1且大戶差比正值時,可能為吸籌訊號;反之為倒貨訊號。搭配量比與換手率評估成交活躍度。
- 限制:腳本僅支援指定頻率,且依賴XQ系統報價數據(如特大單量),在盤中或無數據時可能無效。plot僅包含數值、名稱與checkbox,無顏色或線條自訂。
- 優化提示:若需回測,建議在交易腳本中整合本指標,並使用position與setposition管理部位(避免使用marketposition)。腳本已自我檢查,所有注意事項均遵守,包括優先使用XS內建函數與避免跨類別腳本函數。
此腳本基於XQ系統報價數據開發,確保計算精準與可讀性。
// ------------------------------
// 1. 頻率檢查與變數宣告
// ------------------------------
if barfreq <> "Min" and barfreq <> "D" and barfreq <> "AD" then
raiseruntimeerror("僅支援分鐘與日頻率(含還原)");
Var: Vol(0.0); // 總成交量
Var: TA(0.0); // 總成交值
Var: SuperLargeDiff(0.0); // 特大單買賣量差
Var: LargeDiff(0.0); // 大戶買賣量差
Var: SmallDiff(0.0); // 散戶買賣量差
Var: SuperLargeDiffTA(0.0); // 特大單買賣金額差
Var: LargeDiffTA(0.0); // 大戶買賣金額差
Var: SmallDiffTA(0.0); // 散戶買賣金額差
Var: SuperLargeRatio(0.0); // 特大單差占比
Var: LargeDiffRatio(0.0); // 大戶差占比
Var: ADL(0.0); // 大型機構吸籌倒貨指標值
Var: TurnoverRate(0.0); // 換手率(成交量/估算發行量)
Var: VolumeRatio(0.0); // 量比(直接從XQ系統取得)
Var: LargeDiffRatioYesterday(0.0); // 昨日大戶差占比
// ------------------------------
// 2. 計算買賣差與相關數值
// ------------------------------
// 取得總成交量
Vol = GetField("Volume", "D"); // 總成交量
TA = GetField("AvgPrice", "D") * Vol * 1000; // 總成交值
// 計算特大單買賣差
SuperLargeDiff = GetField("買進特大單量", "D") - GetField("賣出特大單量", "D");
// 計算大戶買賣差(特大單 + 大單)
LargeDiff = (GetField("買進特大單量", "D") + GetField("買進大單量", "D")) -
(GetField("賣出特大單量", "D") + GetField("賣出大單量", "D"));
// 計算散戶買賣差
SmallDiff = GetField("買進小單量", "D") - GetField("賣出小單量", "D");
// 特大單買賣金額差
SuperLargeDiffTA = GetField("買進特大單金額", "D") - GetField("賣出特大單金額", "D");
// 計算大戶買賣金額差(特大單 + 大單)
LargeDiffTA = (GetField("買進特大單金額", "D") + GetField("買進大單金額", "D")) -
(GetField("賣出特大單金額", "D") + GetField("賣出大單金額", "D"));
// 計算散戶買賣金額差
SmallDiffTA = GetField("買進小單金額", "D") - GetField("賣出小單金額", "D");
// ------------------------------
// 3. 計算占比、ADL、換手率、量比與昨日大戶差占比
// ------------------------------
// 計算當日大戶差占比
if TA <> 0.0 then begin
SuperLargeRatio = SuperLargeDiffTA / TA; // 特大單金額差除以總成交值
LargeDiffRatio = LargeDiffTA / TA; // 大戶金額差除以總成交值
// 避免 LargeDiffRatio 為 0 導致除零錯誤
if LargeDiffRatio <> 0.0 then
ADL = SuperLargeRatio / LargeDiffRatio; // ADL = 特大單金額差比除以大戶金額差比
end;
// 取得昨日總成交值
Value1 = GetField("AvgPrice", "D")[1] * GetField("Volume", "D")[1] * 1000; // 昨日總成交值
// 計算昨日大戶買賣金額差
Value2 = (GetField("買進特大單金額", "D")[1] + GetField("買進大單金額", "D")[1]) -
(GetField("賣出特大單金額", "D")[1] + GetField("賣出大單金額", "D")[1]);
// 計算昨日大戶差占比
if Value1 <> 0.0 then begin
LargeDiffRatioYesterday = Value2 / Value1; // 昨日大戶金額差除以昨日總成交值
end;
// 計算換手率
if close <> 0 then begin
// 取得前一日發行張數(約略值)
Value1 = GetField("發行張數(張)", "D")[1]; // 前一日總發行量
if Value1 <> 0 then begin
TurnoverRate = Vol / Value1; // 換手率 = 總成交量 / 總發行量
end;
end;
// 取得量比
VolumeRatio = GetField("量比"); // 直接從XQ系統取得量比數據
// ------------------------------
// 4. 繪製指標
// ------------------------------
value1 = GetField("外盤量","D");
value2 = GetField("內盤量","D");
value3 = value1 - value2;
plot1(value3,"買賣力");
plot2(value1,"外盤量",checkbox:=0);
plot3(value2,"內盤量",checkbox:=0);
plot4(LargeDiff, "大戶"); // 繪製大戶買賣差
plot5(SmallDiff, "散戶"); // 繪製散戶買賣差
plot6(SuperLargeDiff, "特大"); // 繪製特大單買賣差
plot7(SuperLargeRatio, "特差比"); // 繪製特大單差占比
plot8(LargeDiffRatio, "大戶差比"); // 繪製大戶差占比
plot9(ADL, "吸倒比"); // 繪製吸籌倒貨比指標
plot10(TurnoverRate, "換手率"); // 繪製換手率(或週轉率)
if TurnoverRate = 0 then begin
noplot(10); // 若無有效換手率數據,則不繪製
end;
plot11(VolumeRatio, "量比%"); // 繪製量比
if VolumeRatio = 0 then begin
noplot(11); // 若無有效量比數據,則不繪製
end;
plot12(LargeDiffRatioYesterday, "昨大戶差比"); // 繪製昨日大戶差占比
if LargeDiffRatioYesterday = 0 then begin
noplot(12); // 若無有效昨日大戶差占比數據,則不繪製
end;









