奇狐社區論壇
在這個頁面顯示本主題全部的 9 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- BARSLAST(X) 條件不成立時可否回 0 , 而非空值 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=23009)


由 fox1688 在 2021-06-04 16:53 發表:

BARSLAST(X) 條件不成立時可否回 0 , 而非空值

例如
BARSLAST(C<0) ==> 空值 , 而非 0

類似情形 , 會造成後續無法 比較或運算


由 cgjj 在 2021-06-04 17:05 發表:

回覆: BARSLAST(X) 條件不成立時可否回 0 , 而非空值

引用:
最初由 fox1688 發表
例如
BARSLAST(C<0) ==> 空值 , 而非 0

類似情形 , 會造成後續無法 比較或運算



不可為零,零代表是當根本身就成立!
你可以在這之後用, lbound 函數來檢查是否為無效變數

例如:
SP:=BARSLAST(條件);
lbound(SP)=0 代表無條件成立之處(SP為無效數列)
lbound(SP)>0 代表有條件成立之處(SP為有效數列)

如果這情況
您是將它運用組合在 AND 判斷式之中,當然是不行的
若是運用在 OR 運算式 則不會有困擾

當一個數列,其值為無效數列時,就不該用它續算。需有相應的處理!


由 color858 在 2021-06-07 14:10 發表:

沒數據可抓時,如何調整?

CBV18:STKINDI('TX216700F1','BSVV_SUB.BV',0,0)linethick ;
if lbound(CBV18)=0 then CBV18:=0;
CSV18:STKINDI('TX216700F1','BSVV_SUB.SV',0,0)linethick;
if lbound(CSV18)=0 then CSV18:=0;
BC18:=(CBV18-CSV18),linethick1;

價差 : (BC18),linethick1;

這樣的寫法,沒數據可抓時,為何無法變成CBV18 :=0的數字?


由 cgjj 在 2021-06-07 14:31 發表:

回覆: 沒數據可抓時,如何調整?

引用:
最初由 color858 發表
CBV18:STKINDI('TX216700F1','BSVV_SUB.BV',0,0)linethick ;
if lbound(CBV18)=0 then CBV18:=0;
CSV18:STKINDI('TX216700F1','BSVV_SUB.SV',0,0)linethick;
if lbound(CSV18)=0 then CSV18:=0;
BC18:=(CBV18-CSV18),linethick1;

價差 : (BC18),linethick1;

這樣的寫法,沒數據可抓時,為何無法變成CBV18 :=0的數字?



不會無法變唷!
CBV18:STKINDI('TX216700F1','BSVV_SUB.BV',0,0)linethick ;
if lbound(CBV18)=0 then CBV18:=0;
單就這兩行看,沒有問題!
有查看歷史最末根K棒的CBV18值嗎?

或是,您追加這一行在尾端,看看 CKLB 值等於多少?
CKLB: lbound(CBV18) linethick;


由 color858 在 2021-06-07 16:27 發表:

CKLC:lbound(CBV),linethick;行六出現操作數類型錯誤

CBV:STKINDI('','BSVV_SUB.BV',0,0)linethick ;
if lbound(CBV)=0 then CBV:=0;
CSV:STKINDI('','BSVV_SUB.SV',0,0) linethick;
if lbound(CSV)=0 then CSV:=0;
價差 : (CBV-CSV)linethick1;

用上面式子測試周選各個履約價
台指16300賣權106W2
主圖有資料,副圖也有跑出價差線型
但是
台指16300買權106W2
9:多後才有副圖價差線型

台指19000賣權106W2
沒主圖資料,也沒副圖資料
還有其他作法,若沒資料的也可出現0


由 cgjj 在 2021-06-07 16:37 發表:

引用:
最初由 color858 發表
CKLC:lbound(CBV),linethick;行六出現操作數類型錯誤

CBV:STKINDI('','BSVV_SUB.BV',0,0)linethick ;
if lbound(CBV)=0 then CBV:=0;
CSV:STKINDI('','BSVV_SUB.SV',0,0) linethick;
if lbound(CSV)=0 then CSV:=0;
價差 : (CBV-CSV)linethick1;

用上面式子測試周選各個履約價
台指16300賣權106W2
主圖有資料,副圖也有跑出價差線型
但是
台指16300買權106W2
9:多後才有副圖價差線型

台指19000賣權106W2
沒主圖資料,也沒副圖資料
還有其他作法,若沒資料的也可出現0



[台指16300買權106W2] 10:02:55 才成交歷史首筆
[台指19000賣權106W2] 至今都無成交(無歷史K棒)

無歷史資料!!!
公式是不會被執行的,因為無任何數據可算!

這一行是要加在程式最末端唷,不能放第一行(因為CBV尚末被定義)。
CKLC:lbound(CBV),linethick;


由 color858 在 2021-06-07 18:15 發表:

版主:
若有一個履約價沒歷史資料,在合計各履約價時,無法加總統計?有其他方式可判定周選沒有履約價歷史資料時,可以排除的寫法?


由 cgjj 在 2021-06-07 18:27 發表:

引用:
最初由 color858 發表
版主:
若有一個履約價沒歷史資料,在合計各履約價時,無法加總統計?有其他方式可判定周選沒有履約價歷史資料時,可以排除的寫法?



不存在這樣的問題!

奇狐可以跨商品引用,若您引用的商品無歷史資料,STKINDI 會傳回無效數列。
透過 lbound(數列)=0 去檢查傳回的是否為無效數列。
把無效數列的對應相關處理,先給做好。
做好後,自然就可以正常加總!

重點是!
不要把無效數列,帶入運算式中! (結果必然是無效數列)

您必須要在合適的商品中去跑! (每日必須都有成交)
例如:在台當月中,去引用各履約價的商品。
若在沒有天天成交的商品中跑,結果會是錯的!

奇狐內建的 [奇狐選權公式 for v5.2] 公式組中,像這樣的處理例子非常的多。敬請參考~~


由 color858 在 2021-06-07 18:44 發表:

好的,謝謝,我再看看內容


全部時間均為台灣時間, 現在時間為05:06
在這個頁面顯示本主題全部的 9 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.