COCO研究院

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

[API] 群益API 2.13.5 C#實作

  [複製鏈接]
發表於 17-8-4 23:20 | 顯示全部樓層
chang91348 發表於 17-8-2 18:36
又來麻煩版主了,不好意思,因為學C#才幾個月的時間,對於物件導向訊息傳遞還不太清楚,我先說明我對於 ...

在OSQuote事件裡面當你的下單條件到達後, 呼叫SendOverSeaFutureOrder.


如果您程式不熟, 在SendOverSeaFutureOrder程式中不要去下單, 丟訊息出來看就好. 否則...嘿嘿嘿....錢錢拿來花.


發表於 17-8-6 16:14 | 顯示全部樓層
感謝分享, 很實用, 謝謝!!!
發表於 17-8-6 22:12 | 顯示全部樓層
本帖最後由 chang91348 於 17-8-6 22:15 編輯

      謝謝版主和先進的回覆,因為不是科班出身,所以都是買書以及網路拼湊出來程式,經由網路google 的結果,得到一個複雜的結果,還請各位指教...
  
      經由檢視程式碼後,海期下單原本一開始以為是從 OverseaFutureOrderControl下單,可是卻是在skOrder下有一個事件
        private void overseaFutureOrderControl1_OnOverseaFutureOrderSignal(string strLogInID, bool bAsyncOrder, OVERSEAFUTUREORDER pStock)
        {
            string strMessage = "";
            m_nCode = m_pSKOrder.SendOverseaFutureOrder(strLogInID, bAsyncOrder, pStock, out strMessage);
            WriteMessage("海期委託:" + strMessage);
            SendReturnMessage("Order", m_nCode, "SendOverseaFutureOrder");
        }

     似乎是海期下單後,在skOrder接受到訊息在此用SendOverseaFutureOrder下單的; 所以我在SKOSQuote 內新增了
    public Form1 Mainform();

然後在 Form1 內
    skosQuote1.Mainform=this;
   //再自設一段程式碼
        public void SendOFOrder(string strLogInID, bool bAsyncOrder, OVERSEAFUTUREORDER pStock)
        {
            skOrder1.SendOFOrder(strLogInID, bAsyncOrder, pStock);
        }

而 SKOrder 內則定義 SendOFOrder如下(其實就是overseaFutureOrderControl1_OnOverseaFutureOrderSignal事件的程式碼)
        public void SendOFOrder(string strLogInID, bool bAsyncOrder, OVERSEAFUTUREORDER pStock)
        {
            string strMessage = "";
            m_nCode = m_pSKOrder.SendOverseaFutureOrder(strLogInID, bAsyncOrder, pStock, out strMessage);
            WriteMessage("海期委託:" + strMessage);
            SendReturnMessage("Order", m_nCode, "SendOverseaFutureOrder");
        }

     在SKOSQuote 內運算達到條件時,則呼叫
   Mainform.SendOFOrder(ID,Yes,OSOrder);

     請教諸位,這樣的程式碼可行嗎?
 樓主| 發表於 17-8-7 19:16 | 顯示全部樓層
應該可行

不過我想你這行可能是Typo
public Form1 Mainform();  ===> public Form1 Mainform;
另外在呼叫SendOFOrder()時, 你會提供適當的參數;
發表於 17-8-7 22:29 | 顯示全部樓層
謝謝版主的糾正,確實是寫錯了,半路出師,常常把C#和VB搞錯,什麼時候要加()到現在還不是很清楚,常常是Visual studio提醒我的,感謝你
發表於 17-8-9 15:37 | 顯示全部樓層
小弟最近也剛碰程式交易
但覺得 MultiChart 功能太陽春
決定來自己接API

目前我把部份C#報價轉成 REST API 透過 Python 結合資料庫
感覺未來比較有彈性

不知道板大有沒有考慮這方向 ?

評分

參與人數 1金錢 +2 收起 理由
cukie + 2 太強了

查看全部評分

 樓主| 發表於 17-8-10 08:04 | 顯示全部樓層
cory8249 發表於 17-8-9 15:37
小弟最近也剛碰程式交易
但覺得 MultiChart 功能太陽春
決定來自己接API

我目前是用MultiChart 在作策略的回測與開發
其實也是滿簡便好用的
但正如你說的 MC的功能有點陽春(不過原廠經常在update 與upgrade)
缺乏目前正夯的AI (deep learning)的功能

Python 我不熟, 不過我知道它有許多 支援deep learning 及其他功能的 Package
擴充性是非常高的
您所提及的方法應該是一個不錯的solution
唯一需要注意的是  Python是一個Interpreted language, 天生的限制是速度不夠快

以下這個部落格文章 有做一個簡單比較
http://www.financial-hacker.com/hackers-tools-zorro-and-r/#more-89
他所推薦的platform "zorro" 有免費的版本可以使用
但學習使用的門檻不低, 而且要自寫資訊源又得使用付費版
所以你如果Python很熟, 而且交易頻率不適非常高的話, 我認為你的approach 較佳

評分

參與人數 1金錢 +2 收起 理由
cukie + 2 感謝分享

查看全部評分

發表於 17-8-10 08:49 | 顯示全部樓層
感謝兩位的分享
發表於 17-8-10 22:37 | 顯示全部樓層

感謝分享, 很實用, 謝謝!!!
發表於 17-8-17 23:17 | 顯示全部樓層
太強了
還open source
給你一個讚
本人註冊帳號第一推就給你了
發表於 17-8-27 22:26 | 顯示全部樓層
請教版主,國內報價要GetTick時,須輸入Market/Stockidx/nPtr, 如果要查選擇權時,須輸入什麼
?
發表於 17-8-28 13:31 | 顯示全部樓層
剛才試了一下,可以從OnNotifyTick裡得到MarketNo,Stockidx,可是nPtr不知如何得知最近一筆是在那個位址,這樣GetTick的目的是?
 樓主| 發表於 17-8-29 13:40 | 顯示全部樓層
chang91348 發表於 17-8-28 13:31
剛才試了一下,可以從OnNotifyTick裡得到MarketNo,Stockidx,可是nPtr不知如何得知最近一筆是在那個位址,這樣 ...

27樓最後一段有討論到GetTick
http://www.coco-in.net/forum.php ... 69&fromuid=9430
我認為這個function  很少有機會使用到

唯一可能是把它包在迴圈裡, 用來回補部分資料
發表於 17-8-29 15:47 | 顯示全部樓層
謝謝版主,看來GetTick的用處真的不大,原本以為可以拿來最後一筆的資料,看來還是得從OnNotifyQuote來拿了
 樓主| 發表於 17-8-30 23:46 | 顯示全部樓層
本帖最後由 alexliou 於 17-8-31 00:19 編輯
chang91348 發表於 17-8-29 15:47
謝謝版主,看來GetTick的用處真的不大,原本以為可以拿來最後一筆的資料,看來還是得從OnNotifyQuote來拿了 ...

剛去群益官網看了一下, 發現新版的API(2.13.7)出來了,
新版增加了一個功能RequestLiveTick(), 可以僅訂閱即時報價,      
主機傳回的報價資料不再必然包括Historical Ticks,
這使得利用GetTick()來回補Historical Ticks的 機會提高

群益這次把Historical Ticks 和 RealTime Ticks 區分開來 在架構上算是一個進步
因為有的User只需要RealTime Ticks, 不需要餵他多餘的東西, 浪費傳輸資源

但這樣的區分還不夠, 因為如果User 還需要RealTime Best5的資料
新版並沒有提供單獨訂閱Best5的 function, 還是得透過RequstTicks()
而RequestTick()是個三合一套餐(RealTime Ticks, Historical Ticks, Best5)
Historical Ticks 又和RealTime Tick綁在一起了
(但2.13.7版的傳輸速度極快, 而且需要三合一綁定的機會頗多, 綁在一起的impact不大 )

















您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-22 09:20

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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