getfield改為openD/closeD/highD/lowD回測結果不同

  •   135 
  • 最後發表   小小的茶米  2025 六月 19
小小的茶米 發文於   2025/06/13

請問小幫手,我的程式碼使用openD/closeD/highD/lowD回測會有錯誤,但若改成getfield就沒問題.

可是這幾個不是相等的嗎

(程式碼使用5分k回測)

*******以下不正常*********

value1 = Average(closeD(1), 10);

value2 = Average(closeD(1), 20);

value3 = Average(closeD(1), 60);

//進場條件

condition11 = ((highest(highD(1),60)-lowest(lowD(1),60))/lowest(lowD(1),60))*100 >= 30;//60日內高低點超過30%

condition12 = value1 > value2 and value2 > value3;

condition16 = openD(0) > getfield("參考價","D");

condition17 = GetField("volume","D") >= 3000;//成交量大等於3000張

*******以下正常*********

value1 = Average(GetField("close","D")[1], 10);

value2 = Average(GetField("close","D")[1], 20);

value3 = Average(GetField("close","D")[1], 60);

//進場條件

condition11 = ((highest(GetField("high","D")[1],60)-lowest(GetField("low","D")[1],60))/lowest(GetField("low","D")[1],60))*100 >= 30;//60日內高低點超過30%

condition12 = value1 > value2 and value2 > value3;

condition16 = GetField("open","D")[0] > getfield("參考價","D");

condition17 = GetField("volume","D") >= 3000;//成交量大等於3000張

附加文件

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

使用這些函數,你先要了解這些函數的特性。當你純粹用CloseD(0)來表達當天的收盤價,它一定與GetField("Close","D")相同,但你用來做其他計算,例如你的情況,計算平均,則兩者會不同。CloseD(0)的平均會根據主頻率來計算平均,亦即它會用5分鐘的CloseD(0)計算平均,而非5天的平均。

小小的茶米 發文於   2025/06/19

好的,謝謝教授,我應該是理解了

發表回覆
Close