2010年2月21日 星期日

DDE server for Stock

  1. 有在做程式交易的人應該對DDE(Dynamic Data Exchange)不陌生, 這是 "微軟" 為了做資料交換所做的傳輸模式,透過server hanlde 我們所需的要求,減少在PC端所需要的運算量.從微軟官方的角度,制訂了 DDEML (Dynamic Data Exchange Management Library) 的規格,是 Windows 32-bit 的 APIs(Application Programming Interfaces),是被實作在 "User32.DLL".
  2. http://en.wikipedia.org/wiki/Windows_library_files
  3. 最為大家所熟知的,就是透過DDE跟Excel相連,在Excel內部做進出場判斷,等策略決定後,再回傳給DDE做下單的動作. 其實上網google就一堆API的範例了... http://www.programtrading.tw/viewtopic.php?t=36 http://ssdkchang.blogspot.com/2009/09/ts.html 其實一般卷商的看盤軟體都有支援DDE的報價,這邊我們是用富邦證卷所提供的報價機,在藉由perl access DDE的方式.抓取我們所需要的"時間", "股票名稱", "量", "價"....畢竟還要去parse Excel有點不符合效率....
  4. 請先安裝 "Win32 DDE client" model,因為這不是 cpan裡的model請在 command line底下鍵入 % ppm repo add bribes % ppm install Win32-DDE 請參考 http://www.mail-archive.com/perl-win32-users@listserv.activestate.com/msg38134.html http://www.bribes.org/perl/win32ddeclient.html PS: 確保安裝完全,可鍵入 % perl -e 'use Win32::DDE::Client;'
  5. sample code use Win32::DDE::Client; use Win32::DDE; $Client = new Win32::DDE::Client ($MySerNm, $MyHostNm); die "Unable to initiate conversation" if $Client->Error; defined ($StockNmPtr = $Client->Request ($StockNm)) die "DDE request Name failed"; 這邊我們有紅色的地方是我們要填入的欄位參數,分別為 $MySerNm, $MyHostNm, $StockNm, 以我們富邦DDE報價機的範例,假設我們要查2330.TW台積電的"量","價" XQFAP::Quote::{2330.TW-Name} //抓2330.TW 的名稱 XQFAP::Quote::{2330.TW-Price} //抓2330.TW的成交價 XQFAP::Quote::{2330.TW-TotalVolume} //抓今日的總成交量 藉由這些範例我們可以得知我們要填入的欄位 $MySerNm = 'XQFAP'; $MyHostNm = 'Quote'; $StockNm = '2330.TW-Name'; 以此類推可以得到 "價", "量", "內外盤比" .... 在之後會 討論進出場理論跟判斷原則.......

沒有留言:

張貼留言