GMDS
使用HFOCX資訊示範AmiBroker上用ADK設計Realtime Quote
AmiBroker Development Kit (ADK) 的設計, 大致上就是寫一個dll專案, 主cpp裏include ADK提供的 Plugin.h 然後需要提供以下functions: PLUGINAPI int GetPluginInfo( struct PluginInfo *pInfo ); PLUGINAPI int Init(void); PLUGINAPI int Release(void); 要設計Realtime Quote則需再提供 PLUGINAPI int GetStatus( struct PluginStatus *status ); 如果還要支援線圖資料則再增加 PLUGINAPI int GetQuotesEx( LPCTSTR pszTicker, int nPeriodicity, int nLastValid, int nSize, struct Quotation *pQuotes, GQEContext *pContext ); 整個ADK其實在GMDS上要運用只需保留一個檔案, 就是 ADK\Include\Plugin.h 就可以了, 但是 Plugin.h 裡面寫了#include "plugin_legacy.h", 所以可以把 plugin_legacy.h 也留著, 不過這只有在跟舊版的AmiBroker( < v5.27)搭配時才有作用, 如真的不需要就把 Plugin.h 裏的include註解掉, 檔案也就可以刪了~ 真的沒什麼用 而要接收DTS資訊源(這裏會用HFOCX的外匯行情作示範) 只需要有 DbfTCdll2.dll 就可以作了, 如果是寫C++則可以引入 DbfTCdll2.h 可以寫的比C#更容易! PS: 與GMDS的api是全面性支援的概念有所不同, ADK 由於是用 _cdecl (VC預設) 方式宣告函式, 官方說明是可以使用VC6和DevC開發, 而BCB雖然也能正確編譯, 但作出的dll AmiBroker是不能用的! 這裡的示範, 為了調用方便, 設計兩種索引方式, 大致如下規劃 程式內容大概這樣寫 即時數據接收的Callback大概是這樣的內容 如上之設計, 如果想玩其它花樣, 可以用以下方式隨時取得商品表與內容,
其中iIndex就是直接調出第幾個商品 0 <= iIndex < iCountContracts 所以用一個for-loop就等於將整個商品表掃一次了~ ADK的Realtime Quote就只要這樣 把連線狀態回應給AmiBroker可以簡單這樣設計 把作出來的dll放AmiBroker安裝路徑下的 Plugins 資料夾中 例如 C:\Program Files\AmiBroker\Plugins\ 而收DTS用的 DbfTCdll2.dll 則放AmiBroker的工作路徑下 例如 C:\Program Files\AmiBroker\ 然後跑AmiBroker起來, 到選單 Tools --> Plug-ins... 可以看到 然後有選單看是要新增 File --> New --> Database... 還是編輯 File --> Database setting... 就可以選這資料源來使用了 沒有任何商品代碼嗎? 從選單的 Sumbol --> New... 將下面整行內容貼進去 AUD/USD,AUD/JPY,USD/CAD,USD/CHF,CHF/JPY,EUR/USD,EUR/CHF,EUR/GBP,EUR/JPY,GBP/USD,GBP/CHF,GBP/JPY,HKGOLD,USD/JPY,LKG,GOLD,GOLDX,SILVER,SILVERX,NZD/USD 按OK鈕之後, 所有輸入的商品代碼就會列在Symbol視窗格, 然後於視窗格中按Ctrl+A全選, 再用滑鼠右鍵點出功能清單, 點選 Add to Realtime Quote windows 這樣就完工了~ 如果還沒有看到Realtime Quote視窗格, 則是要在選單列的 Window 那邊, 把Realtime Quote項目點勾起來即可 本例中與上游(UniDBF)的上游(Pats-Emu)相比對 當然, 如果使用VC10以上或DevC5就能產出x64的dll版本搭配64位元版的AmiBroker囉! 更進一步就是設計設定的介面, 可以用文件編輯ini的方式或是比較搞剛作GUI, 依拙見還是選擇前者既簡單又方便, 就請各自發揮了~ 當然, 任何資訊都可以很容易轉成DTS服務, 只要轉成DTS方式服務後, 就都能像上面一樣輕輕鬆鬆運用在AmiBroker裏了... 即便要加入線圖資訊的功能, 透過GMDS提供的STM很容易就能完美又簡潔的建構出來~ ( 前面提到 iCountContracts 所形成的商品表, 就也是使用STM的範例 ) 這也就是說可以把各種不好使的資訊來源透過GMDS的提供的方式(Feed-Server/API)全都打進GMDS的架構內, 然後不管什麼資訊源最後統一都是最容易上手的DTS介接模式, 再來DTS以下都是維持不變的, 就算源頭換來換去再也不用擔心要大費周章改一堆了! 如能透過券商端提供TSHS與客端使用PatsEmu-TSHS, 那麼資料完全自動銜接, 也不用再考慮什麼回補問題了~ 針對 DbfTCdll2.dll 的使用上, 關於程式使用dll的方式, 可進一步參考 使用dll的一些基礎見識 其它連結: AmiBroker |
CME MDP 3.0 Market Data Template v9 改版
GMDS的PatsEmu-CME從2015的 v2 Template 設計後運作到現在, 反觀GMDS卻無須任何配合修改, 一值完全正確處理資料 不過這次的v9已經不是格式修改, 而是整個翻新, 分析其主要目的為將小數7位的定義擴大到9位 這個動作其實早在估計之內, 於最初解v2資料時就已經覺得設計上有問題, 無奈下游只能配合, 不過有覺悟的話至少還是預先參數化讓程式比較容易逢變時擴增 為什麼會有這種預感呢? 因為英鎊計價的部分都是分數 1/256 = 0.00390625 其實就應該已經用到小數8位了 當我們透過通分時, 雖然分母 3200 似乎夠用, 但實際運算時 3200/256 = 12.5 尚未整除, 所以實際以整數處理時會擴大到使用分母 6400 來處理 反之 6400/12.5 = 512 也就是逆向處理時, 用 1/512 作為邊緣較為合適 1/512 = 0.001953125 那麼就會使用到小數9位了 本次的主要變動: ■多了 PRICE9 和 PRICENULL9 的新欄位定義, 用來替代原本的 PRICE 和 PRICENULL ■多了 Decimal9 和 Decimal9NULL 用來替代原本的 FLOAT ■新增以下格式 (都是有套用到新欄位而變更) MDIncrementalRefreshBook46 id="46" ==>取代原使用的 MDIncrementalRefreshBook32 id="32" MDIncrementalRefreshOrderBook47 id="47" //行情沒用到 MDIncrementalRefreshTradeSummary48 id="48" ==>取代原使用的 MDIncrementalRefreshTradeSummary42 id="42" MDIncrementalRefreshDailyStatistics49 id="49" ==>取代原使用的 MDIncrementalRefreshDailyStatistics33 id="33" MDIncrementalRefreshLimitsBanding50 id="50" ==>取代原使用的 MDIncrementalRefreshLimitsBanding34 id="34" MDIncrementalRefreshSessionStatistics51 id="51" ==>取代原使用的 MDIncrementalRefreshSessionStatistics35 id="35" SnapshotFullRefresh52 id="52" //未使用, 與 SnapshotFullRefresh38相同,只是PRICENULL改用PRICENULL9 SnapshotFullRefreshOrderBook53 id="53" //行情沒用到 MDInstrumentDefinitionFuture54 id="54" ==>取代原使用的 MDInstrumentDefinitionFuture27 id="27" MDInstrumentDefinitionOption55 id="55" ==>取代原使用的 MDInstrumentDefinitionOption41 id="41" MDInstrumentDefinitionSpread56 id="56" ==>取代原使用的 MDInstrumentDefinitionSpread29 id="29" 若依廠商提供的 CME更換行情格式,行事曆
行事曆本身說明了系統最好能新舊格式通吃, 以CME而言就是行事曆時間之前丟舊格式, 時間以後改丟新格式 若GMDS系統尚未更新, 只能解舊格式的會於行事曆時間以後沒有行情 雖然廠商很誇張, 5月就已經提供的新格式, 到8月有商品沒行情的第一天8/13號之後才發現, 雖然8/15號才收到消息, 但是看了一下之前的程式碼, 只能誇讚自己寫的太好了, 估計能連線到系統時, 應該半天就能完工~ 改版訊息查閱: 2018-08-16 其他相關文章 PatsEmu-CME 參數設定說明 PatsEmu-CME的商品篩選設定方式 CME MDP3.0的規劃與建置 CME市場商品分析規劃 CME FAST/Template Decode |
輕鬆擷取RMDS的資料作即時分析或運用
目前於RMDS上的應用架構通常為 ( <--- 箭頭方向為由Client連線Server ) 路透主機 <---...--- [ RMDS-Proxy <--- PatsEmu-RMDS ] <--- 各種應用 其中 PatsEmu-RMDS 透過 YTSetFile 的設定作商品代碼轉碼規劃, 產生路透代碼描述的 DataSetFile , 之後轉交 RMDS-Proxy 將所需要的商品代碼註冊至路透主機, 透過RMDS-Proxy接收所有行情訊息提供DTS服務內容, 而PatsEmu輸出的信息是仿PATS應用所需要的各種資訊 於相同的架構模式下也可使用TSHS-RMDS來運作提供TSHS服務, 輸出的信息則是完整的RMDS的所有FID資訊, 只是TSHS-RMDS僅設計使用路透代碼描述的 DataSetFile 的設定方式, 一樣的把 DataSetFile 設定內容轉交 RMDS-Proxy 將所需要的商品代碼註冊至路透主機, 透過RMDS-Proxy接收所有行情訊息 現在則是要說明其實架構是可以這樣運用的, 在一個運作中的PatsEmu-RMDS系統下, 資訊持續運作的情形下, 可以旁接API小程式或是TSHS-RMDS 去連結 RMDS-Proxy, 而RMDS-Proxy會把原本輸出給 PatsEmu-RMDS 的資訊 同時輸出給連上來的其他連線, 那麼就等同能在不影響原本的運作之下, 擷取路透當前輸出的所有訊息 圖中 RproxyTest 就是用API(PktEvCdll.dll)的範例,將所有路透的資訊直接秀出來 (於TSHS的說明頁中有 PktEvCdll API 連線 RMDS-Proxy 的處理範例 ) 雖然API也可要求註冊商品, 不過這裏著重在側接資料, 因此以不發出任何要求的方式為主, 圖中可以看到 RproxyTest 與 PatsEmu-RMDS 都是連往 port 15306 現在改用現成的 TSHS-RMDS 直接當作側接工具, 可以複製執行檔到一個空的資料夾, 直接執行後會產生一個預設的 RMDS_DataSetFile.txt 設定, 因為是想要用作側接, 並沒有要要求註冊任何商品, 可把內容中的 '+' 改成 '-' 即可, -IDN_SELECTFEED/NQH1,NQM1,NQU1,NQZ1 -IDN_SELECTFEED/NQH1m,NQM1m,NQU1m,NQZ1m 或者把內容刪除成空的檔案也行(檔案要留著) 幫 TSHS-RMDS 建立捷徑, 設定執行參數 /Host 127.0.0.1:15306 就可連上指定 RMDS-Proxy 這樣就能透過 TSHS-RMDS 的介面直接檢視所有商品的FID欄位內容了~ 而TSHS架構的好處就是能把資料流完整分時保存下來, 不僅可供作即時架構中斷後的回補機能, 也能作為模擬與重複使用等其他應用, 所以於捷徑上可再增加執行參數 /Log 15306\ 便可以開始紀錄保存由 RMDS-Proxy 的所有訊息於工作路徑下指定的 15306\ 資料夾中 之後使用相同的 PktEvCdll API 連線, 不過要改連 TSHS-RMDS, 稍微設計一些篩選功能 以2017-11-20的 STWX7 為例, 想對早上08:45(am盤開盤)開始交易的過程進行分析,可從08:00作為進入點 pktevcapi 127.0.0.1:30031 20171120080000,00000000 獲得這樣的資料(每一行路透商品FID資訊 對應一行有解到的想看欄位) STWX7 :1067=00:30:00,25=403.70,441=403.70,31=1,735=1,3386=20 NOV 2017,3855=1800110,4147=1800110, 賣: 403.70 STWX7 :3855=1800111,22=402.30,436=402.30,30=1,730=1,4150=1800111, 買: 402.30 STWX7 :25=403.50,441=403.50,31=1,735=1,3855=1800112,4147=1800112, 賣: 403.50 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1800114,4147=1800114, 賣: 376.90 STWX7 :3855=1800138,22=411.00,436=411.00,30=8,730=8,4150=1800138, 買: 411.00 STWX7 :1067=00:30:02,25=375.90,441=375.90,31=6,735=6,3855=1802138,4147=1802138, 賣: 375.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1802677,4147=1802677, 賣: 376.90 STWX7 :25=374.90,441=374.90,31=6,735=6,3855=1802678,4147=1802678, 賣: 374.90 STWX7 :3855=1803018,1067=00:30:03,22=415.00,436=415.00,30=3,730=3,4150=1803018, 買: 415.00 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1803209,4147=1803209, 賣: 376.90 STWX7 :25=373.90,441=373.90,31=6,735=6,3855=1803210,4147=1803210, 賣: 373.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1803742,4147=1803742, 賣: 376.90 STWX7 :25=372.90,441=372.90,31=6,735=6,3855=1803744,4147=1803744, 賣: 372.90 STWX7 :1067=00:30:04,25=376.90,441=376.90,31=40,735=40,3855=1804288,4147=1804288, 賣: 376.90 STWX7 :25=371.90,441=371.90,31=6,735=6,3855=1804289,4147=1804289, 賣: 371.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1804832,4147=1804832, 賣: 376.90 STWX7 :25=370.90,441=370.90,31=6,735=6, 賣: 370.90 STWX7 :1067=00:30:05,25=376.90,441=376.90,31=40,735=40,3855=1805017,4147=1805017, 賣: 376.90 STWX7 :25=369.90,441=369.90,31=6,735=6,3855=1805018,4147=1805018, 賣: 369.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1805358,4147=1805358, 賣: 376.90 STWX7 :25=368.90,441=368.90,31=6,735=6, 賣: 368.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1805887,4147=1805887, 賣: 376.90 STWX7 :25=367.90,441=367.90,31=6,735=6,3855=1805889,4147=1805889, 賣: 367.90 STWX7 :1067=00:30:06,25=376.90,441=376.90,31=40,735=40,3855=1806438,4147=1806438, 賣: 376.90 STWX7 :25=366.90,441=366.90,31=6,735=6,3855=1806440,4147=1806440, 賣: 366.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1806983,4147=1806983, 賣: 376.90 STWX7 :25=365.90,441=365.90,31=6,735=6,3855=1806984,4147=1806984, 賣: 365.90 STWX7 :1067=00:30:07,25=376.90,441=376.90,31=40,735=40,3855=1807520,4147=1807520, 賣: 376.90 STWX7 :25=364.90,441=364.90,31=6,735=6,3855=1807521,4147=1807521, 賣: 364.90 STWX7 :1067=00:30:08,25=376.90,441=376.90,31=40,735=40,3855=1808067,4147=1808067, 賣: 376.90 STWX7 :25=363.90,441=363.90,31=6,735=6,3855=1808069,4147=1808069, 賣: 363.90 STWX7 :25=376.90,441=376.90,31=40,735=40,3855=1808592,4147=1808592, 賣: 376.90 STWX7 :25=362.90,441=362.90,31=6,735=6,3855=1808594,4147=1808594, 賣: 362.90 STWX7 :1067=00:30:09,25=376.90,441=376.90,31=40,735=40,3855=1809151,4147=1809151, 賣: 376.90 STWX7 :25=362.80,441=362.80,31=6,735=6,3855=1809152,4147=1809152, 賣: 362.80 STWX7 :1067=00:31:30,25=376.90,441=376.90,31=20,735=20,3855=1890035,4147=1890035, 賣: 376.90 STWX7 :25=362.80,441=362.80,31=3,735=3,3855=1890037,4147=1890037, 賣: 362.80 STWX7 :3855=2285781,1067=00:38:05,22=431.30,436=431.30,4150=2285781,5=00:38, 買: 431.30 STWX7 :3855=2287478,22=415.00,436=415.00,4150=2287478, 買: 415.00 STWX7 :11809=n/a,1704=00:45,7084=3,14260=n/a,3404=403.46,372=403.46,9227=n/a,3132=6696,9994=n/a,9258=n/a,32743=n/a,32=6696,32691=n/a,100=2701546.90,373=146,7085=18,6947=146,8672=692259671968332150,8273=403.10,32741=n/a,5387=3,32694=n/a,11786=n/a, *總量* 6696 STWX7 :7084=1,3132=6697,32=6697,100=2701950.00,373=147,7085=19,6947=147,8672=692259671968332151,5387=1, *總量* 6697 STWX7 :7084=2,3132=6699,32=6699,100=2702756.20,373=149,7085=20,6947=149,8672=692259671968332152,5387=2, *總量* 6699 STWX7 :7084=3,3132=6702,32=6702,100=2703965.50,373=152,7085=21,6947=152,8672=692259671968332153,5387=3, *總量* 6702 STWX7 :3132=6705,32=6705,100=2705174.80,373=155,7085=22,6947=155,8672=692259671968332154, *總量* 6705 STWX7 :7084=9,3132=6714,32=6714,100=2708802.70,373=164,7085=23,6947=164,8672=692259671968332155,5387=9, *總量* 6714 STWX7 :7084=3,3132=6717,32=6717,100=2710012.00,373=167,7085=24,6947=167,8672=692259671968332156,5387=3, *總量* 6717 STWX7 :3132=6720,32=6720,100=2711221.30,373=170,7085=25,6947=170,8672=692259671968332157, *總量* 6720 STWX7 :7084=2,3132=6722,32=6722,100=2712027.50,373=172,7085=26,6947=172,8672=692259671968332158,5387=2, *總量* 6722 STWX7 :7084=5,3132=6727,32=6727,100=2714043.00,373=177,7085=27,6947=177,8672=692259671968332159,5387=5, *總量* 6727 STWX7 :7084=8,3404=403.45,372=403.45,3132=6735,32=6735,100=2717267.80,373=185,7085=28,6947=185,8672=692259671968332160,5387=8, *總量* 6735 STWX7 :7084=4,3132=6739,32=6739,100=2718880.20,373=189,7085=29,6947=189,8672=692259671968332161,5387=4, *總量* 6739 STWX7 :7084=1,3132=6740,32=6740,100=2719283.30,373=190,7085=30,6947=190,8672=692259671968332162,5387=1, *總量* 6740 STWX7 :25=376.90,441=376.90,31=20,735=20, 賣: 376.90 STWX7 :22=407.30,436=407.30, 買: 407.30 STWX7 :25=390.00,441=390.00,31=17,735=17, 賣: 390.00 STWX7 :22=407.20,436=407.20,30=9,730=9, 買: 407.20 STWX7 :22=407.10,436=407.10,30=3,730=3, 買: 407.10 STWX7 :3855=2700185,22=407.00,436=407.00,4150=2700185, 買: 407.00 STWX7 :22=405.70,436=405.70,30=7,730=7, 買: 405.70 STWX7 :22=405.00,436=405.00,30=8,730=8, 買: 405.00 STWX7 :25=400.00,441=400.00,31=1,735=1,4147=2700185, 賣: 400.00 STWX7 :3132=6741,32=6741,100=2719686.40,373=191,7085=31,6947=191,8672=692259671968332163, *總量* 6741 STWX7 :22=404.30,436=404.30,30=7,730=7, 買: 404.30 STWX7 :22=404.00,436=404.00, 買: 404.00 STWX7 :25=400.50,441=400.50, 賣: 400.50 STWX7 :25=401.80,441=401.80,31=7,735=7, 賣: 401.80 STWX7 :25=401.90,441=401.90, 賣: 401.90 STWX7 :22=403.80,436=403.80,30=14,730=14, 買: 403.80 STWX7 :25=402.20,441=402.20,31=22,735=22,3855=2700186,4147=2700186, 賣: 402.20 STWX7 :22=403.20,436=403.20,30=8,730=8, 買: 403.20 STWX7 :22=403.10,436=403.10,30=13,730=13, 買: 403.10 STWX7 :3132=6742,32=6742,100=2720089.50,373=192,7085=32,6947=192,8672=692259671968332164, *總量* 6742 STWX7 :25=403.40,441=403.40,31=7,735=7, 賣: 403.40 STWX7 :7084=6,3132=6748,32=6748,100=2722508.10,373=198,7085=33,6947=198,8672=692259671968332165,5387=6, *總量* 6748 STWX7 :7084=1,3132=6749,32=6749,100=2722911.20,373=199,7085=34,6947=199,8672=692259671968332166,5387=1, *總量* 6749 STWX7 :7084=6,3132=6755,32=6755,100=2725329.80,373=205,7085=35,6947=205,8672=692259671968332167,5387=6, *總量* 6755 STWX7 :7084=1,3132=6756,32=6756,100=2725732.90,373=206,7085=36,6947=206,8672=692259671968332168,5387=1, *總量* 6756 STWX7 :7084=7,3132=6763,32=6763,100=2728554.60,373=213,7085=37,6947=213,8672=692259671968332169,5387=7, *總量* 6763 STWX7 :7084=1,3132=6764,32=6764,100=2728957.70,373=214,7085=38,6947=214,8672=692259671968332170,5387=1, *總量* 6764 STWX7 :7084=7,3132=6771,32=6771,100=2731779.40,373=221,7085=39,6947=221,8672=692259671968332171,5387=7, *總量* 6771 STWX7 :7084=5,3132=6776,32=6776,100=2733794.90,373=226,7085=40,6947=226,8672=692259671968332172,5387=5, *總量* 6776 STWX7 :7084=1,3132=6777,32=6777,100=2734198.00,373=227,7085=41,6947=227,8672=692259671968332173,5387=1, *總量* 6777 STWX7 :3854=2700170,3900=692259671968332176,18=00:45,4756=1,56=0.00,11=0.00,379=00:45:00,77=4537,3132=6778,12770=n/a,16=20 NOV 2017,178=1,100=2734601.10,6=403.10,32=6778,32696=n/a,14=1, -- 00:45:00 -- 成交: 403.10 *總量* 6778 STWX7 :178=2,3900=692259671968332177,3132=6780,77=4538,32=6780,100=2735407.30, *總量* 6780 STWX7 :3900=692259671968332178,3854=2700177,56=0.07,11=0.30,3132=6782,77=4539,32=6782,100=2736214.10,6=403.40, *總量* 6782 成交: 403.40 STWX7 :25=403.30,441=403.30,31=2,735=2,3855=2700233,4147=2700233, 賣: 403.30 STWX7 :178=1,3900=692259671968332179,3854=2700336,56=0.00,11=0.00,3132=6783,77=4540,32=6783,100=2736617.20,6=403.10,14=2, *總量* 6783 成交: 403.10 可以搜尋log中文字內容 ",6=" 就能找到成交價的部分, 第一筆是發生在路透提供成交時間為 GMT 00:45:00 的地方, 相同的方式分析 STWamX7 所獲得的資料除了總量有固定的差距外, 其於資料幾乎都是一模一樣的, 只是STWam早上會清盤,如果都沒有來成交價,以系統時間與成交量紀錄到的tick在08:45:00之前會是空的成交價之原因, 而STW則是延續pm盤繼續交易,沒有清盤的動作,所以成交價維持在pm盤最後一筆成交的價位 (也因此前面的STWX7的資料並沒有發現 FID 19 或 47 的開盤價) 如果直接觀察 STWamX7 , 就可以發現與STWX7對應的同一筆有 FID 19 的資料, 提供了開盤價位 (與當筆成交價位是一致的) STWamX7 :1067=00:30:00,25=403.70,441=403.70,31=1,735=1,3386=20 NOV 2017,3855=1800110,4147=1800110, 賣: 403.70 STWamX7 :3855=1800111,22=402.30,436=402.30,30=1,730=1,4150=1800111, 買: 402.30 STWamX7 :25=403.50,441=403.50,31=1,735=1,3855=1800112,4147=1800112, 賣: 403.50 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1800114,4147=1800114, 賣: 376.90 STWamX7 :3855=1800138,22=411.00,436=411.00,30=8,730=8,4150=1800138, 買: 411.00 STWamX7 :1067=00:30:02,25=375.90,441=375.90,31=6,735=6,3855=1802138,4147=1802138, 賣: 375.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1802677,4147=1802677, 賣: 376.90 STWamX7 :25=374.90,441=374.90,31=6,735=6,3855=1802678,4147=1802678, 賣: 374.90 STWamX7 :3855=1803018,1067=00:30:03,22=415.00,436=415.00,30=3,730=3,4150=1803018, 買: 415.00 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1803209,4147=1803209, 賣: 376.90 STWamX7 :25=373.90,441=373.90,31=6,735=6,3855=1803210,4147=1803210, 賣: 373.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1803742,4147=1803742, 賣: 376.90 STWamX7 :25=372.90,441=372.90,31=6,735=6,3855=1803744,4147=1803744, 賣: 372.90 STWamX7 :1067=00:30:04,25=376.90,441=376.90,31=40,735=40,3855=1804288,4147=1804288, 賣: 376.90 STWamX7 :25=371.90,441=371.90,31=6,735=6,3855=1804289,4147=1804289, 賣: 371.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1804832,4147=1804832, 賣: 376.90 STWamX7 :25=370.90,441=370.90,31=6,735=6, 賣: 370.90 STWamX7 :1067=00:30:05,25=376.90,441=376.90,31=40,735=40,3855=1805017,4147=1805017, 賣: 376.90 STWamX7 :25=369.90,441=369.90,31=6,735=6,3855=1805018,4147=1805018, 賣: 369.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1805358,4147=1805358, 賣: 376.90 STWamX7 :25=368.90,441=368.90,31=6,735=6, 賣: 368.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1805887,4147=1805887, 賣: 376.90 STWamX7 :25=367.90,441=367.90,31=6,735=6,3855=1805889,4147=1805889, 賣: 367.90 STWamX7 :1067=00:30:06,25=376.90,441=376.90,31=40,735=40,3855=1806438,4147=1806438, 賣: 376.90 STWamX7 :25=366.90,441=366.90,31=6,735=6,3855=1806440,4147=1806440, 賣: 366.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1806983,4147=1806983, 賣: 376.90 STWamX7 :25=365.90,441=365.90,31=6,735=6,3855=1806984,4147=1806984, 賣: 365.90 STWamX7 :1067=00:30:07,25=376.90,441=376.90,31=40,735=40,3855=1807520,4147=1807520, 賣: 376.90 STWamX7 :25=364.90,441=364.90,31=6,735=6,3855=1807521,4147=1807521, 賣: 364.90 STWamX7 :1067=00:30:08,25=376.90,441=376.90,31=40,735=40,3855=1808067,4147=1808067, 賣: 376.90 STWamX7 :25=363.90,441=363.90,31=6,735=6,3855=1808069,4147=1808069, 賣: 363.90 STWamX7 :25=376.90,441=376.90,31=40,735=40,3855=1808592,4147=1808592, 賣: 376.90 STWamX7 :25=362.90,441=362.90,31=6,735=6,3855=1808594,4147=1808594, 賣: 362.90 STWamX7 :1067=00:30:09,25=376.90,441=376.90,31=40,735=40,3855=1809151,4147=1809151, 賣: 376.90 STWamX7 :25=362.80,441=362.80,31=6,735=6,3855=1809152,4147=1809152, 賣: 362.80 STWamX7 :1067=00:31:30,25=376.90,441=376.90,31=20,735=20,3855=1890035,4147=1890035, 賣: 376.90 STWamX7 :25=362.80,441=362.80,31=3,735=3,3855=1890037,4147=1890037, 賣: 362.80 STWamX7 :3855=2285781,1067=00:38:05,22=431.30,436=431.30,4150=2285781,5=00:38, 買: 431.30 STWamX7 :3855=2287478,22=415.00,436=415.00,4150=2287478, 買: 415.00 STWamX7 :1704=00:45,7084=3,3404=403.10,372=403.10,3132=3,32=3,100=1209.30,373=3,7085=1,6947=3,8672=692259671968332150,8273=403.10,5387=3, *總量* 3 STWamX7 :7084=1,3132=4,32=4,100=1612.40,373=4,7085=2,6947=4,8672=692259671968332151,5387=1, *總量* 4 STWamX7 :7084=2,3132=6,32=6,100=2418.60,373=6,7085=3,6947=6,8672=692259671968332152,5387=2, *總量* 6 STWamX7 :7084=3,3132=9,32=9,100=3627.90,373=9,7085=4,6947=9,8672=692259671968332153,5387=3, *總量* 9 STWamX7 :3132=12,32=12,100=4837.20,373=12,7085=5,6947=12,8672=692259671968332154, *總量* 12 STWamX7 :7084=9,3132=21,32=21,100=8465.10,373=21,7085=6,6947=21,8672=692259671968332155,5387=9, *總量* 21 STWamX7 :7084=3,3132=24,32=24,100=9674.40,373=24,7085=7,6947=24,8672=692259671968332156,5387=3, *總量* 24 STWamX7 :3132=27,32=27,100=10883.70,373=27,7085=8,6947=27,8672=692259671968332157, *總量* 27 STWamX7 :7084=2,3132=29,32=29,100=11689.90,373=29,7085=9,6947=29,8672=692259671968332158,5387=2, *總量* 29 STWamX7 :7084=5,3132=34,32=34,100=13705.40,373=34,7085=10,6947=34,8672=692259671968332159,5387=5, *總量* 34 STWamX7 :7084=8,3132=42,32=42,100=16930.20,373=42,7085=11,6947=42,8672=692259671968332160,5387=8, *總量* 42 STWamX7 :7084=4,3132=46,32=46,100=18542.60,373=46,7085=12,6947=46,8672=692259671968332161,5387=4, *總量* 46 STWamX7 :7084=1,3132=47,32=47,100=18945.70,373=47,7085=13,6947=47,8672=692259671968332162,5387=1, *總量* 47 STWamX7 :25=376.90,441=376.90,31=20,735=20,4147=2700183, 賣: 376.90 STWamX7 :22=407.30,436=407.30, 買: 407.30 STWamX7 :25=390.00,441=390.00,31=17,735=17, 賣: 390.00 STWamX7 :22=407.20,436=407.20,30=9,730=9, 買: 407.20 STWamX7 :22=407.10,436=407.10,30=3,730=3, 買: 407.10 STWamX7 :22=407.00,436=407.00, 買: 407.00 STWamX7 :22=405.70,436=405.70,30=7,730=7, 買: 405.70 STWamX7 :22=405.00,436=405.00,30=8,730=8, 買: 405.00 STWamX7 :25=400.00,441=400.00,31=1,735=1, 賣: 400.00 STWamX7 :3132=48,32=48,100=19348.80,373=48,7085=14,6947=48,8672=692259671968332163, *總量* 48 STWamX7 :22=404.30,436=404.30,30=7,730=7, 買: 404.30 STWamX7 :22=404.00,436=404.00, 買: 404.00 STWamX7 :25=400.50,441=400.50, 賣: 400.50 STWamX7 :25=401.80,441=401.80,31=7,735=7, 賣: 401.80 STWamX7 :25=401.90,441=401.90,3855=2700184,4147=2700184, 賣: 401.90 STWamX7 :22=403.80,436=403.80,30=14,730=14,4150=2700184, 買: 403.80 STWamX7 :25=402.20,441=402.20,31=22,735=22, 賣: 402.20 STWamX7 :22=403.20,436=403.20,30=8,730=8, 買: 403.20 STWamX7 :22=403.10,436=403.10,30=13,730=13, 買: 403.10 STWamX7 :3132=49,32=49,100=19751.90,373=49,7085=15,6947=49,8672=692259671968332164, *總量* 49 STWamX7 :204=403.10,59=403.40,57=403.10,735=7,3514=403.40,203=403.10,31=7,3512=403.40,25=403.40,441=403.40, 賣: 403.40 STWamX7 :7084=6,3132=55,32=55,100=22170.50,373=55,7085=16,6947=55,8672=692259671968332165,5387=6, *總量* 55 STWamX7 :7084=1,3132=56,32=56,100=22573.60,373=56,7085=17,6947=56,8672=692259671968332166,5387=1, *總量* 56 STWamX7 :7084=6,3132=62,32=62,100=24992.20,373=62,7085=18,6947=62,8672=692259671968332167,5387=6, *總量* 62 STWamX7 :7084=1,3132=63,32=63,100=25395.30,373=63,7085=19,6947=63,8672=692259671968332168,5387=1, *總量* 63 STWamX7 :7084=7,3132=70,32=70,100=28217.00,373=70,7085=20,6947=70,8672=692259671968332169,5387=7, *總量* 70 STWamX7 :7084=1,3132=71,32=71,100=28620.10,373=71,7085=21,6947=71,8672=692259671968332170,5387=1, *總量* 71 STWamX7 :7084=7,3132=78,32=78,100=31441.80,373=78,7085=22,6947=78,8672=692259671968332171,5387=7, *總量* 78 STWamX7 :7084=5,3132=83,32=83,100=33457.30,373=83,7085=23,6947=83,8672=692259671968332172,5387=5, *總量* 83 STWamX7 :7084=1,3132=84,32=84,100=33860.40,373=84,7085=24,6947=84,8672=692259671968332173,5387=1, *總量* 84 STWamX7 :19=403.10,6258=2700170,12=403.10,285=00:45,379=00:45:00,32=85,286=00:45,6259=2700170,13=403.10,3854=2700170,3900=692259671968332176,11=0.00,287=00:45,3132=85,77=1,6=403.10,100=34263.50,18=00:45,6260=2700170,56=0.00,4756=1,16=20 NOV 2017,178=1, 開盤: 403.10 -- 00:45:00 -- *總量* 85 成交: 403.10 STWamX7 :178=2,3900=692259671968332177,3132=87,77=2,32=87,100=35069.70, *總量* 87 STWamX7 :6259=2700177,12=403.40,372=403.11,11=0.30,3132=89,77=3,56=0.07,3404=403.11,3854=2700177,3900=692259671968332178,32=89,100=35876.50,6=403.40,14=1, *總量* 89 成交: 403.40 STWamX7 :4147=2700233,3855=2700233,3514=403.30,25=403.30,441=403.30,31=2,735=2, 賣: 403.30 STWamX7 :178=1,3900=692259671968332179,3854=2700336,56=0.00,11=0.00,3132=90,77=4,32=90,100=36279.60,6=403.10,14=2, *總量* 90 成交: 403.10 最後比對SGX提供的Tick明細(WEBPXTICK_DT-20171120.zip) 可以發現 08:30:00~ 08:45:00 只有買賣價, 並且有穿價狀態的現象 (因為非交易時段不會成交) 084501才有成交,就是開盤價 403.10 Message Code B : Bid A : Ask T : Traded Time,Price,Msg_Code,Volume 083000,0000037690,A,00040 083000,0000041100,B,00008 083002,0000037490,A,00006 083003,0000037290,A,00006 083003,0000041500,B,00009 083004,0000037090,A,00006 083005,0000036790,A,00006 083006,0000036590,A,00006 083007,0000036490,A,00006 083008,0000036290,A,00006 083009,0000036280,A,00006 083010,0000036280,A,00006 083012,0000036280,A,00006 083014,0000036280,A,00006 083015,0000036280,A,00006 083016,0000036280,A,00006 083017,0000036280,A,00006 083018,0000036280,A,00006 083020,0000036280,A,00006 083031,0000036280,A,00006 083031,0000041500,B,00009 083033,0000041500,B,00009 083035,0000041500,B,00009 083038,0000036280,A,00006 083040,0000041500,B,00009 083043,0000041500,B,00009 083048,0000036280,A,00006 083055,0000041500,B,00009 083100,0000036280,A,00006 083106,0000036280,A,00006 083107,0000036280,A,00006 083108,0000036280,A,00006 083109,0000036280,A,00006 083110,0000036280,A,00006 083110,0000041500,B,00009 083111,0000036280,A,00006 083113,0000036280,A,00006 083114,0000041500,B,00009 083116,0000036280,A,00006 083117,0000036280,A,00006 083118,0000036280,A,00006 083121,0000041500,B,00009 083123,0000036280,A,00006 083124,0000036280,A,00006 083125,0000036280,A,00006 083126,0000036280,A,00006 083126,0000041500,B,00009 083127,0000036280,A,00006 083128,0000036280,A,00006 083129,0000036280,A,00006 083130,0000036280,A,00003 083130,0000041500,B,00009 083131,0000036280,A,00003 083131,0000041500,B,00009 083132,0000041500,B,00009 083133,0000041500,B,00009 083135,0000041500,B,00009 083141,0000036280,A,00003 083141,0000041500,B,00009 083142,0000041500,B,00009 083145,0000036280,A,00003 083145,0000041500,B,00009 083146,0000041500,B,00009 083148,0000036280,A,00003 083151,0000041500,B,00009 083157,0000036280,A,00003 083157,0000041500,B,00009 083158,0000036280,A,00003 083200,0000041500,B,00009 083201,0000036280,A,00003 083201,0000041500,B,00009 083204,0000036280,A,00003 083210,0000036280,A,00003 083210,0000041500,B,00009 083215,0000041500,B,00009 083217,0000041500,B,00009 083218,0000036280,A,00003 083220,0000041500,B,00009 083229,0000036280,A,00003 083229,0000041500,B,00009 083230,0000036280,A,00003 083233,0000036280,A,00003 083233,0000041500,B,00009 083234,0000036280,A,00003 083235,0000041500,B,00009 083238,0000036280,A,00003 083238,0000041500,B,00009 083239,0000036280,A,00003 083239,0000041500,B,00009 083240,0000036280,A,00003 083241,0000036280,A,00003 083241,0000041500,B,00009 083242,0000036280,A,00003 083243,0000036280,A,00003 083244,0000041500,B,00009 083245,0000036280,A,00003 083246,0000036280,A,00003 083246,0000041500,B,00009 083247,0000036280,A,00003 083248,0000041500,B,00009 083249,0000041500,B,00009 083250,0000041500,B,00009 083251,0000041500,B,00009 083253,0000041500,B,00009 083256,0000041500,B,00009 083257,0000036280,A,00003 083258,0000041500,B,00009 083259,0000041500,B,00009 083301,0000041500,B,00009 083302,0000041500,B,00009 083303,0000041500,B,00009 083304,0000041500,B,00009 083305,0000041500,B,00009 083307,0000041500,B,00009 083308,0000041500,B,00009 083309,0000041500,B,00009 083313,0000041500,B,00009 083314,0000041500,B,00009 083315,0000041500,B,00009 083316,0000041500,B,00009 083317,0000036280,A,00003 083317,0000041500,B,00009 083318,0000036280,A,00003 083318,0000041500,B,00009 083319,0000036280,A,00003 083319,0000041500,B,00009 083320,0000036280,A,00003 083320,0000041500,B,00009 083321,0000036280,A,00003 083321,0000041500,B,00009 083322,0000036280,A,00003 083322,0000041500,B,00009 083323,0000036280,A,00003 083323,0000041500,B,00009 083324,0000036280,A,00003 083325,0000036280,A,00003 083326,0000036280,A,00003 083327,0000036280,A,00003 083327,0000041500,B,00009 083328,0000036280,A,00003 083328,0000041500,B,00009 083329,0000036280,A,00003 083329,0000041500,B,00009 083330,0000036280,A,00003 083330,0000041500,B,00009 083331,0000041500,B,00009 083332,0000041500,B,00009 083333,0000041500,B,00009 083334,0000041500,B,00009 083335,0000041500,B,00009 083344,0000036280,A,00003 083358,0000041500,B,00009 083404,0000041500,B,00009 083417,0000036280,A,00003 083417,0000041500,B,00009 083418,0000036280,A,00003 083418,0000041500,B,00009 083426,0000036280,A,00003 083427,0000036280,A,00003 083433,0000036280,A,00003 083435,0000036280,A,00003 083435,0000041500,B,00009 083436,0000041500,B,00009 083437,0000041500,B,00009 083438,0000041500,B,00009 083439,0000041500,B,00009 083440,0000036280,A,00003 083440,0000041500,B,00009 083442,0000036280,A,00003 083443,0000036280,A,00003 083444,0000036280,A,00003 083445,0000036280,A,00003 083446,0000036280,A,00003 083446,0000041500,B,00009 083447,0000036280,A,00003 083449,0000036280,A,00003 083455,0000036280,A,00003 083500,0000036280,A,00003 083501,0000036280,A,00003 083503,0000041500,B,00009 083504,0000036280,A,00003 083504,0000041500,B,00009 083506,0000036280,A,00003 083507,0000036280,A,00003 083508,0000036280,A,00003 083514,0000036280,A,00003 083522,0000036280,A,00003 083530,0000036280,A,00003 083530,0000041500,B,00009 083531,0000041500,B,00009 083532,0000041500,B,00009 083533,0000041500,B,00009 083536,0000036280,A,00003 083541,0000036280,A,00007 083542,0000036280,A,00007 083554,0000036280,A,00007 083556,0000036280,A,00007 083556,0000041500,B,00009 083557,0000036280,A,00007 083557,0000041500,B,00009 083559,0000036280,A,00007 083600,0000036280,A,00007 083601,0000036280,A,00007 083602,0000036280,A,00007 083606,0000036280,A,00007 083607,0000036280,A,00007 083608,0000036280,A,00007 083609,0000036280,A,00007 083610,0000036280,A,00007 083611,0000036280,A,00007 083612,0000036280,A,00007 083614,0000036280,A,00007 083615,0000036280,A,00007 083618,0000036280,A,00007 083619,0000036280,A,00007 083620,0000036280,A,00007 083624,0000036280,A,00007 083628,0000036280,A,00007 083629,0000036280,A,00007 083630,0000036280,A,00007 083631,0000041500,B,00009 083633,0000036280,A,00007 083647,0000036280,A,00007 083655,0000041500,B,00009 083657,0000036280,A,00008 083701,0000036280,A,00008 083702,0000036280,A,00008 083703,0000036280,A,00008 083706,0000036280,A,00008 083710,0000036280,A,00008 083712,0000036280,A,00008 083717,0000041500,B,00009 083719,0000036280,A,00008 083722,0000041500,B,00009 083725,0000036280,A,00008 083727,0000041500,B,00009 083731,0000036280,A,00008 083733,0000036280,A,00008 083737,0000036280,A,00008 083738,0000041500,B,00009 083745,0000041500,B,00009 083752,0000041500,B,00009 083753,0000041500,B,00009 083759,0000041500,B,00009 083802,0000041500,B,00009 083804,0000036280,A,00008 083805,0000043130,B,00018 083807,0000041500,B,00009 083809,0000041500,B,00009 083812,0000041500,B,00009 083814,0000041500,B,00009 083815,0000036280,A,00008 083817,0000041500,B,00009 083818,0000036280,A,00008 083824,0000041500,B,00009 083839,0000041500,B,00009 083842,0000041500,B,00009 083850,0000041500,B,00009 083851,0000041500,B,00009 083854,0000041500,B,00009 083855,0000041500,B,00009 083856,0000036280,A,00010 083857,0000041500,B,00009 083858,0000036280,A,00010 083859,0000036280,A,00010 083902,0000036280,A,00010 083902,0000041500,B,00009 083903,0000041500,B,00009 083904,0000036280,A,00010 083908,0000041500,B,00009 083911,0000041500,B,00009 083913,0000036280,A,00010 083915,0000036280,A,00010 083917,0000041500,B,00009 083920,0000041500,B,00009 083925,0000041500,B,00009 083934,0000036280,A,00010 083936,0000041500,B,00009 083939,0000036280,A,00010 083939,0000041500,B,00009 083944,0000036280,A,00010 083949,0000036280,A,00010 083949,0000041500,B,00009 084003,0000036280,A,00010 084005,0000036280,A,00010 084005,0000041500,B,00009 084006,0000041500,B,00009 084008,0000041500,B,00009 084009,0000041500,B,00009 084010,0000041500,B,00009 084011,0000041500,B,00009 084014,0000041500,B,00009 084015,0000041500,B,00009 084016,0000041500,B,00009 084019,0000041500,B,00009 084020,0000041500,B,00009 084021,0000041500,B,00009 084023,0000041500,B,00009 084026,0000041500,B,00009 084027,0000041500,B,00009 084028,0000041500,B,00009 084029,0000041500,B,00009 084032,0000041500,B,00009 084033,0000041500,B,00009 084034,0000036280,A,00010 084034,0000041500,B,00009 084035,0000041500,B,00009 084039,0000041500,B,00009 084042,0000041500,B,00009 084046,0000041500,B,00009 084053,0000041500,B,00009 084054,0000041500,B,00009 084056,0000041500,B,00009 084059,0000036280,A,00010 084059,0000041500,B,00009 084104,0000036280,A,00010 084110,0000041500,B,00009 084112,0000036280,A,00008 084149,0000041500,B,00009 084152,0000041500,B,00009 084154,0000041500,B,00009 084159,0000041500,B,00009 084200,0000041500,B,00009 084201,0000041500,B,00009 084202,0000036280,A,00008 084203,0000041500,B,00009 084209,0000041500,B,00009 084211,0000041500,B,00009 084214,0000041500,B,00009 084215,0000041500,B,00009 084216,0000041500,B,00009 084217,0000041500,B,00009 084222,0000041500,B,00009 084223,0000041500,B,00009 084235,0000036280,A,00008 084236,0000036280,A,00008 084237,0000036280,A,00008 084241,0000036280,A,00008 084242,0000036280,A,00008 084243,0000036280,A,00008 084251,0000041500,B,00009 084252,0000041500,B,00009 084253,0000036280,A,00004 084253,0000041500,B,00009 084254,0000036280,A,00009 084257,0000036280,A,00009 084257,0000041500,B,00009 084258,0000041500,B,00009 084301,0000041500,B,00009 084304,0000041500,B,00009 084305,0000041500,B,00009 084313,0000041500,B,00009 084316,0000041500,B,00009 084317,0000036280,A,00009 084318,0000041500,B,00009 084319,0000041500,B,00009 084321,0000041500,B,00009 084324,0000041500,B,00009 084328,0000036280,A,00009 084328,0000041500,B,00009 084330,0000036280,A,00009 084331,0000036280,A,00009 084332,0000036280,A,00009 084334,0000036280,A,00009 084336,0000036280,A,00009 084336,0000041500,B,00009 084337,0000036280,A,00009 084342,0000041500,B,00009 084343,0000036280,A,00009 084344,0000041500,B,00009 084347,0000036280,A,00009 084353,0000036280,A,00009 084356,0000036280,A,00009 084356,0000041500,B,00009 084357,0000036280,A,00009 084400,0000041500,B,00009 084401,0000041500,B,00009 084404,0000036280,A,00009 084405,0000036280,A,00009 084406,0000036280,A,00009 084412,0000041500,B,00009 084416,0000036280,A,00009 084417,0000041500,B,00009 084420,0000041500,B,00009 084421,0000041500,B,00009 084422,0000036280,A,00009 084425,0000036280,A,00009 084426,0000041500,B,00009 084429,0000041500,B,00009 084431,0000036280,A,00009 084431,0000041500,B,00009 084432,0000041500,B,00009 084433,0000036280,A,00009 084434,0000041500,B,00009 084435,0000041500,B,00009 084436,0000041500,B,00009 084437,0000036280,A,00009 084437,0000041500,B,00009 084438,0000041500,B,00009 084439,0000036280,A,00009 084439,0000041500,B,00009 084441,0000041500,B,00009 084443,0000041500,B,00009 084444,0000041500,B,00009 084445,0000041500,B,00009 084447,0000036280,A,00009 084448,0000041500,B,00009 084449,0000041500,B,00009 084451,0000036280,A,00009 084452,0000036280,A,00009 084452,0000041500,B,00009 084453,0000036280,A,00009 084453,0000041500,B,00009 084454,0000036280,A,00009 084454,0000041500,B,00009 084455,0000036280,A,00009 084455,0000041500,B,00009 084456,0000036280,A,00009 084456,0000041500,B,00009 084457,0000041500,B,00009 084458,0000036280,A,00009 084458,0000041500,B,00009 084459,0000041500,B,00009 084500,0000040340,A,00015 084500,0000040320,B,00004 084501,0000040340,A,00021 084501,0000040330,B,00004 084501,0000040310,T,00003 <== 成交價 403.10 (開盤價) 084501,0000040310,T,00001 084501,0000040310,T,00002 084501,0000040310,T,00003 084501,0000040310,T,00003 084501,0000040310,T,00009 084501,0000040310,T,00003 |
都寫了一些怎樣程式?
這裡作一個 string 和 strcpy 的簡單比較 程式的執行結果如下: 測試的結果 string 的方式所需費時較 strcpy 多好幾倍, 也就是 string 是比較慢的 往往相同的問題解決的方式很多, 有時候只需要能達到目的即可, 但是如果是需要高頻的處理, 效率就變的很重要... 因此常看到市面的行情相關軟體會有快市時的各種問題可見一般! 以大學生解題系統中計算階層為例 解法當然很多, 但是效率有多大的差距可以看得到, 記憶體的用量也會有很大的不同 在簡單問題下或許差異不大, 不過一旦問題開始變複雜, 差距就會越來越大! 現在的APP市場就可以看到, 並非新就是好 而是要穩定然後反應快才能讓人願意使用, APP評論中總是看到最多的不滿就是 三部五時更版, 動不動就沒反應當掉, 強迫更版, 把用戶當白老鼠 所以寫程式真的要很小心很用心才行, 越小的地方越是不能忽略而且還要更加以重視才好! 10月最後一個星期日一過,就又看到一堆資訊產品哀鴻遍野... 拜託, 日光節約又不是什麼大問題, 10年如一日 依然沒改善嗎?! |
透過Feed-Server/API輕鬆完成機房服務監測
每次話題總是離不開行情,這裏洩漏一下系統還可以有這樣的玩法! 利用Feed-API回報資訊到Feed-Server上,就像是餵行情的概念一樣, 於Server端就能瞭解各主機負載狀態與行情是否有延遲的狀況 前篇已經介紹過透過Feed-Server/API建立行情系統(AGVS)有多簡單, 現在同樣的透過巧思來監測機房服務狀態,於Server介面就能一覽無遺, 如果利用行情的特性,也能將想要的狀態統一像Tick紀錄一樣保留下來, 或者透過API訂閱的方式重新設計來規劃log/event/message...等的需求 而這邊為了簡化(偷懶)設計也便於說明, 把Feed-API的小程式設計為每一個console只收集一台服務主機的資訊打到Feed-Server上, 由於是IP化的架構, 可以於Feed-Server端跑多個console收集遠端服務主機的狀態, 當然也可以於各服務主機上分別跑console小程式把資訊打回Feed-Sever, 如果是後者,還可以把主機的CPU/記憶體/磁碟空間等...各種資訊也都打回Feed-Server囉! 程式也是都一樣很簡單 台灣21:46時由總成交量可以觀察到主機fort04有明顯的延遲狀況! 雖然21:50時行情有跟上,但台灣23:25時主機fort04延遲的狀況又更嚴重!! 主機fort04於23:51後行情才又跟上... |
CME MDP3.0的規劃與建置
CME於2015/6/10開始, 全面改用FIX/SBE的方式並停用FIX/FAST 特別是商品描述的欄位部分非常容易混淆
以CME的用戶端iLink來看, 應該是要讓MDP3.0經過轉換後相容於之前的對應 個人觀點:
價位小數點的差異: 以期貨商品同時段同範圍資料量比較: FIX/FAST: Channel ( 7,9,11,13,15,30,31,32,33,60,111,117,113,115 ) GMDS的規劃與建置, 介紹由當前FAST移轉到SBE的方式 假設FIX/FAST的GMDS/URDS設定為
FIX/FAST的GMDS/PatsEmu-CME設定為
由CME的對照表 http://www.cmegroup.com/confluence/display/EPICSANDBOX/MDP3#MDP3-FIX/FASTtoMDP3ChannelMapping 新的FIX/SBE的GMDS/URDS設定變為
FIX/SBE的GMDS/PatsEmu-CME設定為 (也就是沒有改變)
如果選用Multi-DB版本來規劃, 可以簡化為 (基於Future/Option的應用或架構方式可能不同, 還是規劃成兩個分流) URDS的設定(也就是把Option的部分簡化為一個)
PatsEmu-CME的設定(也就是把Option的部分簡化為一個)
Multi-DB版本的PatsEmu-CME提供 /GroupMap 參數(點連結直接參考)
所以, 針對Future與Option的GroupMap設定檔可以分別這樣設計
(PS: 由於LO有獨立抽出, 所以O_XNYM中不含LO商品, 於此例中只剩ON而已) 不同於之前的設置方式, 差異如表
同步的部分也能考慮改用UniDbf Merge Server (UniDbf-MS), 那麼只需執行一個UniDbf-MS 便能替代多個UniDbf-SB 不過舊的設置方式中, 每個分流的PatsEmu-CME要先透過/DbfId參數變更預設數據庫代碼0x0022成四個分別不同的代碼才能作為區別 新版的PatsEmu-CME支援FIX/SBE並相容舊的CME平台FIX/FAST, 新增Channel View可以查看所有Channel接收情形 新增FIX/SBE格式查看功能(rem是格式名稱,如果是偵測到新格式則是格式分析說明) 調整CME Filter的方式, 易於對照交易所提供之商品是否正確 新的URDS增加8,9,10三種新的接收方式 (可參考 URDS延伸參數說明 ) 其中模式9可以用來替代目前收FIX/FAST使用的模式6 新的SBE則用模式10設定來接收 由於URDS接收模式9,10為自行定義清單, 因此控制分流接收可以透過檔案內容設定不同清單, 也可用相同的完整清單設定透過 /Channel 參數作不同的分流設定 例如以目前的Future/Option兩個分流, 可以用一個完整的清單
那麼可以設定 Pars_10fut 內容為 /CfgFile URDS-ByList-SBE.cfg /Channel 310,312,314,316,318,382,386,384,360,320,340,346,342,344
Pars_10opt 內容為/CfgFile URDS-ByList-SBE.cfg /Channel 341,343,345,311,315,321,383,361
也可以用兩個分別的清單檔案來完成
那麼則設定清單檔案即可 Pars_10fut 內容為 /CfgFile URDS-ByList-SBEfut.cfg
Pars_10opt 內容為/CfgFile URDS-ByList-SBEopt.cfg MDP3.0新的Channel的資料與流量可以參考CME頁面: Data Directly from the Market Data Platform 擷取CME 2018-11-26的資料, 依頻寬使用狀態排序後的內容如下: 其他舊的相關文章: PatsEmu-CME的商品篩選設定方式 CME市場商品分析規劃 CME FAST/Template Decode |
多重數據庫( Multi-DB )說明
因為目前大多數應用都是單一數據庫, 所以感覺就是全部資料都收下來為何還需要設定, 而實際上DTS支援多重數據庫功能, 設定註冊碼時可以選擇其中部分所需的數據庫即可, 例如: 0x1001=CME,0x1002=CBOT 可註冊兩個數據庫, 同理視需求可以註冊更多, 前提是DTS上須有所要的數據庫提供, 先前只有陸股行情會以 0x0001 與 0x0002 同時提供上證(show2003.dbf)與深證(sjshq.dbf)兩個行情數據庫, 其他FTDC,PatsRaw/Emu等系列都只提供單一行情數據庫而已~ 現在 PatsRaw/Emu 也開始提供多重行情數據庫功能應用了! PatsRaw/Emu系列的Tag #1欄位, 為以交易所與商品代碼組成可作為全局性唯一的商品Key
使用多重數據庫模式時, 便是以Tag #1的 '|' 之後的商品來源作為群組識別碼, 若不啟用多重功能, 所有商品都會在原本的單一數據庫中, 該預設數據庫於多重功能啟動時其群組識別碼為 '$Default', 當有指定不同之DbfId來作為某群組識別碼的服務數據庫時, 符合的商品將被抽離預設數據庫而篩選到新的數據庫代碼中提供服務 圖中為PatsEmu-CME的設置範例, 透過參數 /GroupMap 指定設定檔 此案例中, 原本單一數據庫共有7927個商品行情, 將HW,CL,NG三組期貨抽離後只剩3789個 其中期貨HW本身就有3498個商品接近半數~ 下游的應用則可視需求給予註冊碼 只收CL商品 0x8100=輕原油
收CL和NG兩組商品 0x8100=CL輕原油,0x8200=NG天然氣
收其他未分群商品全部
0x0022=MyCME
將所有數據庫接收下 0x0022=A,0x8000=A0,0x8100=A1,0x8200=A2 前列註冊碼的示範 與熟悉的 0x0020=PATS 或 0x0021=RMDS 或 0x0022=CME 是同樣的意義 Code=Name 的 Code 是指上游的資料庫代碼 如 0x0020 , 0x0021
而Name的部分則是供讀取數據庫的應用端口可以識別的代碼, 依本身應用需求可自行任意命名 |
關於 類視頻/逐筆行情 之 設定
PatsEmu <-- UniDbf-TS 這一層 UniDbf-TS 如果設 /tick 代表一律逐筆 沒加則看在Server端的IP為何 127.*.*.* , 10.*.*.* , 192.168.*.* 都會自動變逐筆 所以想要啟動類視頻必須(以下兩條件同時成立) 1. 不要設 /tick 2. IP用前面說的那三段之外的其他IP 這樣的邏輯在於所有資訊源都希望是逐筆的, 但Internet上會自動預設開類視頻以節省頻寬增加即時性, 但如果是需求上是只能經過Internet時,仍想要逐筆,則透過/tick來達成設定確認 UniDbf-TS <-- TSHS 這一層 TSHS 預設都是逐筆的(並且與IP完全無關), 因為所有行情都會希望資料是一致性的 但如有特殊原因真的需要類視頻,則透過/notick的方式來達成設定確認 TSHS <-- TSHS-GW 這一層則是把完全相同,一模一樣的TSHS資料延伸到其他地點服務 所以不會有任何 類視頻/逐筆行情 的設定功能 PatsEmu 看連線的 User# 欄位, 有 '*' 號代表逐筆即時的Tick模式連線, 沒有'*'號則是類視頻省頻寬的行情即時模式 所以圖中 UniDbf-SB 設定的連線IP是 172.* 的方式, 但參數沒加 /tick 就會變成類視頻 UniDbf-SB上看連線 User# 欄位, 一樣由 '*' 就可知道 TSHS是逐筆Tick即時模式 但如果UniDbf-SB本身對上游就已經是設成跑類視頻的方式,那麼UniDbf-SB這層以下都會受影響 |
TSHS合流程式部署示意(for PATS Tags)
透過TSHS可結合不同的分流資訊甚至與不同來源的資訊作合流匯整 如下圖部署示意中產生兩種合流後的服務來源 (A)-TSHS 與 (B)-DTS
1. GMDS本身以DTS(DBF Transaction Server)服務為主作複製或延伸, 提供高效率資訊同步架構建置, DTS可想成是一個Multi Sheets EXCE Table的 Server/Client RTC同步架構, 可參考 DbfTS 2. 被合流的來源可為 PatsRaw 或 PatsEmu已支援之其他導入架構, 可參考 行情程式說明 3. TSHS (Tag Sream History Server), 具備跨平台Client應用, 採Tag編碼簡易協定作為通訊, 提供有效率的不漏不中斷之服務, 同時可滿足各種系統重啟或Recover的需求, 可參考 TSHS 5. 欄位Tag #1為統一的全域編碼Symbol, 也就是最後Client端處理數據時會看到的Key(SymbolName或ItemName) 6. 使用TSHS-UniDbf-PATS-OBG66作為DTS/TSHS服務轉換,以新的OBG 66格式取代舊的01格式,可提供完整的所有行情資訊欄位供應用 若使用舊版TSHS-UniDbf-PATS-OBG則只能傳遞原OBG格式能傳遞的資訊+已擴充的66格式欄位(未平倉,隱含買賣價1,2檔) 7. TSHS-UniDbf-PATS-OBG66於未使用Log的運作機制下,有狀態回補機制,故分流下無其他應用需求可選擇不使用Log 若各分流在每日特定時間點需留存一份完整資訊歷程Log,可透過新的參數指令完成即可, 參考 TSHS /Refresh 參數 8. 在設置TSHS連結DTS時使用的資料來源指定參數, 例如 /Data 0x0021=RMDS 其中的 'RMDS' 就是最後Client端處理數據時會看到的 DBName, 不同來源可以設定不同名稱作為識別, 也可以都用相同的名稱作統一代碼, 可視需求調整 9. 合流(B) 可提供 DbfTCdll.dll (DBF Transaction Client API) 建立對DTS的連線取得完整來源資訊, 可參考 DbfTC API連線範例 10. 合流(B) 可透過 fakePATS API模式, 可直接將現行的PATS's API行情程式移轉改連DTS取得資訊, 可參考 fakePATS API 基於原本的PATS's API行情程式應該都有代碼轉換與價格倍率調整功能, 大致上應該是調整設定即能完成轉移, 若原系統確實缺乏前述功能,可於fakePATS中加入對應功能調整,或於6.中進行代碼轉換另於合流(B)中作倍率調整設定. 此方式缺點為僅能透過原本PATS定義的報價結構獲取對應資訊, 來源所提供的其他實用數據欄位須透過一定的設計修改配合後才能應用 11. 合流(A) 可提供 PktEvCdll.dll (Packet Event Client API) 建立對TSHS的連線取得完整來源資訊, 可參考 PktEvC API連線範例 (OBG66格式) 12. 合流(A)中提供的是的RawData格式, 以此架構輸出的是 OBG66 格式, 參考 PktEvC API處理RawData 13. 另可於合流(B)上建置TSHS-UniDbf 提供 合流(C)-TSHS 之服務, 則同 11.合流(A)之服務輸出處理方式, 但輸出為TSHS的Tag-Stream格式 14. 以合流(B)再生源作為整流過的頂源DTS, 因有6.與10.的客製性功能, 這樣的架構可以讓不同資訊源的相同商品最後都提供統一相同的輸出 15. 第14.的說明也就是異源備源的可行性, 在經過一定的調整後確實可以在原PATS行情系統不用修改的狀態下, 完成以路透資訊源直接替代的目的 16. 不作代碼轉換, 單純合流再生的架構方式 |
第 1 個 - 第 10 個,共 40 個