奇狐社區論壇 總頁數 (2): [1] 2 »
在這個頁面顯示本主題全部的 26 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題支援 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=53)
-- 求算契約正確的年月 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=15266)


由 ah7eric 在 2011-03-15 15:30 發表:

求算契約正確的年月

小弟已參照
http://www.chiefox.com.tw/bbs/showt...=&threadid=9001

改成

//=====求不同履約價的Call/Put對應的相關數據=====
本年:MOD(YEAR,10),LINETHICK0,COLORBLACK;
本月:MOD(MONTH,12),LINETHICK0,COLORBLACK;
下月:MOD(MONTH+1,12),LINETHICK0,COLORBLACK;
本月契約:本年*100+本月,LINETHICK0,COLORBLACK;
下月契約:IF(MONTH=12,(本年+1)*100+下月,本年*100+下月),LINETHICK0,COLORBLACK;


但遇到像2010年或是12月這種情況結果都怪怪的,可能小弟邏輯上有疏失,懇請指教!


由 ah7eric 在 2011-03-15 15:42 發表:

似乎只能用當前交易日的YEAR/MONTH為求算基準, 不能反映過往交易日當時的年和月

請指教


由 cgjj 在 2011-03-15 16:49 發表:

回覆: 求算契約正確的年月

引用:
最初由 ah7eric 發表
小弟已參照
http://www.chiefox.com.tw/bbs/showt...=&threadid=9001

改成

//=====求不同履約價的Call/Put對應的相關數據=====
本年:MOD(YEAR,10),LINETHICK0,COLORBLACK;
本月:MOD(MONTH,12),LINETHICK0,COLORBLACK;
下月:MOD(MONTH+1,12),LINETHICK0,COLORBLACK;
本月契約:本年*100+本月,LINETHICK0,COLORBLACK;
下月契約:IF(MONTH=12,(本年+1)*100+下月,本年*100+下月),LINETHICK0,COLORBLACK;


但遇到像2010年或是12月這種情況結果都怪怪的,可能小弟邏輯上有疏失,懇請指教!

似乎只能用當前交易日的YEAR/MONTH為求算基準, 不能反映過往交易日當時的年和月

請指教



要運用期權結算日函數 OptionLastDay 才可計算

範例:(適用於 v5.0版)
de:=date;
opde1:=OptionLastDay('FITX1');
opde2:=OptionLastDay('FITX2');
CkXX:=date>=1081217 and date=ref(opde1,1); //處理新制(自200812 開始)
opde1:=if(CkXX,ref(opde1,1),opde1);
opde2:=if(CkXX,ref(opde2,1),opde2);
本月:FLOOR(opde1/100);
次月:FLOOR(opde2/100);

範例:(適用於測試中的 v5.1 Beta版 )
de:=date;
opde1:=OptionLastDay('FITX1');
opde2:=OptionLastDay('FITX2');
本月:FLOOR(opde1/100);
次月:FLOOR(opde2/100);


說明:

v5.1 Beta版 OptionLastDay 函數已有調整
不需多出前面的那三行, 來處理新制換月

v5.0 版若少了那三行, 會於結算日當天提前換月


由 ah7eric 在 2011-03-15 17:14 發表:

感謝回覆

修訂後

假設把浮標移到2010/09/14

本月會是110009

因為SYN:=MOD(本月,1000);會等於9
NUMTOSTR(SYN,0)變成只有9

請問我要怎麼搭配
價平C商品名稱:=NUMTOSTR(SYN,0) + '台指' + STRMID('CP',0+1,1)+NUMTOSTR(SCC,0),LINETHICK0;

來求出特定履約價的商品名稱?


由 cgjj 在 2011-03-15 17:56 發表:

引用:
最初由 ah7eric 發表
感謝回覆

修訂後

假設把浮標移到2010/09/14

本月會是110009

因為SYN:=MOD(本月,1000);會等於9
NUMTOSTR(SYN,0)變成只有9

請問我要怎麼搭配
價平C商品名稱:=NUMTOSTR(SYN,0) + '台指' + STRMID('CP',0+1,1)+NUMTOSTR(SCC,0),LINETHICK0;

來求出特定履約價的商品名稱?



因為 9 轉換為字串後, 只有 9 前面不會有零
進行補零字元的處理就可解決

NUMTOSTR(SYN,0)
改為
STRRIGHT('000'+numtostr(SYN,0),3)


由 ah7eric 在 2011-03-15 18:03 發表:

透過
本月契約:=STRRIGHT(NUMTOSTR(本月,0),3);
取得正確的月份

但不知為何都不會隨著浮標變動, 僅會呈現當前交易日的交易年月

再請指教


由 cgjj 在 2011-03-15 18:24 發表:

引用:
最初由 ah7eric 發表
透過
本月契約:=STRRIGHT(NUMTOSTR(本月,0),3);
取得正確的月份

但不知為何都不會隨著浮標變動, 僅會呈現當前交易日的交易年月

再請指教



NUMTOSTR(N,M) 是轉換數值 N 為字串 M
其不支援數列(陣列)
若您將 N 帶入數列, 其會取該數列最末根數值做轉換
也就是說
NUMTOSTR 結果並非是字串陣列, 而是單一字串

若您要跟隨十字游標變動, 需以 N[i] 的方式來進行處理
令 i 值為當前十字游標位置
就可取得當前十字游標位置, 所對應的 N 值

以存取SYN數列為例:

//取得十字游標位置
PP:=SYSPARAM(1);
if PP<lbound(SYN) or PP>datacount then PP:=datacount; //處理有效存取範圍

//再接著將
STRRIGHT('000'+numtostr(SYN,0),3)

//改為
STRRIGHT('000'+numtostr(SYN[PP],0),3)


由 ah7eric 在 2011-03-15 18:30 發表:

感謝您快速的回覆

雖然不是我意指的答案, 但學到新東西也感覺很好


前面表達不清, 這次用圖


主要想解決不連貫的部分


由 cgjj 在 2011-03-15 18:51 發表:

引用:
最初由 ah7eric 發表
感謝您快速的回覆

雖然不是我意指的答案, 但學到新東西也感覺很好


前面表達不清, 這次用圖


主要想解決不連貫的部分



這張圖看不出您要算什麼, 麻煩請詳述您的需求
有事先外出了, 明日再回應了


由 ah7eric 在 2011-03-15 19:15 發表:

我視著簡單表達我的需求好了


我想要觀察近月8100P和近月8900C兩個倉位的成交價之合其長期的狀況

但目前寫的程式只會跑出來當前契約從契約有效日開始的那天才有的交易情況

而非自動讀取每個近月的數據

有勞了


由 ah7eric 在 2011-03-15 21:01 發表:

我另外嘗試了

http://www.chiefox.com.tw/bbs/showt...BF%EF%BE%DC%C5v

但仍然沒辦法完全呈現每個月的價平選擇權契約之成交價


由 cgjj 在 2011-03-16 11:49 發表:

引用:
最初由 ah7eric 發表
我視著簡單表達我的需求好了


我想要觀察近月8100P和近月8900C兩個倉位的成交價之合其長期的狀況

但目前寫的程式只會跑出來當前契約從契約有效日開始的那天才有的交易情況

而非自動讀取每個近月的數據

我另外嘗試了

http://www.chiefox.com.tw/bbs/showt...BF%EF%BE%DC%C5v

但仍然沒辦法完全呈現每個月的價平選擇權契約之成交價





舉例來說
同樣是 8900Call, 但每個月所對應的選擇權契約是不同的
也就是所屬對應的[商品]是不同相的, 例如:
101台指C8900 ==> 102台指C8900 ==> 103台指C8900

價平則更複雜
期指每天每個週期價格都時時在變化
也就是說
每個週期所對應的價平選擇權契約可能不同
亦即, 每個週期所要取的價平成交價可能是來自不同商品
這根可能取 103台指C8900, 下根可能就要換取 103台指C8800 ....
故並非用 STKINDI 引用一個選擇權契約商品, 就能算出結果

要得到連續之價平數據, 計算上
您必需先設置一個與K棒等長的數列(假設為MC)
以迴圈處理每一根K棒
再依據該K棒之價格, 找到其所對應的價平選擇權商品
再去引用該商品對應K棒之成交價過來, 存入MC數列相對的位置中

若僅以日線來看,每天都有新的價位出現
一天就需引用 Call + Put 兩個選權商品來得到各自的價平成交價(各一次,共兩次)
10根日線, 就需要引用不同商品達 20 次, 100 根就 200 次 ....
想想得要動用多少資料才能計算

要做這個,要考量幾個因素:
1.有無累積足夠的選權數據來計算這部份(商品數量龐大)
2.盤中要跑計算這個,是極為費力的(即使是盤後都要算非常久)
 (這麼多的數據, 需耗費龐大的 CPU, RAM, HDD 資源)


由 ah7eric 在 2011-03-16 13:21 發表:

系統資源是足夠的,煩請指導正確寫法.

感激不盡


由 cgjj 在 2011-03-16 13:51 發表:

引用:
最初由 ah7eric 發表
系統資源是足夠的,煩請指導正確寫法.

感激不盡



不要太低估需要的資源
除非您是盤後用, 不然肯定是不太夠的
且資料越長花費時間越漫長

不仿試試這段程式(於日線跑), 要跑多久時間跑完:
CC:C;
for i=1 to 4000 do begin
CC:="FITX1$CLOSE";
end;

軟體將會無回應很久(非當掉), 需等系統未計算完才正常
測試前請關閉其他軟體

這段僅牛刀小試, 實際上花費時間可能要比這個長很多
數據長度決定時間

做法前面已經有簡述了

要得到連續之價平數據, 計算上
您必需先設置一個與K棒等長的數列(假設為MC)
以迴圈處理每一根K棒
再依據該K棒之價格, 找到其所對應的價平選擇權商品
再去引用該商品對應K棒之成交價過來, 存入MC數列相對的位置中

處理上很繁雜費事...


由 ah7eric 在 2011-03-16 17:22 發表:

直接套用在台指上約不到一秒就ok了

按F4切換成大盤約停頓了三至五秒

請問接下來怎麼做比較好?


全部時間均為台灣時間, 現在時間為12:16 總頁數 (2): [1] 2 »
在這個頁面顯示本主題全部的 26 個文章


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

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