![]() |
在這個頁面顯示本主題全部的 10 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- NULL值定義 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=4815)
NULL值定義
變數X
請問如何定義X=NULL (即X不存在)
__________________
至誠能勝天下至偽
至拙能勝天下至巧
並無 定義X=NULL (即X不存在) 這種功能
但數列可用 SETLBOUND(X,0) 來將其設為無效數據
對於在奇狐中無法表現 null 這回事,覺得遺憾,例如在
barslast(date=1060101); 這種碰上休市日的狀況,把日期設為自然日固然可以表現,但是其不便性不言而喻
如果奇狐能加一個表現空白或null的函數,可以增強許多功力
這樣在公式中也可以像dBase或Excel一樣,使用諸如
if(C=null,x,y); 或者if(x=" ",y,z);這樣的論述了,否則一個公式,偶而碰到一支股票之公式中引用的數據沒有的時候,就因為這一支股票而壞了全體的數據,像佳和缺了12月份的數據,如果barslast正巧落在這段區間,就把整個公式的區段橫向統計拖累不全了
無 NULL 不代表不能處理
奇狐可利用 LBOUND 判斷數據是否有效
可把 無效數據 看成是一種 Null 的形態
以下為範例
//此行的 xx 為無效數據(因為20060101為星期日)
xx:barslast(date=1060101);
//若前 xx 為無效則取 20060101 之後的第一個交易日 (即20060102)
xx:=if(LBOUND(xx)=0,BARSSINCE(date>1060101),xx);
這處理方式可應用於很多地方
謝謝cgjj版主
上次承蒙指導,上述的null用法在固定單值(日期)的確有效,但是如果遇到數列的變數時,又要如何來處理呢?
例如: xx:barslast(day=25)=0; 或 barslast(weekday=3)=0; 這一類的休市日時,如何讓它變動去找前後的開市日呢?
以 barslast(weekday=3)=0 當範例
無則取前一天
barslast(weekday<3 and refx(weekday,1)>3 or weekday=3)=0;
無則取後一天
barslast(weekday>3 and ref(weekday,1)<3 or weekday=3)=0;
佩服得五體投地,不愧是總版主!!
總版主請教您在您的範例中
//若前 xx 為無效則取 20060101 之後的第一個交易日 (即20060102)
xx:=if(LBOUND(xx)=0,BARSSINCE(date>1060101),xx);
但是請問如何
在20060101前的交易日判定XX 是不存在的
就是xx是null值
因為我主要是要判定xx何時開始成立
但在開始成立前我還是要作其他的處理
您的方法在20060101前xx是不存在
(就是在圖上不會顯示xx)
已處理
謝謝總版主教學
可利用
CC:MA(C,30); //此時 數列CC 有效起始位置為30
LbCC:LBOUND(CC); //保存 數列CC 目前有效起始位置
x:SETLBOUND(CC,5); //變更 數列CC 有效起始位置為5
CC:=if(barpos>=X and (barpos<LBCC or LbCC=0) ,0,CC); //將原本屬無效數據的範圍,值均設為零值
再增加判斷即可
(比如把無效值設為-1或不用到的值
全部時間均為台灣時間, 現在時間為03:29 | 在這個頁面顯示本主題全部的 10 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.