到奇狐勝券首頁 奇狐社區論壇 購買奇狐勝券 試用奇狐勝券
 
論壇首頁 你可以在這裡編輯你的資料,查看短訊,訂閱主題和論壇參數等等 免費會員註冊 會員列表 論壇幫助 論壇日曆 論壇搜索 加入我的最愛 登出論壇  
奇狐社區論壇 : Powered by vBulletin version 2.3.0 奇狐社區論壇 > 指標公式 > 問題交流 > NULL值定義
  上一主題   下一主題
作者
主題 發表新主題    回覆主題
peter109
資深會員

註冊日期: Dec 2004
來  自: Taipei
文章數量: 1893

NULL值定義

變數X
請問如何定義X=NULL (即X不存在)

__________________
至誠能勝天下至偽
至拙能勝天下至巧

向版主報告此篇 | 查IP位址
Old Post 2006-03-18 18:34
peter109 現在離線 點選這裡查看 peter109 的個人資料 點選這裡給 peter109 傳送一條短訊 查找更多關於 peter109 的文章 增加 peter109 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18106

並無 定義X=NULL (即X不存在) 這種功能

但數列可用 SETLBOUND(X,0) 來將其設為無效數據

向版主報告此篇 | 查IP位址
Old Post 2006-03-20 08:55
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
kkkkkk
資深會員

註冊日期: Dec 2003
來  自:
文章數量: 291

對於在奇狐中無法表現 null 這回事,覺得遺憾,例如在
barslast(date=1060101); 這種碰上休市日的狀況,把日期設為自然日固然可以表現,但是其不便性不言而喻
如果奇狐能加一個表現空白或null的函數,可以增強許多功力
這樣在公式中也可以像dBase或Excel一樣,使用諸如
if(C=null,x,y); 或者if(x=" ",y,z);這樣的論述了,否則一個公式,偶而碰到一支股票之公式中引用的數據沒有的時候,就因為這一支股票而壞了全體的數據,像佳和缺了12月份的數據,如果barslast正巧落在這段區間,就把整個公式的區段橫向統計拖累不全了

向版主報告此篇 | 查IP位址
Old Post 2006-03-28 10:58
kkkkkk 現在離線 點選這裡查看 kkkkkk 的個人資料 點選這裡給 kkkkkk 傳送一條短訊 查找更多關於 kkkkkk 的文章 增加 kkkkkk 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18106

無 NULL 不代表不能處理
奇狐可利用 LBOUND 判斷數據是否有效
可把 無效數據 看成是一種 Null 的形態

以下為範例

//此行的 xx 為無效數據(因為20060101為星期日)
xx:barslast(date=1060101);

//若前 xx 為無效則取 20060101 之後的第一個交易日 (即20060102)
xx:=if(LBOUND(xx)=0,BARSSINCE(date>1060101),xx);

這處理方式可應用於很多地方

向版主報告此篇 | 查IP位址
Old Post 2006-03-28 11:35
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
kkkkkk
資深會員

註冊日期: Dec 2003
來  自:
文章數量: 291

謝謝cgjj版主

向版主報告此篇 | 查IP位址
Old Post 2006-03-28 14:15
kkkkkk 現在離線 點選這裡查看 kkkkkk 的個人資料 點選這裡給 kkkkkk 傳送一條短訊 查找更多關於 kkkkkk 的文章 增加 kkkkkk 至你的好友列表 編輯/刪除訊息 引用回覆
kkkkkk
資深會員

註冊日期: Dec 2003
來  自:
文章數量: 291

上次承蒙指導,上述的null用法在固定單值(日期)的確有效,但是如果遇到數列的變數時,又要如何來處理呢?

例如: xx:barslast(day=25)=0; 或 barslast(weekday=3)=0; 這一類的休市日時,如何讓它變動去找前後的開市日呢?

向版主報告此篇 | 查IP位址
Old Post 2006-04-11 16:11
kkkkkk 現在離線 點選這裡查看 kkkkkk 的個人資料 點選這裡給 kkkkkk 傳送一條短訊 查找更多關於 kkkkkk 的文章 增加 kkkkkk 至你的好友列表 編輯/刪除訊息 引用回覆
cgjj
總版主

註冊日期: Oct 2003
來  自:
文章數量: 18106

以 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;

向版主報告此篇 | 查IP位址
Old Post 2006-04-11 16:42
cgjj 現在離線 點選這裡查看 cgjj 的個人資料 點選這裡給 cgjj 傳送一條短訊 查找更多關於 cgjj 的文章 增加 cgjj 至你的好友列表 編輯/刪除訊息 引用回覆
kkkkkk
資深會員

註冊日期: Dec 2003
來  自:
文章數量: 291

佩服得五體投地,不愧是總版主!!

向版主報告此篇 | 查IP位址
Old Post 2006-04-11 17:05
kkkkkk 現在離線 點選這裡查看 kkkkkk 的個人資料 點選這裡給 kkkkkk 傳送一條短訊 查找更多關於 kkkkkk 的文章 增加 kkkkkk 至你的好友列表 編輯/刪除訊息 引用回覆
c300_tw
中級會員

註冊日期: Aug 2004
來  自:
文章數量: 44

總版主請教您在您的範例中

//若前 xx 為無效則取 20060101 之後的第一個交易日 (即20060102)
xx:=if(LBOUND(xx)=0,BARSSINCE(date>1060101),xx);

但是請問如何
在20060101前的交易日判定XX 是不存在的

就是xx是null值

因為我主要是要判定xx何時開始成立
但在開始成立前我還是要作其他的處理

您的方法在20060101前xx是不存在
(就是在圖上不會顯示xx)

向版主報告此篇 | 查IP位址
Old Post 2007-02-19 08:23
c300_tw 現在離線 點選這裡查看 c300_tw 的個人資料 點選這裡給 c300_tw 傳送一條短訊 查找更多關於 c300_tw 的文章 增加 c300_tw 至你的好友列表 編輯/刪除訊息 引用回覆
c300_tw
中級會員

註冊日期: Aug 2004
來  自:
文章數量: 44

已處理

謝謝總版主教學

可利用

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或不用到的值

向版主報告此篇 | 查IP位址
Old Post 2007-02-19 09:34
c300_tw 現在離線 點選這裡查看 c300_tw 的個人資料 點選這裡給 c300_tw 傳送一條短訊 查找更多關於 c300_tw 的文章 增加 c300_tw 至你的好友列表 編輯/刪除訊息 引用回覆
全部時間均為台灣時間, 現在時間為01:07 發表新主題    回覆主題
  上一主題   下一主題
顯示可列印版本 | 訂閱此主題

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
HTML語法禁止
vB 語法核准
表情符號核准
貼圖語法[IMG]核准
 

本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。

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

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.  聯絡我們