免費下載
訂閱模組
搜尋

如何運用函數繪製填色區塊


選擇單元...
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;
end;