搜尋主題、作者 收藏文章 想搜文章請善用右上角搜尋
會員註冊 [ 論壇規定說明 |  新手上路 ]
 用戶名稱:
 安全密碼:
     認證碼:
  程式交易討論 回專欄 程式交易討論
 查閱主題:談談 C#.NET 連結 DDE Server 的設計觀
9484 位閱讀者下一篇主題重新整理上一篇主題
 文章主題:談談 C#.NET 連結 DDE Server 的設計觀  本文章主題禁止回覆 將本主題加入我的最愛

kenming
 
發表時間 2008/11/19 16:54:25  
已有 136 人閱文此篇文章!

DDE (Dynamic Data Exchange)?,這似乎已經是微軟過時的一種通訊傳遞的技術了。 但是只要是跑券商提供的看盤交易應用軟體,諸如 永豐 e-leader, 元大 yeswin, 日

以上文章可能未完,若有圖或檔案亦隱藏

論壇舊檔無法閱文!!




在這刊登您的廣告


shensh
 
回覆時間 2008/11/19 20:00:27

有閱文 太神奇了,不知大大知道HTS有沒有江波圖的功能?可以很快的看出漲/平/跌家數.若沒有是否有用VBA+HTS DDE做出江波圖?




在這刊登您的廣告


kenming
 
回覆時間 2008/11/19 20:08:11

原文作者
以下引用由 shensh 在 2008/11/19 20:00:27 所發表的內容:
太神奇了,不知大大知道HTS有沒有江波圖的功能?可以很快的看出漲/平/跌家數.若沒有是否有用VBA+HTS DDE做出江波圖?

HTS/Yeswin 確定沒有 漲/平/跌家走勢圖,e-leader 是有這個功能。

若有分時的漲跌家數的 DDE 來源,HTS 不確定,但 Yeswin 有,那就可以透過 Excel 或者 自行寫程式來呈現這方面的走勢圖了。




在這刊登您的廣告


54dlabc
 
回覆時間 2008/11/20 09:02:40

有閱文 真是很深奧的學問,因為對程式交易一竅不通,也不會寫程式,更不懂怎麼應用。看一系列的解釋才有點了解。




在這刊登您的廣告


不解蓮華
 
回覆時間 2008/11/20 10:51:57

有閱文 大大是專業人士,這篇文章很有價值,
一般沒學過c#/vb 的朋友一定無法看懂,
總之,謝謝版大的實作心得..


反者道之動;
弱者道之用。
天下萬物生於有,
有生於無.



在這刊登您的廣告


roberthan
 
回覆時間 2008/11/20 11:35:09

有閱文 用VS2008測試了一下K大提供的NDDE連結中的Sample Project(C#)
確實是滿完整的範例,程式碼直接升級到.net framework 3.5沒問題
而且DDE Server端的每個Event都有範例,且都可自行實作code,滿方便的!

小弟不曾寫過抓取stock info的data source,還滿有興趣瞭解多一點...^^
滿嚮往自己設計自己專屬的看盤平台,以及程式交易...等等

恕我問個蠢問題,通常這些資料都從哪抓呀?

早期一些朋友都自己寫spider抓web page上的資料,可惜web page格式常常變動
或是可透過XML方式抓一些公開資訊嗎? 這方面是public的嗎?
或是有一些交易資訊機構的一些web services出來給我們reference? 或是券商本身就有提供?

看到您文中有講透過DDE抓e-leader的資料,我有裝e-Leader來用
不曉得是如何呼叫e-Leader DDE Server? 想先從 e-Leader 下手試試,願聞其詳 ^^


~生命中所有的事,都是有益於生命茁壯的事~



在這刊登您的廣告


kenming
 
回覆時間 2008/11/20 12:10:25

原文作者
以下引用由 roberthan 在 2008/11/20 11:35:09 所發表的內容:
用VS2008測試了一下K大提供的NDDE連結中的Sample Project(C#)
確實是滿完整的範例,程式碼直接升級到.net framework 3.5沒問題
而且DDE Server端的每個Event都有範例,且都可自行實作code,滿方便的!
小弟不曾寫過抓取stock info的data source,還滿有興趣瞭解多一點...^^
滿嚮往自己設計自己專屬的看盤平台,以及程式交 .....

沒您想像的那麼複雜。 ^^

DDE 的連結語法只有三種:

service : ex. "CADDE"  , e-lader 的 DDE Server 名稱
topic :   ex. "STOCK<Q>2330 " ,  e-leader 的主題名稱,通常是以股票代碼為名稱。
itme :   ex.  "VolAmount" , e-leader 的項目名稱。

要觀察這些代號很簡單,在 E-Leader 上就是針對每一個畫面,滑鼠右鍵選擇 DDE,就會自動複製到 Excel 上去,然後在 Excel 中,點選任一個格(Cell) ,就可以看到所貼上的 DDE 公式代碼。

一般在 Cell 上會看到如這樣:
 CADDE|'STOCK<Q>2330 '!VolAmount
 ^^^^^^^ ^^^^^^^^^^^^^^  ^^^^^^^^^^
 service  topic_name   item_name

一般券商的看盤軟體都是提供這樣的文件說明的。
要注意的是,字串格式絕對不能錯,例如 "STOCK<Q>2330 ",在程式中根本沒有 ' 單引號,而且編碼後面有兩個空格。 光這樣,我竟然試了好幾個小時,簡直是浪費時間。

我自己啦,是乾脆先寫一個很簡單的 DDE Server,模擬兩支股票(topic)的跳動(Tick),包括了如 "Open", "High", "Low", "Close", "Volume" 等這些 "item" 資料。 這樣的話,要用 Excel 或自行寫的 DDE Client 都很簡單可以測試的。




在這刊登您的廣告


kenming
 
回覆時間 2008/11/20 12:14:00

原文作者
以下引用由 不解蓮華 在 2008/11/20 10:51:57 所發表的內容:
大大是專業人士,這篇文章很有價值,
一般沒學過c#/vb 的朋友一定無法看懂,
總之,謝謝版大的實作心得..

用 .NET 的原因就是,新手非常容易上手的。 ^^
若再配合 Excel + .NET,稍微花個兩三個月的學習期,是很容易可以建立起自己的分析模型的。 :-)




在這刊登您的廣告


roberthan
 
回覆時間 2008/11/20 14:24:25

有閱文
以下引用由 kenming 在 2008/11/20 12:10:25 所發表的內容:

沒您想像的那麼複雜。 ^^
DDE 的連結語法只有三種:
service : ex. "CADDE"  , e-lader 的 DDE Server 名稱
topic :   ex. "STOCK<Q>2330 " ,  e-leader 的主題名稱,通常是以股票代碼為名稱。
itme :   ex.  " .....

感謝K大的教學,我找時間try看看
過一陣子有機會再上來跟大家分享 ^^

不過我有些問題.....
e-Leader盤中有時不穩(loading會飆高)
或盤後主機維護導致連不上,在做盤後分析會不方便
如果要從網路上擷取data source
有沒有比較直接的管道呢? 或是這些通常是要付費的?


~生命中所有的事,都是有益於生命茁壯的事~



在這刊登您的廣告


kenming
 
回覆時間 2008/11/20 15:13:51

原文作者
以下引用由 roberthan 在 2008/11/20 14:24:25 所發表的內容:

感謝K大的教學,我找時間try看看
過一陣子有機會再上來跟大家分享 ^^
不過我有些問題.....
e-Leader盤中有時不穩(loading會飆高)
或盤後主機維護導致連不上,在做盤後分析會不方便
如果要從網路上擷取data source
有沒有比較直接的管道呢? 或是這些通常是要付費的?

e-Leader 的效能的確不是很好,不過事實上,其它免費版的看盤軟體大部分都有這樣的問題存在的。 :)

盤後分析是另一回事喔, DDE 的連結是為了能擷取即時的報價資訊,而且要有一個基本的觀念,那與連線到盤商的 Server 是沒有關係的,DDE 的連結來源就是用戶端的看盤軟體,例如 E-Leader,它本身同時也是 DDE Server,所以 DDE 是否不穩,其實與連線無關。

盤後的分析,那已經是日線以上的格局了,對於此,我個人是買奇狐盤後版的軟體,主要有一個原因也就是為了能方便抓取盤後的資料來作分析的。




在這刊登您的廣告


kcy90u
 
回覆時間 2008/11/21 08:39:35

有閱文 這東西實在是太酷了
對於會寫程式的人真的還滿有幫助的
非常感寫大大分享




在這刊登您的廣告


idleidle
 
回覆時間 2008/11/22 13:55:13

有閱文 感謝樓主的分享
雖然我用不到了

我之前也想將DDE資料匯入C#做運算
後來發現網路上說.NET不支援DDE
我就放棄!!

不過我想了另1個方法,這方法還管用
分享給大家

即是「將Excel當做資料來源,程式定時轉成CSV格式,然後再運算」,
講白話一點就是直接去抓Excel的欄位,然後定時更新

架構大概如下
while 1
{
      讀取Excel,轉成CSV
      CSV匯入DataSet
      DataSet運算處理
      Sleep(n秒)
}

在來分析此架構優缺點

優點
1.方便處理(Excel拉一拉就好了,程式只負責運算,不太需要更動)
2.即時Debug容易

缺點
必需開啟Excel檔

剩下的請各位補充嘍!!




在這刊登您的廣告


kenming
 
回覆時間 2008/11/23 00:55:53

原文作者
以下引用由 idleidle 在 2008/11/22 13:55:13 所發表的內容:
即是「將Excel當做資料來源,程式定時轉成CSV格式,然後再運算」,
講白話一點就是直接去抓Excel的欄位,然後定時更新

Excel 內可以直接利用 VBA, C#/VB.NET 程式語言撰寫的,並不需要再另行匯出文字檔再去讀取,這樣算是多此一舉喔。 ^^




在這刊登您的廣告


idleidle
 
回覆時間 2008/11/24 19:56:22

有閱文
以下引用由 kenming 在 2008/11/23 00:55:53 所發表的內容:

Excel 內可以直接利用 VBA, C#/VB.NET 程式語言撰寫的,並不需要再另行匯出文字檔再去讀取,這樣算是多此一舉喔。 ^^

這麼說好了
原本就打算在.NET下寫成WinForm形式

開Excel只是為了解決資料來源的問題

在VBA寫程式實在不習慣~~效能也不理想~




在這刊登您的廣告


kenming
 
回覆時間 2008/11/25 00:35:45

原文作者
以下引用由 idleidle 在 2008/11/24 19:56:22 所發表的內容:

這麼說好了
原本就打算在.NET下寫成WinForm形式
開Excel只是為了解決資料來源的問題
在VBA寫程式實在不習慣~~效能也不理想~

如果是這樣的話,那就建議不要使用 Excel 了喔。 把 Excel 當資料源,反而不是一個好方法,建議直接利用 .NET DataSet 來設計,甚至可以達到 MemoryDB 高效能的機制呢;然後再定時備份到 Log 檔案,而能達成 "容錯(fault-tolerance)" 的效果。

若真的希望透過 Excel 來撰寫,其實 Excel 不一定只是利用 VBA 來寫程式而已,更可以利用 C#/VB.NET 等 OOP 語言來寫的。

資料源(Data Source) 這個問題,可正是 .NET 的強項呢。也正因如此,我才堅持使用 C# 來撰寫程式。 例如將 DataGridView Bind-to DataSource(DataSet, Container Data Object, XML ...) 等,相當的容易撰寫又好維護呢。 ^^




在這刊登您的廣告


tim901
 
回覆時間 2008/11/25 11:24:22

有閱文 想請問樓主
以下這幾個功能有什麼差別?
Execute
Request
Poke
Advise

我用 Request 就能取到資料了
可是 NDde 中的範例, 卻 Execute Request Poke Advise 全用上, 實在不解
能麻煩告知差別在哪嗎?

為什麼要 Execute command
DDE Server 我們不就是向其取資料而以嗎?




在這刊登您的廣告


nekko
 
回覆時間 2008/11/25 12:07:27

有閱文 請問一下版大,
DDE是動態資料連結, 是券商程式將傳輸資料外漏給使用者的一個介面,
小弟用Excel VBA 來寫, 但問題是往往反應速度不是那麼快,
尤其在速度盤出現時, 會跟不上,
用 C#.NTE 來寫的話, 速度會比較快嗎?
券商的程式也是用 DDE 來顯示資料嗎?
還是另有資料傳輸機制?
謝謝!


多多空空, 空空多多, 不多不空, 亦多亦空.



在這刊登您的廣告


alexhu7
 
回覆時間 2008/11/25 13:48:30

無閱文 不知樓主有沒遇過這樣的問題:

當使用多個DDEClient時,只有最後一次呼叫Advise的那個會自動更新,
前一個的事件都不會被驅動。

不知可否指導一下要怎樣同時連多個欄位?

謝謝




在這刊登您的廣告


kenming
 
回覆時間 2008/11/25 16:45:58

原文作者
以下引用由 tim901 在 2008/11/25 11:24:22 所發表的內容:
想請問樓主
以下這幾個功能有什麼差別?
Execute
Request
Poke
Advise
我用 Request 就能取到資料了
可是 NDde 中的範例, 卻 Execute Request Poke Advise 全用上, 實在不解
能麻煩告知差別在哪嗎?
為什麼要 Execute command
DDE Server 我們不就是向其取資料而以嗎?

Request: 從 DDE Server 要一次資料
Poke: 傳資料給 DDE Server
Advise: 持續要資料 (DDE Server 資料有變更,會通知 client 來取得變更的值)

對於 Stock 的 DDE 實作,只要實作 Advise 即可。




在這刊登您的廣告


kenming
 
回覆時間 2008/11/25 16:52:24

原文作者
以下引用由 nekko 在 2008/11/25 12:07:27 所發表的內容:
請問一下版大,
DDE是動態資料連結, 是券商程式將傳輸資料外漏給使用者的一個介面,
小弟用Excel VBA 來寫, 但問題是往往反應速度不是那麼快,
尤其在速度盤出現時, 會跟不上,
用 C#.NTE 來寫的話, 速度會比較快嗎?
券商的程式也是用 DDE 來顯示資料嗎?
還是另有資料傳輸機制?
謝謝!

1. 我個人使用 Excel 連結 DDE 看盤軟體(E-Leader),更新的數據都算蠻正常的,您所謂反應速度不及的話,不知道是否是處理上的問題還是...? 一般來說,若僅是抓取個 10 數個欄位的值,透過 Excel VBA 來處理,其實速度是不會慢的,除非像我這樣,每一次的 Tick(約一秒) 就會抓數百個欄位處理,那麼使用 VBA 在 Excel 的處理上,的確會慢了一些。 不過我在想可能是我不會寫作 VBA 的緣故。 !^^

2. DDE 的看盤軟體一般都是以 Visual C++ or Delphi 實作的,包括 DDE Server。 說實話,據我所知,在傳輸效能的設計上,還有很大的改進空間。 ^^




在這刊登您的廣告


kenming
 
回覆時間 2008/11/25 16:58:42

原文作者
以下引用由 alexhu7 在 2008/11/25 13:48:30 所發表的內容:
不知樓主有沒遇過這樣的問題:
當使用多個DDEClient時,只有最後一次呼叫Advise的那個會自動更新,
前一個的事件都不會被驅動。
不知可否指導一下要怎樣同時連多個欄位?
謝謝

一條 DDE 連線(Connection)的定義為 Service + Topic,然後透過一條連線,可以同時 "Advise" 多個 Item。

在 DDE Client 的實作上,必須 implement "Advise" 的 Event 實作,才能持續取得所屬 Item 的值(Value)。

最近我會釋出 FreeSource 的 DDE Server(簡單模擬股票開盤價等) and DDE Client(可以同時連結多個 DDE Server,當然就包括多個 Item)。 屆時也可以當作連結的範本來自行參考實作。 ^^




在這刊登您的廣告

本文章主題共有 2 頁: 1 2  回上一頁

回頁首 回頁首

聚財資訊股份有限公司 版權所有© wearn.com All Rights Reserved. TEL:02-82287755 商城客服時間:台北週一至週五9:00~12:00、13:00~18:00 [ 聯絡客服 ]