DDE測試專頁

幾個已知的問題先跟各位報告
1.) 5分鐘到60分鐘線的周期在設計上有瑕疵。這個部份需要改到資料庫,為了不影響已在服役中的AC版本,這個錯誤會稍後修正。
2.) 記憶體控制不佳
3.) DDE連線偵測要吃少許CPU

回報整裡:
DDE伺服器 支援 備注
台証大三元 O
台証全球通 O 需要修補時間
康和e閃電 O
康和全都賺 O
元大EasyWin O
元大YesWin X 好像不行
永豐e-Leader O 需要修補時間
富邦E01 O
群益策略王 ? 沒人測,也不建議用
太平洋幸運星 X 沒有DDE
下載最新設定檔AC-DDE.xml (不定期更新)

再來我依四個部份向各位解說怎麼開始玩弄它...最後請不要忘了將DDE的設定分享給我~3Q
1.) DDE伺服器設定
2.) DDE外掛設定畫面
3.) 報價測試
4.) DLL連結(下單大師)


1.) DDE伺服器設定

我們先找到DDE外掛的設定檔AC-DDE.xml


將這個設定檔用編輯器(記事本、UltraEdit、EditPlus..)開啟。
這個xml的檔案是一個巢狀結構的標籤式語言,每個標籤都是被另一個標籤包覆住的。基本上我們只要會複製、貼上、修改,就足夠了
我們直接從一個範例來解說,以下是一段DDE伺服器的設定內容


以下是各各標籤的說明:
DDE 一個DDE伺服器的標籤。ID是這個伺服器的名稱。SERVICE是這個DDE所以提供的服務代號。
CONNRULE 一個連線規則的標籤。ID是這個規則的名稱。TOPIC是這個服務代號所提供的連線主題,如果有需要也可以組合DDE代碼。tryConnItem是DDE外掛用來測試連線用的(即DDE外掛畫面上的燈號)。
ITEMRULE 一個欄位規則的標籤。ID是這個規則的名稱。prefix是用來轉換AC代碼與DDE代碼,群組更新會用到。rule是說明DDE代碼跟欄位怎麼組合。
DATE、NAME... DDE資料欄位。在DATE與TIME的時間欄位必須加入fmt,說明時間的格式。item即為該欄位的代號。
最後一個資料欄位 在大三元裡是TVOL(單筆成交量)。當外掛程式收到最後一個欄位的資料時,就認定已經接收了一筆完整的數據,便會發起一次資料更新。所以說最後一個欄位與該DDE伺服器傳送資料的順序有關連,我們可以在外掛裡觀察欄位回傳的順序再進行調整。

再來我們看一下怎麼將正確的欄位設定進去。以台証的看盤軟體大三元為例,通常都會有一頁設定,特別講述DDE的(我暫時抓不到畫面,之後再補上)。

一個大三元DDE連線的表示式大致如下:
TS|KS!TXFD1.123
對應成中文就是:
服務代號|連線主題!標的代碼.資料欄位代號

在Excel裡,這個表示式就藏在每個欄位裡,所以那些欄位的數據才會跳動...

請你先找出上述的這些欄位,再將它設定到AC-DDE.xml裡。

如果你發現"標的代碼"是跟連線主題綁在一起,也可以寫成TOPIC="KS.{symbol}"。請參考AC-DDE.xml,全球通就屬這一類。

不知道怎麼設定的話也可以把欄位寄給我,我設定好再寄給你。

2.) DDE外掛設定畫面

先把你的DDE伺服器打開(即看盤軟體),再開啟AC,再開啟外掛的DDE設定畫面(DDE其實已經在背景運作了,DDE視窗的開關都不影響其運作)。


如果你前一章節設定了新的DDE伺服器,此時便會看到他出現在畫面上,如果該伺服器能夠連線成功,就會出現綠燈,像是下面的全球通。(本來要用大三元當範例的,沒想它今天伺服器維修中...)

"更新設定"的上半部為群組更新,下半部為單獨更新。
此時你已經可以新增符號了,在下半部填寫"問號"的部份,之後按下新增就可新增一個更新設定。
AC符號可以自己定,DDE符號則要對應到券商DDE軟體的符號

在該行設定前的"啟動"打勾,便可以開始更新資料了,但在此之前我們還要做一些數據儲存的相關設定。

上半部是為了處理一些時間欄位的問題,像是全球通沒有時間欄位,我就必須在這裡特別指定。
下半部是數據儲存的刻度,現在系統提供將數據存成"分"或"日"的刻度,tick的部份需要再行測試後才開放。新增的符號請記得要設定,不然數據就會向水一樣流走。


如果有更新的項目就會在該伺服器的連線畫面出現。


測試時可以先開啟"資料訊息"再啟用更新設定,方便檢查資料的正確性與順序。前一個章節有提到"最後一個欄位",在這裡就看得出來。如果設錯了請修改xml後再重新啟動AC。



3.) 報價測試

先啟動更新項目 : 在DDE設定啟動群組更新的"台灣上市櫃股票"。(請記得要允許寫入資料庫,並關閉資料訊息)
在任一個"虛擬桌面"上,載入"即時看盤"的佈局。這個即時盤訊的腳本會列出單筆百張交易的股票(類似財經台右下方的報價)。


要切換圖格周期,可以在圖格上點選滑鼠右鍵叫出選單。

大致上操控就是這樣...還要玩些什麼就看各位的需求跟想像力了...

補圖:



4.) DLL連結(下單大師)

要自己寫腳本,沒興趣的可以跳過這個部份。

這裡以下單大師的DLL為例,以下是宣告的範例。
dll myDll = "C:\\Program Files (x86)\\OrderMaster\\OMSignAPI";
myDll.regFunc(TYPE_BOOL, "IniDllAndPosition", TYPE_STRING, TYPE_INT);
myDll.regFunc(TYPE_BOOL, "GoOrder", TYPE_STRING, TYPE_STRING, TYPE_STRING, TYPE_INT, TYPE_FLOAT);
myDll.regFunc(TYPE_INT, "GetNowPosition", TYPE_STRING);

以下是呼叫的範例。
myDll.IniDllAndPosition("symbol", 0);
dbgOpen();
dbgPrint("回傳 : " + myDll.GetNowPosition("symbol"));

DLL的宣告與呼叫要細心~因為一旦錯誤~AC會整個掛掉~
不過也沒什麼好擔心~重新開啟一次就好了...
更多iScript的問題可以看本部落格的教學或直接請教我。

AC系統僅供為一多功能之開發平台!任何數據與交易的部份使用者都當自行負責!

本人僅以個人知識經驗分享,多所無知,難免有錯,還請見諒。