中括號內無法用減號

  •   145 
  • 最後發表   chaoyueh  2020 三月 04
chaoyueh 發文於   2020/03/01

下面的寫法,open內不管是用value1+1, 或value1-1,都可正常跑出數值來

value1=7;

value2=open[value1-1];

if value2>300 then ret=1;

outputfield(1,value2,0,"測試");

 

下面的寫法,用了getbaroffset ,value4的open可以用加號,但如換成減號,就會顯示無任何符合選股條件的商品

value3=getbaroffset(20200114);

value4=open[value3-1];

if value4>300 then ret=1;

outputfield(1,value4,0,"測試");

煩請了解是何問題

謝謝

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/03/02

Hi chaoyueh

您好,請問您現在執行語法,仍然有相關錯誤問題嗎

小幫手執行了您提供的語法,但沒辦法模擬出您的狀況

已經請相關人員在確認中,也請您提供以下資料給小幫手,謝謝。

1.選股中心匯出檔案(*.DSTX),匯出時請記得勾選包含腳本

2. Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)壓縮檔。

3.如果有錯誤訊息圖片也會更好喔~

並附上此討論串連結,最後 Mail 至 XQservice@XQ.com.tw,以利小幫手釐清問題的原因。

-------------------------------------------------

以下是小幫手測試後的相關圖片,請您參考,謝謝。

chaoyueh 發文於   2020/03/02

 

資料已email

謝謝

XQ小幫手 發文於   2020/03/03

Hi chaoyueh

您好,經確認,因為系統並不支援open[-1],並且是序列資料

因為getbaroffset(20200114)的基準點是1/14日,距離2月底並不到50日

但您的資料讀取筆數,是隨意設置的50筆,讀取資料往前超過1/14日

因此其中的差距,系統無法確認的,就會補0(1/14日以前(包含1/14日)),他的getbaroffset會是0

因此系統不支援,value4=open[0-1]=open[-1],選股就會選不出來結果。

請參考以下圖片,以上說明,謝謝。

chaoyueh 發文於   2020/03/03

謝謝小幫手的回應

不過還是有點不明白,我寫了兩個算式,資料讀取時間也都拉長到20200101,

以今天來看,兩個應該都能跑出一樣的數字

在兩個寫法都沒有加上"-1"的時候,兩個寫法選出來的股票、數值都是一樣的

value1=value3=12,  

而在寫法一的value2選的公式加上-1,(value2=open[value1-1]),

可以找到股票跑出open[11]的值,但是用寫法二,就找不到任何股票

 

既然value3的getbaroffset的值是12,那為何在寫法二的value4=open[value3-1];就無法像value2=open[value1-1]成立呢?

煩請說明

 

謝謝

 

 

 

 

寫法一

value1=12;

value2=open[value1-1];

 

寫法二

value3=getbaroffset(20200212);

value4=open[value3-1];

 

完整script

value1=12;

value2=open[value1-1];

 

value3=getbaroffset(20200212);

value4=open[value3-1];

 

if value4>300 then ret=1;

 

outputfield(1,value4,0,"getbaroffsetopen");

outputfield(2,value2,0,"numericopen");

outputfield(3,value3,0,"getbaroffset");

outputfield(4,value1,0,"numeri");

 

 

XQ小幫手 發文於   2020/03/04

Hi chaoyueh

假設資料筆數為50,代表系統會往前讀取每一天的腳本結果

因為當您直接指定value1=12時,從3/4日的時候,此值等於12,從3/3日的時候,也是12....持續往前到50天

但是以value3=getbaroffset(20200212),來說,此值從3/4日觀察的結果為28,從3/3的結果為27....

從2/12來看,getbaroffset(20200212)的結果為0,這時候open[0-1]就會出現錯誤。

如果資料筆數是50,那從2/11來看,就變成溢出資料,因此getbaroffset(20200212)的結果也會為0

這就是上圖為什麼小幫手圈起來都是0的原因。

從2/12的角度看,open[-1]等於明天的開盤價,也不可能今天就會知道明天的開盤價才對喔~

2/11的時候也不會知道後天的開盤價。

反過來說,只要資料筆數大於等於28,就會因為此狀況導致讀取值錯誤。

--------------------------------------------------

 

如果您真的要規定資料筆數的日期進行計算,小幫手目前只有想到以下方式

就是利用setfirstbardate語法,硬性設定資料筆數的第一天日期來製作

小幫手這邊把他做成活的,您可以利用選股中心直接去key日期

請您參考附檔,看看是否有助於您,謝謝。

附加文件

發表回覆
Close