PlotLine 使用問題 ?

  •   441 
  • 最後發表   Jones  2024 十二月 13
Jones 發文於   2024/12/12

Hi,

 最近開始學習使用 PlotLine, 先以貴司提供範例: PlotMinMax

{ 畫出過去N日(不包含當日)的最高價/最低價 }


input: days(20);    // input: days(5);



//if BarFreq <> "Min" then return;

if Date <> Date[1] then begin

    value1 = Highest(GetField("High", "D")[1], days);

    value2 = Lowest(GetField("Low", "D")[1], days);

    PlotLine(1, 1, value1, CurrentBar, value1, "Max");

    PlotLine(2, 1, value2, CurrentBar, value2, "Min");

end;

改用20天(原碼為5天)為區間, 編譯無誤, 可是顯示高低線 卻只是以 10天的最高(低)點為判斷準則畫出, Why?

煩請高手解謎一下, 謝謝!

系統: Window11

XQ: 3.15.01

 

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/12/12

以分K繪製指標,預設5天。會從這5天第一根K開始繪製。數值分別是過去20天的最高價與最低價,而非過去10天。

以8044網家為例,會從12/6開始繪製,過去20天最高價是11/18的60.80。

Jones 發文於   2024/12/12

Dear Pro. 許:

謝謝您的快速解答!  但,

我是想用在日K上而非分K上, 而我所得到的結果, 還是10天為判斷, 20天的高低點很明顯的就顯示錯誤.

是我哪裡有誤解或誤用嗎?

Jones 發文於   2024/12/12

我用範例: 20天的執行結果

虎科大許教授 發文於   2024/12/12

(1)日K就不能用Date <> Date[1]這個條件判斷,因為它永遠成立。這個條件只能用在分K。

(2)當你觀察的商品過去10天的最高價也是過去20天的最高價時,很容易誤解以為只繪製過去10天的最高價。

(3)程式碼修改如下:

if barfreq<>"D" then raiseRunTimeError("限用日資料");
input: days(20);
value1 = Highest(GetField("High", "D")[1], days);
value2 = Lowest(GetField("Low", "D")[1], days);
PlotLine(1, 1, value1, CurrentBar, value1, "Max");
PlotLine(2, 1, value2, CurrentBar, value2, "Min");

虎科大許教授 發文於   2024/12/12

廣宇過去20天的最高價出現在11/20的40.80。不包含今天。

Jones 發文於   2024/12/12

真心感謝許教授, 跑出來的結果, 終於正確了!!!

額外的延伸問題, 還煩請不令敕教一下:

1. 如何將20天後的延伸線條 不顯示,

   我有嘗試將其設為 型式: 線段 似乎不管用 ?

2. 他的劃線是由圖形的左向右畫過去 抑或 由右向左?

 

 

 

虎科大許教授 發文於   2024/12/13

由左向右畫。

if barfreq<>"D" then raiseRunTimeError("限用日資料");
input: days(20);    // input: days(5);
value1 = Highest(GetField("High", "D")[1], days);
value2 = Lowest(GetField("Low", "D")[1], days);
PlotLine(1, currentBar-days, value1, CurrentBar, value1, "Max");
PlotLine(2, currentBar-days, value2, CurrentBar, value2, "Min");

 

發表回覆
Close