COCO研究院

 找回密碼
 註冊
搜索
樓主: jerrywang168

[其他程式語言] 分享如何寫自製C#下單程式?

  [複製鏈接]
 樓主| 發表於 13-3-18 20:57 | 顯示全部樓層
薛豹 發表於 13-3-18 20:41
大家何妨鼓勵鼓勵開版大從新打造交易系統的精神
也許是燕雀焉知鴻鵠之志

謝謝支持

其他幾位大大也是好心提醒

我謝這篇也是希望有大大能指點我如何處理多執行緒問題

也讓其他使用AB OR MC等大大如覺得不是很好用想自己動手作能試看看


發表於 13-3-18 22:59 | 顯示全部樓層
C#的MULTI THREADING 的範例很多,我相信您很容易就可以找到一堆。他的關鍵也不過就是在各執行緒間如何分享變數,在C#中已經有很多方法,如事件、委派、LOCK 等等可以作到。坦白講C#把很多事情都變得非常簡單,照理說您如果已經能畫出K線、策略、下單,沒道理還不會MULTI THREADING的。

要寫個下單機、策略、畫K線,都不是難事,在技術面上,我覺得部位的監控(同步)、與執行的速度會是很大的挑戰,在心態面上則是自己辛苦寫了半天的東西其實外面早就有,甚至最嘔的是自己寫的還是輸給他們。說實話,您在MC等平台上遇過的、想過的問題,早就很多人遇過、想過(我不相信您的需求能獨立於萬千程式交易者之外)。多去觀察、請教他們後來是怎麼解決的吧,能用外交手段解決就不要用軍事手段解決。

我還是建議您從下單機著手,下單機很單純,CP值也很高,如果您的下單機比別人快0.1秒,那就真正比別人早搶到銀子,指標K線畫圖那些東西慢慢再補吧,畫的比別人快也沒用,又不是要賣軟體。

評分

參與人數 3金錢 +5 收起 理由
googleandy + 2 按一個讚
tedwang + 1 按一個讚
solo + 2 中肯

查看全部評分

 樓主| 發表於 13-3-18 23:21 | 顯示全部樓層
W大謝謝您 坦白講我主要的需求就是另外開一THREAD來處理下單部份
您太強了
因為我基本上是不需要畫圖 如能畫圖我就可以了解怎樣處理部位

我目前作法是當處理完策略後 就直接下單(應該比其他方式還快吧 因為只有一個THREAD)
部位就直接處理
可是因為我對MULTITTHREADING不熟 不知怎樣在各THREAD
間傳遞資料會有最佳效果
或是能像下單大師一樣用自己寫一API呼叫自制的下單機就好了

這部份我還不熟
所以想了解該如何下手

主要我目前只有單一THREAD 除了NDDE應該是自己產生一THREAD外

發表於 13-3-18 23:26 | 顯示全部樓層
jerrywang168 發表於 13-3-18 20:01
可否請大大願意分享您的程式如何同時開三個THREAD且不影響效能

感謝

就開三個Thread就好啦~~~
你愛開四個也行阿~~
現在的電腦都是好幾核心的, 效能不是問題滴
如果用單執行緒跑, 遇到快市~~
發表於 13-3-18 23:31 | 顯示全部樓層
jerrywang168 發表於 13-3-18 23:21
W大謝謝您 坦白講我主要的需求就是另外開一THREAD來處理下單部份
您太強了
因為我基本上是不需要畫圖 如能 ...

畫圖我是用Dundas, 不過....
您忙了那麼多....  何不直接用MC就好了呢??
說實話, 除非真的沒辦法, 或者現成軟體做不到,
不然我實在不建議把心思花在這裡~~



 樓主| 發表於 13-3-18 23:34 | 顯示全部樓層
請教各位高手大大

1.我用另一個THREAD來處理下單部份的問題 和我另外寫一個下單機和主程式間用DLL (像下單大師那樣)來下單

那一個的效能可能較好


2.如果是用另一THREAD的方法怎樣在THREAD之間傳遞資訊較佳
比如避免資料的鎖住或互相衝突問題
感恩
發表於 13-3-18 23:36 | 顯示全部樓層
wldtw2008 發表於 13-3-18 22:59
C#的MULTI THREADING 的範例很多,我相信您很容易就可以找到一堆。他的關鍵也不過就是在各執行緒間如何分享 ...

是阿是阿~~
最簡單的方法就是建立一個Class, 把要共用的變數放到裡面, 記得要宣告成Ststic,
還有接到東西後, 建議用Queue
其他的....  就要別的高手來補充了~~ @_@

發表於 13-3-18 23:43 | 顯示全部樓層
jerrywang168 發表於 13-3-18 14:23
關於指標計算方式

採用類似MC 的POWERLANGUAGE 語言來開發

ninjatrader也有很多指標庫是C#的.
發表於 13-3-18 23:47 | 顯示全部樓層
jerrywang168 發表於 13-3-18 23:34
請教各位高手大大

1.我用另一個THREAD來處理下單部份的問題 和我另外寫一個下單機和主程式間用DLL (像下單 ...

我也不是很懂~~
我想~~ 寫在一個程式裡就不用把下單資訊另存成檔案再由別的程式讀進來下單,
所以寫成一個應該比較好, 出錯的機會應該也相對較少,
市面上的下單機應該都是讀RAMDISC裡面的文字檔來下單, 我沒用過....
所以也無從評論....
 樓主| 發表於 13-3-19 00:05 | 顯示全部樓層
眼到手到哥 發表於 13-3-18 23:31
畫圖我是用Dundas, 不過....
您忙了那麼多....  何不直接用MC就好了呢??
說實話, 除非真的沒辦法, 或者現 ...

大大我提到不用MC是因為我用接收xDDE接收TICK基本上是有收到
但是在快市時收到的TICK就會漏一些 而且會慢一點 所以產生的TICK BAR就有誤差
(我還沒用上全部的指標)

我個人感覺是因為xDDE傳來時有慢一點點加上MC接收又慢一點點產生

我自己收到的TICK再去和點金靈比就比較接近了

所以才會自己來作

也希望大大您能願意多指點該如何處理多執行緒時資料傳播問題


 樓主| 發表於 13-3-19 00:12 | 顯示全部樓層
TrendRover 發表於 13-3-18 23:43
ninjatrader也有很多指標庫是C#的.

T大基本上指標庫用那一種語言對我是沒差的
因為基本上我都看的懂怎樣寫
加上測試後就可確認我寫的對不對

說實話我改寫了我需要的指標
最主要都是在處理平均值而已(所以我都用我前面提到的方式來處理)
除了其中在處理求最高最低值時遇到有出界狀況時用LOOP來處理外
剩下的即使是求標準差我也都改成用前面方法來求解
就是為了避免LOOP太慢

無論如何 還是感謝您


發表於 13-3-19 00:19 | 顯示全部樓層
本帖最後由 眼到手到哥 於 13-3-19 00:23 編輯
jerrywang168 發表於 13-3-19 00:05
大大我提到不用MC是因為我用接收xDDE接收TICK基本上是有收到
但是在快市時收到的TICK就會漏一些 而且會慢 ...

基本上, 用DDE快市是一定會漏Tick的, 這受限於DDE本身的傳輸規格,
多執行緒很多範例, 重點是接價後, 我接到價格後就直接丟到Queue,
這是避免快市超過電腦的處理的能力, 再由Queue取出,
丟到共用Class的Static變數內, 這樣子不管哪個Thread要用,
就直接去抓就行了~~ 應該很清楚了吧~~  

不過忘了補充~~ 我早已不用了, 因為最簡單的東西才是最有用的,
我現在是用Excel做看盤軟體, DDE沒有給的數據, 就自己寫一個小軟體抓螢幕,
然後OCR成數字, 簡簡單單的就超級超級好用



評分

參與人數 1金錢 +2 收起 理由
你就吹吧 + 2 我也只用excel...還是2003...

查看全部評分

 樓主| 發表於 13-3-19 00:22 | 顯示全部樓層
眼到手到哥 發表於 13-3-18 23:36
是阿是阿~~
最簡單的方法就是建立一個Class, 把要共用的變數放到裡面, 記得要宣告成Ststic,
還有接到東 ...

大大您好

我目前作法是沒有用QUEUE
我是直接收到TICK資料後馬上處理
為什麼這樣作
主要是我不是很了解怎樣用QUEUE
1. 因為我不知怎樣另開一THREAD來有效處理QUEUE(這是主要原因)
    因為不知該用何方式來確認QUEUE有資料進來要處理
    用NOTIFY 還是TIMER 還是有其他方式來通知另一THREAD有資料進來
    我這部份真的不熟悉了
    因為我這些東東在當年學時還沒有後來也沒進一步學了
    可是如果您願意指點 我看一下改一改應該也會了 感謝
2.加上我收到TICK後除非遇到滿足新K棒要求才計算指標值 再執行策略 不然原則上就只是改K棒的開高低收而已
   也不用REDRAW (因為圖形輸出我基本上是不需要)
3.我既然用2.效能OK 我想另開一QUEUE 還需要建立一堆CLASS 的過程
   還要等待通知 所以就決定寫在一起了

很希望各位能多指點

發表於 13-3-19 00:45 | 顯示全部樓層
jerrywang168堅持下去。
這就跟自行創業一樣,有人看好有人看衰。
小弟為何自己寫Tradingbot交易平台公開即時交易,並寫回測系統,因為TS或MC等,都沒法撰寫個人熟悉的signal processing 和 pattern recognition等程式,且個人不相信技術分析方法。
又因為是用自行撰寫的策略平台,所以回測也一併開發,因為TS和MC的回測有其限制,如:用期貨指數來回測選擇權商品就無法做到。更何況回測樣本資料的均勻化等資料前置處理,都是Machine learning的相關知識。
也許,這樣一路走來,程式交易沒法賺到錢,但是整個過程你學到了相關經驗。這經驗可能可以應用到其他領域上。
共勉之~
 樓主| 發表於 13-3-19 02:06 | 顯示全部樓層
我自己用NDDE內建的SAMPLE SERVER來測試
每秒約可產生Random 2000 Tick(即使不用RANDOM產生結果也是一樣 可能是系統本身極限吧)
連線到我的程式
來處理K 棒 指標後 再判定訊號
一樣可以在一秒內處理2000 Tick
而且沒有漏資料

但是我目前是不知該如何用另一THREAD 有效又安全的處理下單部份
(現階段是用同一THREAD 直接處理 因為即使在快市也不會超過500TICKS)

經之前D大提醒 不用單機不用改NDDE
會接收太少TICK 原則上應該是看盤軟體公司端就有差才會這樣
不然用這方法接收的TICKS應該和看盤軟體接收的一樣多才對

只是好像用xDDE+MC8 在MC8接收後就會有LAG
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-22 11:21

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |