jerrywang168 發表於 13-3-18 13:58

分享如何寫自製C#下單程式?

本帖最後由 jerrywang168 於 13-3-18 14:23 編輯

先感謝版上之前多位大大的分享
先廢話一些

之前本想用MC8+xDDE來下單
但是發現訊號源送到xDDE後再送到MC8還是慢一點點
(這一點點在快市時差很多點)

又想到之前用奇狐時請教過台灣代理商
他們說會有點慢是因為每個Tick系統都要從第一BAR從算一次
(MC有較好作法來自動判定是否需從第一BAR算

經過自己改其他大大的DDE程式後 決定自己來客製化

首先
修改M大釋出的xDDE+K大的nDDE Client程式
把其中的顯示目前TICK資訊的DATAGRID DISABLE(減少系統LOADING LAG)
再感謝D大的提醒
經過測試後發現可以完整接收EWINNER的即時DDE TICK資料
但是和期交所比較差很多(但是可以用了)



jerrywang168 發表於 13-3-18 14:08

再來就是建立自己的K棒系統
因為是完全依自己需要打造
要求的是效能第一
所需要的指標 資訊源資料 也只接收所需的
因此在設計上就犧牲可攜性和擴充性(指對其他人使用時考量)

因為個人認為每當TICK進入系統就重算系統一次 太慢了
也是快市時的最大問題
反正我的策略也是以NEXT BAR OPEN來下單(停損停利除外)
那K棒的指標值就不用在當根K棒在跳動時一直重新計算

同時因為計算時所需的K棒數心理也有底 所以就建立了約1500數值的ARRAY來放K棒
(當然這是可改變的)
當K棒時間是新的分鐘時(以一分K為例)就計算前一K棒的指標值(只有此時計算一次)
再判定是否需要執行下單策略



jerrywang168 發表於 13-3-18 14:23

jerrywang168 發表於 13-3-18 14:08 static/image/common/back.gif
再來就是建立自己的K棒系統
因為是完全依自己需要打造
要求的是效能第一


關於指標計算方式

採用類似MC 的POWERLANGUAGE 語言來開發
也就是自己的指標先從奇狐轉為MC的POWERLANGUAGE
這樣就有了比較自己開發程式指標計算值是否有誤的基準

為什麼不直接用奇狐呢 主要是因為奇狐內部有部份的函式
他只有使用方式 沒有細部實作可參考
但是MC的PL 有附很多的函式實作

比如計算MOVING AVERAGE
他就有寫出如何實作

但是看他函式就知道也是一樣從n根K棒之前開始重算
所以就針對他的計算方式 另外儲存所需資料
(用空間換時間 雖然只是不到1/1000秒 但是當TICK很多時 累計的時間是很多的
因為測試過即使每秒1000TICKS 目前的系統經過很多運算還是可以輕鬆達成
因為如果計算簡單的1000K的MA就要花點時間了)

如此就不用在FOR LOOP 中去運算了
舉例來說
計算10MA 標準算法是每個TICK都從前十K開始往目前的K棒去運算
總共是一個LOOP 十次運算
但是用空間來換時間就只要在前一K棒記住當時的前十K的總合
這一根K棒就把前十K的總合+目前的K棒收盤值 - 第11K的K棒收盤值 = 這根K棒的前十K的總合
這樣就是少了一個LOOP
在演算法學LOOP是很浪費的

個人經驗不論指標複雜度 大多在MC中的PL可以找到你所需的部份
再加以修改整合 應該都可以整合到這自制的系統




jerrywang168 發表於 13-3-18 14:32

jerrywang168 發表於 13-3-18 14:23 static/image/common/back.gif
關於指標計算方式

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


之後進行策略運算判定

有了K棒 有了指標
再加上其他所需資訊(這點個人認為和MC 奇狐就差很多了)
比如有人要算預估量 委買賣
就可以用簡單的IF ELSE SWITCH等來依你的需要判定了

當你有了策略結果當然就是執行下單了
網上也有很多參考資料(再次感謝其他網上GOOGLE到的大大分享)
很簡單的一試就連上期貨商了
(用C#比較麻煩一點點 找了較多資料 但是一試就OK)

目前還沒實作的是分析帳戶上有的倉位
就是依API去期貨商讀取倉位再分析
(因為有要其他大大分享多執行緒 才能再實作)

(主要是因為好像下單大師網站不見了 只剩原來部落格)


kidbaby 發表於 13-3-18 14:39

雖然您很用心

可是....你來市場應該不是來寫程式的..

我建議你還是多放點心思在策略....真的

因為我是過來人阿....

jerrywang168 發表於 13-3-18 14:50

kidbaby 發表於 13-3-18 14:39 static/image/common/back.gif
雖然您很用心

可是....你來市場應該不是來寫程式的..


感謝您的分享

策略部份小弟已經實作了(勝率不是超高 但是可接受)
只是需要處理下單時避免被BLOCK LAG

可否請您指點
可以請教您如何在主程式(接收訊號再進行運算後)
另外一THREAD來處理下單和倉位問題
(C# C++ JAVA 能處理多執行緒地語言都可)

因為對Multi-Threading 不是很熟練
只會改程式來運用


kidbaby 發表於 13-3-18 15:45


請問你這個模組能夠回測嗎?

你有想過這麼複雜可以快多少? 0.5 sec ?

我之前寫過自己運算 parse 語法

之前compiler 沒學好寫起來真的很彆扭

但是在怎麼寫會比行之有年的 easy language 好?

自己寫會debug到死= ="

可能真的是我功力不足吧...   

但是後來我想通了...   

人的時間有限應該把時間花在應該花的地方

就這樣子過來人的一點點心得

眼到手到哥 發表於 13-3-18 17:37

kidbaby 發表於 13-3-18 15:45 static/image/common/back.gif
請問你這個模組能夠回測嗎?

你有想過這麼複雜可以快多少? 0.5 sec ?


給你一個讚~~

我也寫過自己的夢幻程式~ 用c#開三個執行緒,
一個接價, 一個運算, 一個畫圖,
接來的價格放到Queue裡面再取出來,
訊號來源是群益API, 挺不賴的, 不掉Tick,
可是問題來了~~~
這...這... 這... 和賺錢沒關係...
寫得再好也無助於心態的成長, 也無助於下單經驗的提升,
說白點, 就是有些鴕鳥, 活在自己的幻想世界中...

{:4_210:}

wldtw2008 發表於 13-3-18 18:35

哀~ 想害一個人,就教他從輪子造起打造下單平台!

您如果想追求速度,那C#肯定不行啦,用VC++啦(但這個火坑又更痛苦了)

balance 發表於 13-3-18 19:45

這裡還真是高手如雲。。。

不過前人說的很好,還是集中在策略。英文有句話,叫做 'reinvent the wheels'.
輪子早就發明了,為什麼還要在自己發明??

現有的平台太多了,當然都有他的問題,但是,你有把握會做的比他好嘛?
如果你覺得是策略語言問題,綁手綁腳,非得用C/VC++/C#, 那就選 MC。net 或是 Ninjatrader. (一定有其他的,但是我只熟這兩個。。)

jerrywang168 發表於 13-3-18 19:59

kidbaby 發表於 13-3-18 15:45 static/image/common/back.gif
請問你這個模組能夠回測嗎?

你有想過這麼複雜可以快多少? 0.5 sec ?


1.回測的話是不需要的
因為我前面提過我用MC來作這部份

我的系統因為完全只給我自己用 所以要回測也不是難事只是給我自己看

2.快0.5秒就差非常多了
因為現在的快市差0.1秒就可能50TICK不見了
再加上下單就差很多了

為什麼要用自己的系統是因為怕萬一
我也知大多情形下都沒問題MC可能很簡單的開發
但是我用的策略實在是要應付那萬一被停損時用的

3.至於策略能不能獲利我自己清楚這是最重要的
   謝謝您了



jerrywang168 發表於 13-3-18 20:01

眼到手到哥 發表於 13-3-18 17:37 static/image/common/back.gif
給你一個讚~~

我也寫過自己的夢幻程式~ 用c#開三個執行緒,


可否請大大願意分享您的程式如何同時開三個THREAD且不影響效能

感謝


jerrywang168 發表於 13-3-18 20:04

wldtw2008 發表於 13-3-18 18:35 static/image/common/back.gif
哀~ 想害一個人,就教他從輪子造起打造下單平台!

您如果想追求速度,那C#肯定不行啦,用VC++啦(但這個火 ...

W大 謝謝您分享很多好用的東西

我是用目前的系統測過了
一秒處理所有指標加NDDE接收可以上百個TICK沒問題的
這樣就夠我用了
因為只接收一個台指

如果W大您願意分享VC++的源碼如何處理多執行緒
就是同時能接收 處理指標 畫圖就好了

我也可改用VC++

因為說實在的小弟程式功力不佳 但是改寫功力還可以
要我寫很標準很棒的程式可能不如各位
但是寫可以用效能可用的應該還OK


jerrywang168 發表於 13-3-18 20:09

balance 發表於 13-3-18 19:45 static/image/common/back.gif
這裡還真是高手如雲。。。

不過前人說的很好,還是集中在策略。英文有句話,叫做 'reinvent the wheels'....

b大謝謝您

前面我提過了我的系統只給我自己用 所以我不用考慮很多MC能作的功能
比如K大說的回測 複雜的程式語言等等問題

所有的指標我只是依我在奇狐或是MC上改寫好的原封不動改到我自己的系統
經過轉換幾個指標後 越來越順手了 只是也差不多都改好了

因為我實測MC+xDDE雖然沒漏TICK 但是收TICK還是慢了一點點
這不是我要的 加上我同時參考十幾個指標 所以效能上有點要求
所以只好自己動手作

薛豹 發表於 13-3-18 20:41

大家何妨鼓勵鼓勵開版大從新打造交易系統的精神
也許是燕雀焉知鴻鵠之志

頁: [1] 2 3 4 5
查看完整版本: 分享如何寫自製C#下單程式?