免責聲明:請注意,本文內容僅分享個人改寫的常用的技術工具,一切內容僅供參考,完全不涉及任何投資買賣建議。
指標介紹
威廉指標(Williams %R)是由美國交易大師拉里·威廉斯(Larry Williams)於1973年開發的一種動量指標,用於衡量市場的超買(overbought)和超賣(oversold)狀態。其計算公式基於最近一段時間內的最高價、最低價和收盤價,數值範圍通常為0到-100(或0到100,視實現方式而定)。在XS平台中,內建函數PercentR()回傳的數值範圍為0到-100,其中:
- 接近0(例如大於-20)表示超買狀態,市場可能過熱,價格有回檔風險。
- 接近-100(例如小於-80)表示超賣狀態,市場可能過冷,價格有反彈機會。
- 介於-50到-20之間為多方力道減弱區間,介於-80到-50之間為空方力道減弱區間。
腳本功能
- 輸入參數:
- Length(10, "威廉天數"):計算威廉指標的週期長度,預設為10根K棒。調整此值可改變指標的敏感度(較小值更敏感,易產生假訊號;較大值更平滑,易延遲訊號)。
- 計算邏輯:
- 使用PercentR(Length)函數計算威廉指標,並調整為-100到0的範圍(_wr = PercentR(Length) - 100)。
- 繪製威廉指標線(Plot1(_wr, "威廉")),並顯示標籤(如"威廉10")。
- K棒顏色判斷:
腳本使用plotK()函數繪製K棒,並透過條件式和noPlot()確保僅一種顏色被顯示,避免重疊。 - 亮紅色:威廉指標 ≥ -20,代表超買強勢,市場多頭力道強勁,但需警惕反轉。
- 亮白色:威廉指標 ≤ -80,代表超賣弱勢,市場空頭力道強勁,但可能出現反彈。
- 紅外框:威廉指標介於 -50 到 -20 之間,多方力道減弱,可能進入盤整或回檔階段。
- 白外框:威廉指標介於 -80 到 -50 之間,空方力道減弱,可能進入盤整或反彈階段。
- 執行頻率:腳本為指標腳本,適合任何K棒頻率,但需注意不同頻率(如日線 vs. 分鐘線)可能影響計算結果的準確性。優先使用XS內建函數,避免自訂計算以確保效率。
使用說明
- 安裝與應用:
- 在XS平台(如XQ或xStrader)中,建立新指標腳本,將提供的程式碼複製貼上並儲存為"威廉K棒指標"。
- 將腳本應用到圖表:選擇商品(如股票或期貨),設定K棒頻率(如日線),並疊加此指標。威廉線將顯示在圖表下方子圖,K棒顏色將根據指標值自動變化。
- 建議與其他指標(如移動平均線或RSI)結合使用,避免單一指標的局限性。
- 參數調整:
- 修改Length值測試不同週期,例如設為14以匹配常見設定。較短週期適合短線交易,較長週期適合中長期趨勢。
- 若需自訂顏色閾值(如調整超買線為-30),可修改if條件中的數值,但需確保邏輯完整(例如避免範圍重疊)。
- 解釋與交易應用:
- 顏色訊號: 亮紅K棒:考慮減持多單或觀望,等待回檔確認。 亮白K棒:考慮建立多單或觀望反彈。 紅外框/白外框K棒:市場進入中性區間,適合盤整策略或等待突破。
- 注意事項: 威廉指標易受極端價格影響,在波動劇烈市場(如盤整期)可能產生假訊號。建議結合成交量或趨勢指標驗證。 腳本不使用陣列或中間變數儲存多期資料,符合XS最佳實務,直接利用內建函數以提升效率。 在交易腳本中,可參考此邏輯作為進出場條件,但需額外遵守交易注意事項(如使用position、filled、setposition管理部位)。
- 局限性:腳本僅繪製單一顏色K棒,不支援自訂線條樣式。測試時,請在歷史資料上回測以驗證準確性。
// ------------------------------
// 1. 宣告區塊
// ------------------------------
// 變數宣告
input:
Length(10,"威廉天數");
var:
_H(0), // 儲存最高價
_L(0), // 儲存最低價
_O(0), // 儲存開盤價
_C(0), // 儲存收盤價
_wr(0), // 儲存威廉指標數值
_wr_str("");
// ------------------------------
// 2. 數值計算區塊
// ------------------------------
// 將當前 K 棒的價位資料賦值給變數
// 避免直接使用內建名稱,以符合撰寫規範
_H = high; // 將當前 K 棒的最高價賦值給 _H
_L = low; // 將當前 K 棒的最低價賦值給 _L
_O = open; // 將當前 K 棒的開盤價賦值給 _O
_C = close; // 將當前 K 棒的收盤價賦值給 _C
// 計算威廉指標 (%R)
// PercentR() 函數回傳的數值範圍為 0 到 -100,符合傳統定義
_wr = PercentR(Length) - 100; // 計算 10 期威廉指標數值
_wr_str = text("威廉",numToStr(Length,0));
// ------------------------------
// 3. 繪圖與判斷區塊
// ------------------------------
// 根據威廉指標數值判斷K棒顏色
// plotK 函數無法直接定義顏色,需依條件分別繪製並搭配 noplot 確保僅有一種 K 棒被繪製
// 亮紅色,代表威廉指標大於 -20,處於超買強勢狀態
Plot1(_wr, "威廉");
setplotLabel(1,_wr_str);
if _wr >= -20 then
begin
plotK(11, _O, _H, _L, _C, "亮紅");
noPlot(12);
noplot(13);
noplot(14);
// 由於 plotK() 無法像 plot() 使用 plot(1, noplot),因此需透過條件式來避免重複繪製
// 在這個例子中,不需要額外使用 noplot,因為 if/else if 邏輯已經確保只會執行一個區塊
end
// 亮白色,代表威廉指標小於 -80,處於超賣弱勢狀態
else if _wr <= -80 then
begin
plotK(12, _O, _H, _L, _C, "亮白");
noPlot(11);
noplot(13);
noplot(14);
end
// 紅外框,代表威廉指標介於 -50 到 -20 之間,多方力道減弱
else if _wr >= -50 and _wr < -20 then
begin
plotK(13, _O, _H, _L, _C, "紅框");
noPlot(11);
noplot(12);
noplot(14);
end
// 白外框,代表威廉指標介於 -80 到 -50 之間,空方力道減弱
else if _wr > -80 and _wr < -50 then
begin
plotK(14, _O, _H, _L, _C, "白框");
noPlot(11);
noplot(12);
noplot(13);
end;























