選股策略選出來的標的變少

  •   64 
  • 最後發表   hhhf  2024 四月 03
hhhf 發文於   2024/04/01

請問我要抓取兩個K棒之間的最高價,為什麼代碼增加符合檔數會變少呢

INput:N(90,"天期");

extremes(LOW,N,-1,value2,value3);                                          

extremes(HIGH,value3,1,value5,value6);                                     

if value5>value2

then ret=1;

以上抓到1746檔

INput:N(90,"天期");

extremes(LOW,N,-1,value2,value3);                                          

extremes(HIGH,value3,1,value5,value6);                                     

value31 = value3-1;

value32 = value6+1;

Array : NumArray[](0);

value51 = value31-value32+1 ;

Array_SetMaxIndex(NumArray, value51);

for value20 =value32 to value31                                             

NumArray[value20]=high[value20];

NthExtremesArray(NumArray,value51,1,1,value9,VAlue10);

NthExtremesArray(NumArray,value51,2,1,value11,value12);

if value5>value2

Then ret=1;

程式變成這樣,為什麼符合檔數變成61檔呢

XS小編 發文於   2024/04/03

 Hello hhhf,

 

因為出現計算錯誤,您可以切換到錯誤的商品即會顯示 (參考附圖)。

小編認為是陣列超出範圍導致,您可以將for迴圈修改為:

if value20 <= value51 and value20 > 0 then begin

    for value20 =value32 to value31 NumArray[value20]=high[value20];

    end;

確保 value20 不會超出陣列。

 

另外 extremes 是用節省效能的方式撰寫,若您放入的期數會改變的話有可能出現計算錯誤。

小編建議您改用 simplehighest 等 simple 開頭的函數。

附加文件

發表回覆
Close