首先用
value1=HighestBar(high[1],200)+1;
此時value1=29 (用outputfield確認過)
問題來了
value2=lowestBar(low[value1],200);
value3=lowestBar(low[29],200);
value2跟value3數值為何會不一樣
求解感謝!!!!!
首先用
value1=HighestBar(high[1],200)+1;
此時value1=29 (用outputfield確認過)
問題來了
value2=lowestBar(low[value1],200);
value3=lowestBar(low[29],200);
value2跟value3數值為何會不一樣
求解感謝!!!!!
這是基準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]);
謝謝許教授
那為什麼單純宣告value1=29時,
value2=lowestBar(low[value1],200);
value3=lowestBar(low[29],200);
value2跟value3也會不一樣
然後要如何單純使用value1的數值組成另一個lowestBar函數中新的基準K棒
譬如像
value2=lowestBar(low[value1+value1],200);
這樣
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;
Hello KK333,
HighestBar / LowestBar 和 Highest / Lowest 一樣,是使用節省效能的方式撰寫。
故變動序列資料的起始點 (ex. lowestBar(low[value1],200)) 會造成函數運算錯誤。
在這種狀況下請使用 SimpleHighestBar / SimpleLowestBar。
感謝 虎科大許教授 的熱心回覆。
4 評論