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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

求已知方塊內成份股總成交量?

請教版主:
為何用 :
//
NP:=STKCOUNT('PUT'); //Get total count of members in the PUT block
NC:=STKCOUNT('CALL'); //Get total count of members in the CALL block
VPUT:=0;
VCALL:=0;
//
For i=1 To NP Do Begin
VPUT:VPUT+STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1),ColorGREEN;
End;
//
For i=1 To NC Do Begin
VCALL:VCALL+STKINDI(STKFROMBLK('CALL',i),'VOL.成交張數',0,-1),ColorRED;
End;
//

可找出方塊成員總數, 而 用 "For .. Do.. End" 卻 得不到 正確的 個別方塊總成交量?

不了解哪裡出錯? 請幫忙... 謝謝你!

__________________
阿德

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

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

以 Put 修改為範例

NP:=STKCOUNT('PUT'); //Get total count of members in the PUT block
VPUT:0 ColorGREEN;
For i=1 To NP Do Begin
temp:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1);
if lbound(temp)>0 then VPUT:=VPUT+temp;
End;

重點在於:
1.迴圈內不要放置任何輸出語句
2.累加時應考量股票是否為有效數據

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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

引用:
最初由 cgjj 發表
以 Put 修改為範例

NP:=STKCOUNT('PUT'); //Get total count of members in the PUT block
VPUT:0 ColorGREEN;
For i=1 To NP Do Begin
temp:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1);
if lbound(temp)>0 then VPUT:=VPUT+temp;
End;

重點在於:
1.迴圈內不要放置任何輸出語句
2.累加時應考量股票是否為有效數據



//
瞭解, 但是:
1. PUT BLOCK的總成交量 數目已經對了, 但只有三天量.
2. CALL BLOCK 的總成交量 數目, 仍然不對, 而且也只有三天量.
CALL BLOCK 的 "TXO61J 610台指C6100" 和 "TXO60J 610台指C6000" 是自 9月來 一直為未開倉,或夾雜著 "空盤", 可能有 "無效數據" 之故,
相信 CALL,PUT BLOCK 都有這樣子的問題, 請問要如何避開 "無效數據"?
3. "三天量" 好像是只要是 前 "三天" 有 "空盤" 就算不準了....

//
更正過後的公式片段如下: 請指導:
//
NP:=STKCOUNT('PUT'); //Get total count of members in the PUT block
NC:=STKCOUNT('CALL'); //Get total count of members in the CALL block
VPUT:=0;
VCALL:=0;
//
For i=1 To NP Do Begin
TempP:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1);
If Lbound(TempP)>0 then VPUT:=VPUT+TempP;
End;
//
For i=1 To NC Do Begin
TempC:=STKINDI(STKFROMBLK('CALL',i),'VOL.成交張數',0,-1);
If Lbound(TempC)>0 then VCall:=VCall+TempC;
End;
//
買權量:VCall;
賣權量:VPUT;

__________________
阿德

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

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

只有三天量, 可能的原因是
該板塊中某個商品只有三天的數據

因為並非每個商品的數據長度
都和您計算當前的商品一樣長
您將所有商品直接加總
奇狐只呈現數值均有效的部份

要解決這問題必需於加總前
先處理數據有效長度的問題

方法請看以下範例:

原碼:

cc
:ma(c,30);                    //數據自第30根開始有效
LB:=lbound(cc);                 //保存數據原來有效起始位置
x:=SETLBOUND(cc,1);             //變更數據有效起始位置為1
cc:=if(barpos<LB or LB=0,0,cc); //將原來無效數據的部份值設為0

如此處理
即可加總到與目前觀看商品同樣的數據長度

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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

引用:
最初由 cgjj 發表
只有三天量, 可能的原因是
該板塊中某個商品只有三天的數據

因為並非每個商品的數據長度
都和您計算當前的商品一樣長
您將所有商品直接加總
奇狐只呈現數值均有效的部份

要解決這問題必需於加總前
先處理數據有效長度的問題

方法請看以下範例:
原碼:

cc
:ma(c,30);                    //數據自第30根開始有效
LB:=lbound(cc);                 //保存數據原來有效起始位置
x:=SETLBOUND(cc,1);             //變更數據有效起始位置為1
cc:=if(barpos<LB or LB=0,0,cc); //將原來無效數據的部份值設為0

如此處理
即可加總到與目前觀看商品同樣的數據長度



//
瞭解, 謝謝你!
我再試看看..

__________________
阿德

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

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

我用自定義板塊
具體做法就是在 板塊\分類板塊\其他\新建分類板塊 當月賣權
然後到 台指選權 中選擇當月賣權的所有相關名稱加入到 當月賣權

出來的數據和實際不符合
不知該如何修正 煩請指導
謝謝您


NP:=STKCOUNT('當月賣權'); //Get total members in the PUT block
VPUT:=0;

For i=1 To NP Do Begin
tempP:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1),colorGREEN;
LB:=lbound(tempP); //保存數據原來有效起始位置
x:=SETLBOUND(tempP,1); //變更數據有效起始位置為1
cc:=if(barpos<LB or LB=0,0,tempP);

if lbound(cc)>0 then VPUT:=VPUT+CC;
End;

賣權量:VPUT,colorGREEN;

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

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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

引用:
最初由 peter109 發表
我用自定義板塊
具體做法就是在 板塊\分類板塊\其他\新建分類板塊 當月賣權
然後到 台指選權 中選擇當月賣權的所有相關名稱加入到 當月賣權

出來的數據和實際不符合
不知該如何修正 煩請指導
謝謝您


NP:=STKCOUNT('當月賣權'); //Get total members in the PUT block
VPUT:=0;

For i=1 To NP Do Begin
tempP:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1),colorGREEN;
LB:=lbound(tempP); //保存數據原來有效起始位置
x:=SETLBOUND(tempP,1); //變更數據有效起始位置為1
cc:=if(barpos<LB or LB=0,0,tempP);

if lbound(cc)>0 then VPUT:=VPUT+CC;
End;

賣權量:VPUT,colorGREEN;



//
你的 "當月賣權' 板塊 也就是 相當於 我用的 "PUT" 板塊,
請把:
tempP:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1);
改為:
tempP:=STKINDI(STKFROMBLK('當月賣權'',i),'VOL.成交張數',0,-1);


再看看, 我還沒試 版主 建議的 方法ㄝ.. 太晚了 明天再試.. Bye!

__________________
阿德

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

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

多謝提醒遺漏處

盤後再看

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

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

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

Hummm .....

計算出來的值 ( 今日買權量99015 ) 還是和實際總量 ( 98663 ) 不符合

版大
幫忙看一下 問題出在哪裡

附圖是 當月買權板塊 內容

peter109 附帶上了此圖片:

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

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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

引用:
最初由 peter109 發表
Hummm .....

計算出來的值 ( 今日買權量99015 ) 還是和實際總量 ( 98663 ) 不符合

版大
幫忙看一下 問題出在哪裡

附圖是 當月買權板塊 內容



//
Peter109兄,

如果你手動刪掉 "空盤" (當日無量) 的買賣權商品後, 資料應該就會正確. 以 10月 6000call 為例, 至今應該都是空盤, 但是它卻會造成誤算, 要如何靠公式解決, 還在努力中.
//
NP:=STKCOUNT('PUT'); //Get total count of members in the PUT block
NC:=STKCOUNT('CALL'); //Get total count of members in the CALL block
VPUT:=0;
VCALL:=0;
//
For i=1 To NP Do Begin
TempP:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1);
LB:=lbound(tempP); //保存數據原來有效起始位置
XP:=SETLBOUND(tempP,1); //變更數據有效起始位置為1
CC:=if(barpos<LB or LB=0,0,tempP);
if lbound(cc)>0 then VPUT:=VPUT+CC;
End;
//
For i=1 To NC Do Begin
TempC:=STKINDI(STKFROMBLK('CALL',i),'VOL.成交張數',0,-1);
LB:=lbound(tempC); //保存數據原來有效起始位置
XC:=SETLBOUND(tempC,1); //變更數據有效起始位置為1
CC:=if(barpos<LB or LB=0,0,tempC);
if lbound(cc)>0 then VCall:=VCall+CC;
End;
//
買權量:VCall,ColorRED,LineThick1;
賣權量:VPUT,ColorGREEN,LineThick1;
//

在 For ..End loop 內,
TempP:=STKINDI(STKFROMBLK('PUT',i),'VOL.成交張數',0,-1);
TempC:=STKINDI(STKFROMBLK('CALL',i),'VOL.成交張數',0,-1);


由於還沒想到正確的方法.只加總相同時間的
的 'VOL.成交張數' 造成 商品的資料檔, 若是空盤, 或 時間不連續.
加總時無法判斷, 而把它們當做是連續的資料以致於 結果'錯誤.

請問版主, 你有沒有更好的方法?

kny.lee8402 附帶上了此圖片:

__________________
阿德

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

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

以 611台指C6600來說
它有日K但只到 2006/09/18
該天成交張數量為 1

若於加權指數去引用它(611台指C6600)
因加權指數日K到 2006/09/22 (今日)
引用時會自動延伸 2006/09/18 的數據到最今日

技術上
您可於加總時加入日期判斷
只加總該商品數據日期同加權指數日期的總張

如: VPUT:=VPUT+CC * (Date1=Date2);

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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

引用:
最初由 cgjj 發表
以 611台指C6600來說
它有日K但只到 2006/09/18
該天成交張數量為 1

若於加權指數去引用它(611台指C6600)
因加權指數日K到 2006/09/22 (今日)
引用時會自動延伸 2006/09/18 的數據到最今日

技術上
您可於加總時加入日期判斷
只加總該商品數據日期同加權指數日期的總張

如: VPUT:=VPUT+CC * (Date1=Date2);



//
只加總該商品數據日期同加權指數日期的總張,
是應該改為以 "台指期貨" 為準, 否則 開收盤 時間又不同步, 公式不能用在 SUB DAY 的情況下?
//

很簡單的 時間 "引用" 的問題, 請教版主: 你如何在 LOOP 內, 得到
同步於 大盤 K棒 的 日期&時間 序號? 如果這問題可以解決, 那麼 我會有很多好點子可以使奇狐公式更好用(More powerfully).
//

所謂 "同步於 大盤 K棒 的 日期&時間 序號" 就是當你把 mouse cursor
停留在 大盤 任一 K 棒時, 畫面上顯示的 方塊資料, 如何可以被 公式引用?

//

__________________
阿德

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

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

只加總該商品數據日期同加權指數日期的總張,
是應該改為以 "台指期貨" 為準, 否則 開收盤 時間又不同步, 公式不能用在 SUB DAY 的情況下?


我舉的例子不太好(以日線為思考)
對於日線上, 公式於加權指數跑或台指期貨跑
是沒有差別的, 都會得到該日的總張
若您於分鐘線就該換為 "台當月"


很簡單的 時間 "引用" 的問題, 請教版主: 你如何在 LOOP 內, 得到
同步於 大盤 K棒 的 日期&時間 序號? 如果這問題可以解決, 那麼 我會有很多好點子可以使奇狐公式更好用(More powerfully).
所謂 "同步於 大盤 K棒 的 日期&時間 序號" 就是當你把 mouse cursor
停留在 大盤 任一 K 棒時, 畫面上顯示的 方塊資料, 如何可以被 公式引用?


關鍵就在 Date1 和 Date2 喔
一是子公式取得的K棒日期(選權商品)
一是母公式本身的K棒日期(台當月)
分鐘線則改取 Time 比較即可

建議您寫一小公式體會一下:
用 "台當月" 跑子公式去引用 "611台指C6600" 商品的數據日期
再與 "台當月" 本身的數據日期比較
去觀察尾端 "611台指C6600" 沒數據的情況
這樣您就會利用該特質來做判斷了

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

註冊日期: Feb 2005
來  自: Taipei
文章數量: 118

了解, 謝謝版主!

__________________
阿德

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

論壇跳轉:
主題評分:

論壇規定:
你不可以發表新主題
你不可以回覆文章
你不可以上傳附件
你不可以編輯自己的文章
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.  聯絡我們