setbarback問題

  •   430 
  • 最後發表   Y0  2024 十月 29
Y0 發文於   2024/10/25

我使用交易腳本想抓8032這檔的處置開始日期

settotalBar(1);

//setbarback(20);

print(getBackBar);

print(GetField("處置開始日期"));

沒加入setbarback預設是20,抓不到資料

加入setbarback(20)卻抓的到

明明barback是一樣的結果卻不同,想問原理是什麼?

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

你只準備一筆資料,當然抓不到之前的數據。透過setBackBar或setBarBack,就可抓到之前的數據。

 

Y0 發文於   2024/10/25

但是沒加入setbarback預設就是20應該也可以抓到數據吧

虎科大許教授 發文於   2024/10/25

沒加入setBarBack,就沒有準備前置資料,亦即預設為0,而非20。

Y0 發文於   2024/10/27

但是沒有設setbarback時,print出的getbarback是20

虎科大許教授 發文於   2024/10/28

我使用選股腳本,卻發現加不加setBackBar,getBackBar都是0,這個有點奇怪。

setBackBar(20);

if symbol="8032.TW" then ret=1;

outputField1(GetField("處置開始日期"),"處置開始日期"); 

outputField2(getBackBar,"引用筆數");

Y0 發文於   2024/10/28

教授誤會了,我使用的是交易腳本

虎科大許教授 發文於   2024/10/28

測試結果與你的結果相同。這個很奇怪。

Y0 發文於   2024/10/28

再麻煩教授解惑了

虎科大許教授 發文於   2024/10/29

查詢問題中,有結果會立即回覆。

虎科大許教授 發文於   2024/10/29

XQ的資料大致分為固定頻率的資料,例如開高低收、成交量等等固定頻率的資料,每月、每週、每日或每分鐘都有的資料,以及不固定頻率(單一頻率)的資料,這些偶爾會出現且出現頻率不固定的資料,例如庫藏股開始日期、除權日期、除息日期、現增繳款日期、處置開始日期、法說會日期...。當使用者沒有使用setBackBar設定引用資料筆數,則就固定頻率資料而言,系統會準備20筆,但不固定頻率的資料,由於預設20筆,可能實際引用的固定頻率資料的筆數會非常多。例如,除權日期若準備20筆,則可能會使用20年以上的資料,因此系統在設計的時候,對於這種不固定頻率的資料會用一個公式計算要準備多少筆。不幸的是8032這檔股票過去只有一筆處置開始日期的資料,公式算出來應該引用的資料筆數是0,亦即預設引用筆數是0,所以會找不到資料。若使用者使用setBackBar(20),則系統會準備僅有的1筆,因此會抓到資料。至於getBackBar函數會傳回引用的資料筆數,若是固定頻率資料,且沒預設setBackBar,則會傳回預設的20。碰到不固定頻率資料,系統會由公式另行計算,取代原本預設的20筆。getBackBar指向的是固定頻率的預設引用筆數,在你的例子並不是真正準備的引用筆數。

一般而言,我會建議使用者主動控制setTotalBar及setBackBar。不主動控制的話,可能會有因為預設筆數太少而沒抓到足夠的資料,造成技術指標數值計算錯誤(選股使用MACD指標,用預設的10筆算出來的技術指標數值是不對的),或是預設的資料太多,造成沒有效率的問題(抓今天外資買賣超,只需要讀取1筆,但選股腳本預設10筆,前面9筆是不需要的,不過,程式一樣會跑這9筆,這樣是沒有效率的)。你只想抓最近一次的處置開始日期,其實只要setBackBar(1)即可抓到資料。

  • 按讚來自於
  • johnlintw
發表回覆
Close