如何運用函數繪製填色區塊
選擇單元...
XS語法進階應用
單元目錄
單元目錄
進階功能介紹
1-1 SetTotalBar資料讀取範圍與腳本執行的關係
1-2 SetBackBar指定頻率設定資料筆數
1-3 探討變數序列的觀念:幾天前黃金交叉商品為例
1-4 如何運用Print指令來抓程式的臭蟲
1-5 談OutputField跟GetFieldDate這兩個函數
1-6 計算區間漲跌幅的自訂函數
1-7 盤中即時資料欄位的應用
1-8 Tick欄位的應用
1-9 台股逐筆撮合的連續成交Tick序列
1-10 選股中心創掛牌新高與大單欄位的應用
1-11 集保相關欄位調整
1-12 如何使用函數取得商品的實際庫存數量
1-13 XS在可轉債的應用
1-14 XS函數「isfirstcall」說明
1-15 XScript 編輯器已支援 *.xs 副檔名的檔案
XQ 提供了能夠在線圖上指定區域填色的功能,例如 KD 指標的超買超賣區間,讓使用者能夠更簡單的辨識指標間的範圍。 以下是文章目錄:一、函數語法二、函數說明三、函數的運作方式四、簡單範例:KD 的超買超賣區塊填色
一、函數語法
PlotFill(序列編號, vFrom, vTo) PlotFill(序列編號, vFrom, vTo, "序列名稱")end;
二、函數說明
第一個參數是設定序列編號,會是 1~999 的數值,與目前 Plot 的序列編號相同。 第二個和第三個參數分別是當根 K 棒要填色的開始和結束點。 第四個參數是設定序列的名稱,為選填的參數。若沒有設定的話預設會是 " Plot "+序列編號。三、函數的運作方式
在第一次執行 (K棒X1) PlotFill(1, Y1_U, Y1_D) 時,此函數會在 Y1_U 到 Y1_D 間畫出一條垂直的直線,此時並不會有填色的效果。在第二次執行 (K棒X2) PlotFill(1, Y2_U, Y2_D) 時,且與兩次執行間沒有使用 NoPlot(1) 的狀況下,此時系統會將上次 (X1) 與此次 (X2) 的開始點 (Y1_U和Y2_U) 以及結束點 (Y1_D和Y2_D) 之間用直線連起來,搭配上 Y1_U, Y1_D 和 Y2_U, Y2_D 兩條垂直線,四條線連起來的區塊A填色。在第三次執行 (K棒X3) PlotFill(1, Y3_U, Y3_D) 時,且與第二次執行間沒有使用 NoPlot(1) 的狀況下,系統會將 Y2_U, Y3_U 和 Y2_D, Y3_D 連接,搭配上 Y2_U, Y2_D 和 Y3_U, Y3_D 兩條垂直線的區塊B填色。如果兩次呼叫此函數間有希望不塗色的部份的話,可以在區間內呼叫 NoPlot 函數來取消填色。需注意開始點和結束點的順序,會影響畫出的區塊。舉例來說:左圖第一次執行是 PlotFill(1, 100, 200),第二次執行是 PlotFill(1, 100, 200)。右圖第一次執行是是 PlotFill(1, 100, 200),第二次執行是 PlotFill(1, 200, 100)。 可以看到因為第二次的開始結束點交換了,導致填塞區塊也跟著交錯。此外 PlotFill 在查價視窗中不會顯示任何數值,只有單純的填色效果。 若需要知道填色區塊邊緣的數值的話,可以搭配其他的繪圖函數來做使用。四、簡單範例:KD 的超買超賣區塊填色
//計算KD指標,並將KD的超買超賣區間填色 input: Length(9, "天數"), RSVt(3, "RSVt權數"), Kt(3, "Kt權數"); input: OverBought(80, "超買"), OverSold(20, "超賣"); variable: rsv(0), k(0), _d(0); Stochastic(Length, RSVt, Kt, rsv, k, _d); Plot1(k, "K(%)"); Plot2(_d, "D(%)"); //當K值在超買線以上時 if k > OverBought then begin //將由超買線開始到K值結束的區間填色 PlotFill(3, OverBought, k); NoPlot(4); //當K值在超賣線以下時 end else if k < OverSold then begin //將由超賣線開始到K值結束的區間填色 PlotFill(4, OverSold, k); NoPlot(3); end else begin //當K值位於中間時,不要填色 NoPlot(3); NoPlot(4); end;