使用 lowestBar 函數遇到問題

  •   166 
  • 最後發表   KK333  2024 四月 23
KK333 發文於   2024/04/21

首先用

value1=HighestBar(high[1],200)+1;

此時value1=29 (用outputfield確認過)

問題來了

value2=lowestBar(low[value1],200);

value3=lowestBar(low[29],200);

value2跟value3數值為何會不一樣

 

求解感謝!!!!!

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

這是基準K棒不同的緣故。以下列台積電選股程式為例,Value1是根據[1]亦即昨天的K是基準K棒,而Value3的基準K棒是[5],亦即台積電最高價那天(20240412),Value1與Value3兩者差4根K,從4/12往前200天最低價出現在20230927。Value3才是正確答案。使用Value1會得到往前4個交易日的20230921,答案是錯的。

if symbol="2330.TW" then 

begin

value1=HighestBar(high[1],200)+1;

value2=lowestBar(low[value1],200)+value1;

value3=lowestBar(low[5],200)+5;

ret=1;

end;

outputField1(value1);

outputField2(value2);

outputField3(value3);

outputField4(date[value1]);

outputField5(date[value2]);

outputField6(date[value3]);

  • 按讚來自於
  • SIMPLELIFE328
KK333 發文於   2024/04/21

謝謝許教授

那為什麼單純宣告value1=29時,

value2=lowestBar(low[value1],200);

value3=lowestBar(low[29],200);

value2跟value3也會不一樣

 

然後要如何單純使用value1的數值組成另一個lowestBar函數中新的基準K棒

譬如像

value2=lowestBar(low[value1+value1],200);

這樣

 

虎科大許教授 發文於   2024/04/21

if symbol="2330.TW" then

begin

value1=HighestBar(high[1],200)+1;

value2=lowestBar(low[value1],200)+1;

value3=lowestBar(low[5],200)+5;

ret=1;

outputField1(value1);

outputField2(value2);

outputField3(value3);

outputField4(date[value1]);

outputField5(date[value2]);

outputField6(date[value3]);

end;

 

XS小編 發文於   2024/04/23

 Hello KK333,

 

HighestBar / LowestBar 和 Highest / Lowest 一樣,是使用節省效能的方式撰寫。

故變動序列資料的起始點 (ex. lowestBar(low[value1],200)) 會造成函數運算錯誤。

在這種狀況下請使用 SimpleHighestBar / SimpleLowestBar。

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close