getfield 抓不到最新日期的收盤價

  •   43 
  • 最後發表   mb1990412  3 天前
mb1990412 發文於   2026/01/07

GetField("收盤價")

或者 GetField("收盤價")[0]

日期選擇今天1月7號 抓到的收盤價都是 去年12/23

是資料庫目前有問題嗎?

還是??

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

你需要提供更詳細的資訊,例如使用哪一類型的腳本、使用什麼頻率、是執行策略還是用策略進行回測、在什麼情況下出現問題。

mb1990412 發文於   2026/01/08

variable: avg1(0);

variable: count(0);
variable: bias10_count(0);
variable: bias15_count(0);
variable: bias20_count(0);
variable: biasminus10_count(0);
variable: biasminus15_count(0);
variable: biasminus20_count(0);
variable: bias_loop1(0);
variable: show(0);
variable: show_test(0);
variable: show_test1(0);
variable: show_test2(0);



show_test=GetField("收盤價")[count];
show_test1=average(GetField("收盤價")[count],10);
show_test2=GetField("收盤價")[count+1];
print("1:",show_test);
print("2:",show_test1);
print("3:",show_test2);

bias_loop1 =  ((show_test/show_test1) -1) *100;
print(bias_loop1);
if (bias_loop1 >10) then bias10_count+=1;
if (bias_loop1 >15) then bias15_count+=1;
if (bias_loop1 >20) then bias20_count+=1;
if (bias_loop1 <=-10) then biasminus10_count+=1;
if (bias_loop1 <=-15) then biasminus15_count+=1;
if (bias_loop1 <=-20) then biasminus20_count+=1;

variable: bias10(0);
bias10 = Bias(10);
if  bias10<100 then ret=1; //ret=1 篩選條件成立
OutputField1(bias10,1,"bias10"); 
OutputField2(bias10_count,1,"bias10次數"); 
OutputField3(bias15_count,1,"bias15次數");
OutputField4(bias20_count,1,"bias20次數");

OutputField5(biasminus10_count,1,"bias-10次數"); 
OutputField6(biasminus15_count,1,"bias-15次數");
OutputField7(biasminus20_count,1,"bias-20次數");
OutputField8(show,3,"test_人工算bias值正確性確認");
OutputField9(show_test1,3,"avg");
OutputField10(show_test,3,"close");
OutputField11(show_test2,3,"close");



目前測試的code長這樣 我想把getfield的值 拿來作判別

但是我print出來後發現 getfield拿到的非scalar ,是 一個list有十個數字 , 

我原本是想用for loop去紀錄每天的狀態, 但目前狀況是不用for loop 但是只能選10個數字

正常狀況getfield應該是要一個數字後續操作才方便阿 , 用了for loop 行為更詭異

    if (bias_loop1 >10) then bias10_count+=1;
    if (bias_loop1 >15) then bias15_count+=1;
    if (bias_loop1 >20) then bias20_count+=1;

都沒有正常累加

另外

if (bias_loop1 <=-10) then biasminus10_count+=1;
if (bias_loop1 <=-15) then biasminus15_count+=1;
if (bias_loop1 <=-20) then biasminus20_count+=1;

執行後的表格都沒有顯示出來很奇怪

許教授有哪些解方?

print出來的結果 用3006 晶豪科為例子

1: 87.700000 
2: 82.100000 
3: 84.100000 
6.820950 
1: 96.400000 
2: 83.550000 
3: 87.700000 
15.380012 
1: 105.000000 
2: 85.940000 
3: 96.400000 
22.178264 
1: 98.100000 
2: 87.490000 
3: 105.000000 
12.127100 
1: 107.500000 
2: 90.090000 
3: 98.100000 
19.325119 
1: 118.000000 
2: 94.060000 
3: 107.500000 
25.451839 
1: 129.500000 
2: 98.840000 
3: 118.000000 
31.019830 
1: 139.000000 
2: 104.590000 
3: 129.500000 
32.899895 
1: 144.500000 
2: 110.980000 
3: 139.000000 
30.203640 
1: 146.500000 
2: 117.220000 
3: 144.500000 
24.978673 

 

虎科大許教授 發文於   2026/01/08

選股策略預設讀取資料筆數10筆,程式會在每筆資料執行,因此會有10組數值。

bias10_count、bias10_count、bias10_count在程式執行10次過程中會累加,但前提是bias_loop1要大於一定數值。同樣地,biasminus10_count、biasminus15_count、biasminus20_count也是在bias_loop1小於等於一定數值才會累加。

 

mb1990412 發文於   2026/01/08

感謝回覆

因為用免費版本 要等明天才能再測試了

但我發現bias10_count、bias15_count、bias20_count 有正常運作, 有看到非0的值

biasminus10_count、biasminus15_count、biasminus20_count 表格都是空白的

截圖圖片

另外我有嘗試 用for loop 每次count +10 , 所以for loop每次拿10個日期的值, 理論上可以實現 我原本想做的事情

但結果很奇怪

 

 

XS小編 發文於   2026/01/15

Hello mb1990412,

 

小編補充,bias-10次數 等欄位空白的原因應該是中間的 - 所導致,您可以先改成 bias_10次數 的話就可以正常執行。

會請相關人員確認。

 

小編不確定您for迴圈是怎麼使用,但如果資料讀取筆數一樣設為10筆的話,這樣每根K棒運算時都會loop 一次,假設每次loop近10根的話,則總共會計算100次,其中運算到的K棒大部分都在重複。

建議您可以先觀看 SetTotalBar資料讀取範圍與腳本執行的關係,了解資料讀取筆數的概念後,再判斷是否會需要for迴圈。

發表回覆
Close