COCO研究院

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

[API] 群益API 2.13.5 C#實作

  [複製鏈接]
發表於 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不大 )

















 樓主| 發表於 17-8-30 23:57 | 顯示全部樓層
alexliou 發表於 17-7-16 18:20
我錯了, 兩個版本的傳輸速度差異未達百倍, 只有50倍
根據我昨日(7/15)下午的測試:
2.13.5 (無T+1盤資料,  ...

剛Download 了新版API(2.13.7) 小測了一下
傳輸速度回來了   應該是比2.13.5版還快
關鍵在於 2.13.7版 的傳輸間隔是一毫秒
發表於 17-8-31 18:53 | 顯示全部樓層

Alex大大您好:

  之前有向您請教關於台指期成交均價及內外盤量的計算,不知我在excel VBA寫的下列程式,是否正確


Private Sub skQ_OnNotifyHistoryTicks(ByVal sMarketNo As Integer, ByVal sStockIdx As Integer, ByVal nPtr As Long, ByVal nTimehms As Long, ByVal nTimemillismicros As Long, ByVal nBid As Long, ByVal nAsk As Long, ByVal nClose As Long, ByVal nQty As Long, ByVal nSimulate As Long)

   Dim c As Long

      c = 0
      d = 0
      e = 0


         a = nClose
         b = nQty
         c = c + (a * b / 100)
         d = d + b
         e = c / d


      Sheet1.[u2] = nTimehms
      Sheet1.[v2] = nBid / 100
      Sheet1.[w2] = nAsk / 100
      Sheet1.[x2] = nClose / 100
      Sheet1.[y2] = nQty

      Sheet1.[r2] = c
      Sheet1.[s2] = d
      Sheet1.[t2] = e



End Sub


1504176515225.jpg
發表於 17-9-1 16:00 | 顯示全部樓層
請教版主 2.13.7版要重新註册元件嗎?我下載回來執行,出了一堆錯誤碼
 樓主| 發表於 17-9-2 22:52 | 顯示全部樓層
本帖最後由 alexliou 於 17-9-2 22:57 編輯
lawlu 發表於 17-8-31 18:53
Alex大大您好:

  之前有向您請教關於台指期成交均價及內外盤量的計算,不知我在excel VBA寫的下列程式, ...

邏輯是OK的
但要注意的是
1. 需排除試搓(Simulate)的價格
2. 考慮如何與即時價格合併計算(local 變數可能不足應付)
3. 價格分母這裡用固定數字(100), 雖然是正確的, 但不同商品可能有不同的價格分母, 如果考慮更彈性.更一般性的作法時
可事先用GetStockByNo()取得小數位數的資訊

 樓主| 發表於 17-9-2 22:55 | 顯示全部樓層
chang91348 發表於 17-9-1 16:00
請教版主 2.13.7版要重新註册元件嗎?我下載回來執行,出了一堆錯誤碼

需要. 但重新註冊後,  就換原先根據舊版API所寫的程式出錯了, 需因應修改
發表於 17-9-3 11:02 | 顯示全部樓層
謝謝Alex大大回復:


1.該程式經測試,並無法累加計算出成交均價,想要計算該值最主要是認為成交均價在短線當沖上,可以當作進出場的依據,當成交價格跌破均價時,可以考慮進場放空,突破時可以進場作空,如下圖群益的台指分時走勢圖

2.另外我修改了一下程式,如excel副檔,但是還時無法計算出想要的成交均價,不知Alex大大可否幫忙看一下,提供修改意見

Private Sub skQ_OnNotifyHistoryTicks(ByVal sMarketNo As Integer, ByVal sStockIdx As Integer, ByVal nPtr As Long, ByVal nTimehms As Long, ByVal nTimemillismicros As Long, ByVal nBid As Long, ByVal nAsk As Long, ByVal nClose As Long, ByVal nQty As Long, ByVal nSimulate As Long)

    Dim rng As Range
    Dim yen1 As Long
    Dim yen2 As Long
    Dim yen3 As Long
   
    yen1 = 0
    yen2 = 0
         
    [m2:t2].ClearContents
      
   
   
    For Each rng In [p2:p2]

   
    If nTimehms >= 84500 & nTimehms <= 134500 Then
   
      yen1 = yen1 + nClose * nQty / 100
      yen2 = yen2 + nQty
      yen3 = yen1 / yen2
      
      Sheet1.[m2] = nTimehms
      Sheet1.[n2] = nBid / 100
      Sheet1.[o2] = nAsk / 100
      Sheet1.[p2] = nClose / 100
      Sheet1.[q2] = nQty
      Sheet1.[r2] = yen1
      Sheet1.[s2] = yen2
      Sheet1.[t2] = yen3

         
    End If

    Next
      
End Sub
均價線.jpg

群益API練習-XQ均價版-0901.rar

105.38 KB, 下載次數: 556

 樓主| 發表於 17-9-3 15:21 來自手機 | 顯示全部樓層
lawlu 發表於 17-9-3 11:02
謝謝Alex大大回復:



Sorry,昨晚匆忙回覆,回答沒有很正確完整,原先程式的問題如下:

1. 變數名稱使用a,b,c...並非好的practice,使用能望文生義的名稱(如accumulatedPrice, accumulatedVolume,...)會大幅題高可讀性與可維護性。

2. 某些累積功能的變數不該是local variables,OnNotifyHistoryTicks()在每次接收到tick時都會執行,所以當每一根tickinformation傳進來時,這些變數都會被設為0,無法達到累計的目的。累積功能的變數應該設為global variable,在呼叫RequestTicks() 的 module中初始為0。

3. 可利用nSimulate參數判定是否為試搓tick。
發表於 17-9-3 20:57 | 顯示全部樓層
感謝Alex大回復:

1.經修改變數名稱及定義在全域變數位置,目前已可跑出累積功能了(如圖程式)

2.但是OnNotifyHistoryTicks()得到的ticks似乎有少,且計算出來的累積成交量及均價都不正確(如excel畫面)
1.jpg
2.jpg
3.jpg
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-5-18 06:21

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook