請問關於群益報價API + VB 2012的問題
各位前輩好,想請問關於群益報價API + VB 2012的問題…..小弟在win7作業系統下,使用VS2012 Desktop的VB抓取群益報價API ,
目前只抓取台指期貨TX00報價,但是,每次收報價大概4分鐘後,
報價就自動停了,也沒有任何的錯誤訊息。
懇請有經驗的前輩指導一下,謝謝。
1. 前置作業如下:
先把config.ini、SKQuote.exe、SKQuoteLib.dll、SKQuoteLib.lib等4個檔,
複製貼到/bin/Debug/內。
2. 完整程式碼如下:
Imports System.Runtime.InteropServices
Public Class Form1
' *** DLLImport
'* 0. SKQuoteLib_Initialize 初始使用者相關資訊
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_Initialize(ByVal lpszLoginID As String, ByVal lpszPassword As String) As Integer
End Function
'* 1. SKQuoteLib_AttachConnectionCallBack 向報價函式庫註冊接收連線狀態的 Call back 函式位址
<UnmanagedFunctionPointer(CallingConvention.StdCall)> _
Public Delegate Sub FOnNotifyConnection(ByVal nKind As Integer, ByVal nCode As Integer)
Shared Delegate_AttachConnection As New FOnNotifyConnection(AddressOf OnConnectionBack)
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_AttachConnectionCallBack(ByVal Delegate_AttachConnection As FOnNotifyConnection) As Integer
End Function
'* 2. SKQuoteLib_AttachQuoteCallBack 當有索取的個股報價異動時,將透過此註冊的函式通知應用程式處理
<UnmanagedFunctionPointer(CallingConvention.StdCall)> _
Public Delegate Sub FOnNotifyQuote(ByVal sMarketNo As Short, ByVal sStockidx As Short)
Public Shared Delegate_AttachQuote As New FOnNotifyQuote(AddressOf OnQuoteCallBack)
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_AttachQuoteCallBack(ByVal Delegate_AttachQuote As FOnNotifyQuote) As Integer
End Function
'* 3. SKQuoteLib_EnterMonitor 建立與報價伺服器的連線
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_EnterMonitor() As Integer
End Function
'* 4. SKQuoteLib_RequestStocks 要求伺服器針對pStockNos內的商品代號作報價通知的動作
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
Public Shared Function SKQuoteLib_RequestStocks(ByRef psPageNo As Short, ByVal pStockNos As String) As Integer
End Function
'* 5. SKQuoteLib_GetStockByIndex 根據市場別編號與系統所編的特殊代號,取回股票報價的相關資訊
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
Public Shared Function SKQuoteLib_GetStockByIndex(ByVal sMarketNo As Short, ByVal sIndex As Short, ByRef pStock As TStock) As Integer
End Function
'* 6. SKQuoteLib_LeaveMonitor 中斷與報價伺服器的連線
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_LeaveMonitor() As Integer
End Function
' *** 定義TStock 結構
<StructLayout(LayoutKind.Sequential)> _
Public Structure TStock
Dim Stockidx As Short
Dim Decimal1 As Short
Dim TypeNo As Short
Dim MarketNo As Byte
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> Dim StockNo As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=10)> Dim StockName As String
Dim Open As Integer
Dim High As Integer
Dim Low As Integer
Dim Close As Integer
Dim TickQty As Integer ' 單量
Dim Ref As Integer ' 昨收、參考價
Dim Bid As Integer ' 買價
Dim Bc As Integer ' 買量
Dim Ask As Integer ' 賣價
Dim Ac As Integer ' 賣量
Dim TBc As Integer ' 買盤量
Dim TAc As Integer ' 賣盤量
Dim FutureOI As Integer ' 期貨未平倉 OI
Dim TQty As Integer ' 單量
Dim YQty As Integer
Dim Up As Integer ' 漲停
Dim Down As Integer ' 跌停
End Structure
'*** 檢視報價連線是否登入成功
Public Shared Sub OnConnectionBack(ByVal Kind As Integer, ByVal Code As Integer)
If Code = 0 Then
MsgBox(" 報價伺服器登入成功!!")
Else
MsgBox("報價中斷!!")
End If
'*** 要求伺服器針對 pStockNos內的商品代號作報價通知的動作
Dim Status As Integer
Dim ComIds As String
ComIds = "TX00"
Status = SKQuoteLib_RequestStocks(-1, ComIds)
End Sub
'*** 接收報價的位置
Public Shared Sub OnQuoteCallBack(ByVal Market As Short, ByVal Index As Short)
On Error Resume Next
Dim Status As Integer
Dim Stock As New TStock
'*** 要求報價
Status = SKQuoteLib_GetStockByIndex(Market, Index, Stock)
'*** 接收台指期貨 TX00 報價的項目
Form1.txtTxBid.Text = Stock.Bid / 100
Form1.txtBuyQty.Text = Stock.Bc
Form1.txtTxAsk.Text = Stock.Ask / 100
Form1.txtSellQty.Text = Stock.Ac
Form1.txtTxClose.Text = Stock.Close / 100
Form1.txtTxTickQty.Text = Stock.TickQty
End Sub
'*** 程式開啟時 呼叫 API
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Status As Integer
Status = Status + SKQuoteLib_Initialize("身分證字號", "密碼")
Status = Status + SKQuoteLib_AttachConnectionCallBack(AddressOf OnConnectionBack)
Status = Status + SKQuoteLib_AttachQuoteCallBack(AddressOf OnQuoteCallBack)
Status = SKQuoteLib_EnterMonitor()
End Sub
'*** 結束報價按鈕
Private Sub btnEnd_Click(sender As Object, e As EventArgs) Handles btnEnd.Click
SKQuoteLib_LeaveMonitor()
MsgBox("結束報價,離開 !")
End Sub
End Class
據小弟使用的經驗~群益API會不定時踢帳號,我也不知道為什麼?{:4_666:}
(我使用的是excel vba接收的) 我的 Excel 2007 VBA接收報價是很正常,
但是,類似的程式架構,
轉成 VB.net 2012,卻只能收到4分鐘的報價,
真是奇怪了,
還請各位高手,多多指教,
謝謝。 我用老老的VB6,沒這問題ㄟ
.net ㄜ...... 懶的學 印象上五分鐘以內要在跟server要一次時間資訊, 不然好像是5分鐘會斷線...
我自己用C#是定幾分鐘去要一次server time... pazival01 發表於 13-3-5 10:36 static/image/common/back.gif
印象上五分鐘以內要在跟server要一次時間資訊, 不然好像是5分鐘會斷線...
我自己用C#是定幾分鐘去要一次se ...
我試著每60秒呼叫一次伺服器時間,但是還是4分鐘左右,自動停止收報價。還是很感謝 pazival01 兄的建議。程式碼如下: ' * 呼叫伺服器時間 <UnmanagedFunctionPointer(CallingConvention.StdCall)>_ Public DelegateSub FOnNotifyServerTime(ByVal tHour As Int16, ByVal tMinute As Int16, ByValtSecond As Int16, ByVal tTotal As Int16) SharedDelegate_ServerTime As New FOnNotifyServerTime(AddressOf CBFunc_ServerTime) <DllImport("SKQuoteLib.dll",CallingConvention:=CallingConvention.StdCall)> _ Public Shared FunctionSKQuoteLib_AttchServerTimeCallBack(ByVal Delegate_ServerTime As FOnNotifyServerTime)As Integer End Function <DllImport("SKQuoteLib.dll",CallingConvention:=CallingConvention.StdCall)> _ Public Shared FunctionSKQuoteLib_RequestServerTime() As Integer End Function '*** 60 秒呼叫一次伺服器時間 Private SubTimer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick SKQuoteLib_RequestServerTime() End Sub Public Shared SubCBFunc_ServerTime(ByVal tHour As Int16, ByVal tMinute As Int16, ByVal tSecond AsInt16, ByVal tTotal As Int16) '留空() End Sub 印象上 好像有兩個function, 看看要不要用另一個
--
先用SKQuoteLib_AttchServerTimeCallBack 註冊
之後固定時間用SKQuoteLib_GetServerTime
我是用這個, 目前用C#沒有遇過斷線問題 pazival01 發表於 13-3-5 13:23 static/image/common/back.gif
印象上 好像有兩個function, 看看要不要用另一個
--
了解,我明天盤中再試試,非常感謝您的指點。 剛剛試著先用SKQuoteLib_AttchServerTimeCallBack 註冊
之後固定1分鐘用timer 呼叫SKQuoteLib_GetServerTime
固定5分鐘用timer 呼叫 SKQuoteLib_RequestServerTime()
但是…還是只能收到 約4分鐘左右的報價,就收不到報價了….
更新後的全部程式碼如下:
Imports System.Runtime.InteropServices
Public Class Form1
' *** DLLImport
'* 0. SKQuoteLib_Initialize 初始使用者相關資訊
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_Initialize(ByVal lpszLoginID As String, ByVal lpszPassword As String) As Integer
End Function
'* 1. SKQuoteLib_AttachConnectionCallBack 向報價函式庫註冊接收連線狀態的 Call back 函式位址
<UnmanagedFunctionPointer(CallingConvention.StdCall)> _
Public Delegate Sub FOnNotifyConnection(ByVal nKind As Integer, ByVal nCode As Integer)
Shared Delegate_AttachConnection As New FOnNotifyConnection(AddressOf OnConnectionBack)
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_AttachConnectionCallBack(ByVal Delegate_AttachConnection As FOnNotifyConnection) As Integer
End Function
'* 2. SKQuoteLib_AttachQuoteCallBack 當有索取的個股報價異動時,將透過此註冊的函式通知應用程式處理
<UnmanagedFunctionPointer(CallingConvention.StdCall)> _
Public Delegate Sub FOnNotifyQuote(ByVal sMarketNo As Short, ByVal sStockidx As Short)
Public Shared Delegate_AttachQuote As New FOnNotifyQuote(AddressOf OnQuoteCallBack)
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_AttachQuoteCallBack(ByVal Delegate_AttachQuote As FOnNotifyQuote) As Integer
End Function
'* 3. SKQuoteLib_EnterMonitor 建立與報價伺服器的連線
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_EnterMonitor() As Integer
End Function
'* 4. SKQuoteLib_RequestStocks 要求伺服器針對pStockNos內的商品代號作報價通知的動作
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
Public Shared Function SKQuoteLib_RequestStocks(ByRef psPageNo As Short, ByVal pStockNos As String) As Integer
End Function
'* 5. SKQuoteLib_GetStockByIndex 根據市場別編號與系統所編的特殊代號,取回股票報價的相關資訊
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
Public Shared Function SKQuoteLib_GetStockByIndex(ByVal sMarketNo As Short, ByVal sIndex As Short, ByRef pStock As TStock) As Integer
End Function
'* 6. SKQuoteLib_LeaveMonitor 中斷與報價伺服器的連線
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_LeaveMonitor() As Integer
End Function
'* 7. SKQuoteLib_GetStockByNo
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
Public Shared Function SKQuoteLib_GetStockByNo(ByVal lpszStockNo As , ByRef pStock As TStock) As Integer
End Function
'* 8. SKQuoteLib_AttchServerTimeCallBack 呼叫伺服器時間
<UnmanagedFunctionPointer(CallingConvention.StdCall)> _
Public Delegate Sub FOnNotifyServerTime(ByVal tHour As Int16, ByVal tMinute As Int16, ByVal tSecond As Int16, ByVal tTotal As Int16)
Shared Delegate_ServerTime As New FOnNotifyServerTime(AddressOf CBFunc_ServerTime)
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_AttchServerTimeCallBack(ByVal Delegate_ServerTime As FOnNotifyServerTime) As Integer
End Function
'*9. SKQuoteLib_RequestServerTime 要求報價主機傳送目前時間
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function SKQuoteLib_RequestServerTime() As Integer
End Function
'* 10 . SKQuoteLib_GetServerTime 取得查詢的主機時間
<DllImport("SKQuoteLib.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
Public Shared Function SKQuoteLib_GetServerTime(ByRef pFormat05 As CFormat05) As Integer
End Function
' *** 定義TStock 結構
<StructLayout(LayoutKind.Sequential)> _
Public Structure TStock
Dim Stockidx As Short
Dim Decimal1 As Short
Dim TypeNo As Short
Dim MarketNo As Byte
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> Dim StockNo As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=10)> Dim StockName As String
Dim Open As Integer
Dim High As Integer
Dim Low As Integer
Dim Close As Integer
Dim TickQty As Integer ' 單量
Dim Ref As Integer ' 昨收、參考價
Dim Bid As Integer ' 買價
Dim Bc As Integer ' 買量
Dim Ask As Integer ' 賣價
Dim Ac As Integer ' 賣量
Dim TBc As Integer ' 買盤量
Dim TAc As Integer ' 賣盤量
Dim FutureOI As Integer ' 期貨未平倉 OI
Dim TQty As Integer ' 單量
Dim YQty As Integer
Dim Up As Integer ' 漲停
Dim Down As Integer ' 跌停
End Structure
' *** 定義主機時間格式 CFormat05
<StructLayout(LayoutKind.Sequential)> _
Public Structure CFormat05
Dim m_sHour As Short
Dim m_sMinute As Short
Dim m_sSecond As Short
Dim m_lTotal As Integer
End Structure
'*** 檢視報價連線是否登入成功
Public Shared Sub OnConnectionBack(ByVal Kind As Integer, ByVal Code As Integer)
If Code = 0 Then
MsgBox(" 報價伺服器登入成功!!")
Else
MsgBox("報價中斷!!")
End If
'*** 要求伺服器針對 pStockNos內的商品代號作報價通知的動作
Dim Status As Integer
Dim ComIds As String
ComIds = "TX00"
Status = SKQuoteLib_RequestStocks(-1, ComIds)
End Sub
'*** 接收報價的位置
Public Shared Sub OnQuoteCallBack(ByVal Market As Short, ByVal Index As Short)
On Error Resume Next
Dim Status As Integer
Dim Stock As New TStock
'*** 要求報價
Status = SKQuoteLib_GetStockByIndex(Market, Index, Stock)
'*** 接收台指期貨 TX00 報價的項目
Form1.txtTxBid.Text = Stock.Bid / 100
Form1.txtBuyQty.Text = Stock.Bc
Form1.txtTxAsk.Text = Stock.Ask / 100
Form1.txtSellQty.Text = Stock.Ac
Form1.txtTxClose.Text = Stock.Close / 100
Form1.txtTxTickQty.Text = Stock.TickQty
End Sub
'*** 程式開啟時 呼叫 API
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Status As Integer
Status = Status + SKQuoteLib_Initialize("身分證字號", "密碼")
Status = Status + SKQuoteLib_AttachConnectionCallBack(AddressOf OnConnectionBack)
Status = Status + SKQuoteLib_AttachQuoteCallBack(AddressOf OnQuoteCallBack)
Status = Status + SKQuoteLib_AttchServerTimeCallBack(AddressOf CBFunc_ServerTime)
Status = SKQuoteLib_EnterMonitor()
End Sub
'*** 結束報價按鈕
Private Sub btnEnd_Click(sender As Object, e As EventArgs) Handles btnEnd.Click
SKQuoteLib_LeaveMonitor()
MsgBox("結束報價,離開 !")
End Sub
'*** 接收 SKQuoteLib_AttchServerTimeCallBack
Public Shared Sub CBFunc_ServerTime(ByVal tHour As Int16, ByVal tMinute As Int16, ByVal tSecond As Int16, ByVal tTotal As Int16)
' Form1.Label7.Text = tHour
' Form1.Label8.Text = tMinute
' Form1.Label9.Text = tSecond
' 留空()
End Sub
'*** 5分鐘 秒呼叫一次 SKQuoteLib_RequestServerTime() 伺服器時間
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Try
SKQuoteLib_RequestServerTime()
Catch ex As Exception
End Try
End Sub
'*** 1 分鐘 秒呼叫一次 SKQuoteLib_GetServerTime 查詢的主機時間時間
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
Dim pFormat05 As New CFormat05
SKQuoteLib_GetServerTime(pFormat05)
End Sub
End Class
pazival01 發表於 13-3-5 13:23 static/image/common/back.gif
印象上 好像有兩個function, 看看要不要用另一個
--
透過轉換,把『群益報價api』的程式碼由VB轉成C#,請 pazival01兄與各位精通C#的高手指教,目前只能收到約4分鐘的台指期貨TX00報價,謝謝。C#的程式碼如下: using Microsoft.VisualBasic;using System;using System.Collections;using System.Collections.Generic;using System.Data;using System.Diagnostics;using System.Runtime.InteropServices; public class Form1{ // *** DLLImport //* 0. SKQuoteLib_Initialize 初始使用者相關資訊 public static extern intSKQuoteLib_Initialize(string lpszLoginID, string lpszPassword); //* 1.SKQuoteLib_AttachConnectionCallBack 向報價函式庫註冊接收連線狀態的 Call back 函式位址 public delegate voidFOnNotifyConnection(int nKind, int nCode); static FOnNotifyConnectionDelegate_AttachConnection = new FOnNotifyConnection(OnConnectionBack); public static extern intSKQuoteLib_AttachConnectionCallBack(FOnNotifyConnectionDelegate_AttachConnection); //* 2.SKQuoteLib_AttachQuoteCallBack 當有索取的個股報價異動時,將透過此註冊的函式通知應用程式處理 public delegate voidFOnNotifyQuote(short sMarketNo, short sStockidx); public static FOnNotifyQuoteDelegate_AttachQuote = new FOnNotifyQuote(OnQuoteCallBack); public static extern intSKQuoteLib_AttachQuoteCallBack(FOnNotifyQuote Delegate_AttachQuote); //* 3.SKQuoteLib_EnterMonitor 建立與報價伺服器的連線 public static extern intSKQuoteLib_EnterMonitor(); //* 4.SKQuoteLib_RequestStocks 要求伺服器針對pStockNos內的商品代號作報價通知的動作 public static extern intSKQuoteLib_RequestStocks(ref short psPageNo, string pStockNos); //* 5.SKQuoteLib_GetStockByIndex 根據市場別編號與系統所編的特殊代號,取回股票報價的相關資訊 public static extern intSKQuoteLib_GetStockByIndex(short sMarketNo, short sIndex, ref TStock pStock); //* 6.SKQuoteLib_LeaveMonitor 中斷與報價伺服器的連線 public static extern intSKQuoteLib_LeaveMonitor(); //* 7.SKQuoteLib_GetStockByNo public static extern intSKQuoteLib_GetStockByNo(String lpszStockNo, ref TStock pStock); //* 8.SKQuoteLib_AttchServerTimeCallBack 呼叫伺服器時間 public delegate voidFOnNotifyServerTime(Int16 tHour, Int16 tMinute, Int16 tSecond, Int16 tTotal); static FOnNotifyServerTimeDelegate_ServerTime = new FOnNotifyServerTime(CBFunc_ServerTime); public static extern intSKQuoteLib_AttchServerTimeCallBack(FOnNotifyServerTime Delegate_ServerTime); //*9.SKQuoteLib_RequestServerTime 要求報價主機傳送目前時間 public static extern intSKQuoteLib_RequestServerTime(); //* 10 .SKQuoteLib_GetServerTime 取得查詢的主機時間 public static extern intSKQuoteLib_GetServerTime(ref CFormat05 pFormat05); // *** 定義TStock 結構 public struct TStock { public short Stockidx; public shortDecimal1; public short TypeNo; public byteMarketNo; public stringStockNo; public stringStockName; public int Open; public int High; public int Low; public int Close; // 單量 public int TickQty; // 昨收、參考價 public int Ref; // 買價 public int Bid; // 買量 public int Bc; // 賣價 public int Ask; // 賣量 public int Ac; // 買盤量 public int TBc; // 賣盤量 public int TAc; // 期貨未平倉 OI public int FutureOI; // 單量 public int TQty; public int YQty; // 漲停 public int Up; // 跌停 public int Down; } // *** 定義主機時間格式 CFormat05 public struct CFormat05 { public shortm_sHour; public shortm_sMinute; public shortm_sSecond; public int m_lTotal; } //*** 檢視報價連線是否登入成功 public static voidOnConnectionBack(int Kind, int Code) { if (Code == 0) { Interaction.MsgBox("報價伺服器登入成功!!"); } else { Interaction.MsgBox("報價中斷!!"); } //*** 要求伺服器針對 pStockNos內的商品代號作報價通知的動作 int Status = 0; string ComIds =null; ComIds ="TX00"; Status =SKQuoteLib_RequestStocks(ref -1, ComIds); } //*** 接收報價的位置 public static voidOnQuoteCallBack(short Market, short Index) { // ERROR: Not supported in C#:OnErrorStatement int Status = 0; TStock Stock = newTStock(); //*** 要求報價 Status =SKQuoteLib_GetStockByIndex(Market, Index, ref Stock); //*** 接收台指期貨 TX00 報價的項目 Form1.txtTxBid.Text= Stock.Bid / 100; Form1.txtBuyQty.Text= Stock.Bc; Form1.txtTxAsk.Text= Stock.Ask / 100; Form1.txtSellQty.Text= Stock.Ac; Form1.txtTxClose.Text= Stock.Close / 100; Form1.txtTxTickQty.Text= Stock.TickQty; } //*** 程式開啟時 呼叫 API private voidForm1_Load(object sender, EventArgs e) { int Status = 0; Status = Status +SKQuoteLib_Initialize("身分證字號", "密碼"); Status = Status +SKQuoteLib_AttachConnectionCallBack(OnConnectionBack); Status = Status +SKQuoteLib_AttachQuoteCallBack(OnQuoteCallBack); Status = Status +SKQuoteLib_AttchServerTimeCallBack(CBFunc_ServerTime); Status =SKQuoteLib_EnterMonitor(); } //*** 結束報價按鈕 private voidbtnEnd_Click(object sender, EventArgs e) { SKQuoteLib_LeaveMonitor(); Interaction.MsgBox("結束報價,離開 !"); } //*** 接收SKQuoteLib_AttchServerTimeCallBack public static voidCBFunc_ServerTime(Int16 tHour, Int16 tMinute, Int16 tSecond, Int16 tTotal) { // Form1.Label7.Text= tHour // Form1.Label8.Text= tMinute // Form1.Label9.Text= tSecond // 留空() } //*** 5分鐘 秒呼叫一次SKQuoteLib_RequestServerTime() 伺服器時間 private voidTimer1_Tick(object sender, EventArgs e) { try { SKQuoteLib_RequestServerTime(); } catch (Exceptionex) { } } //*** 1 分鐘 秒呼叫一次SKQuoteLib_GetServerTime 查詢的主機時間時間 private voidTimer2_Tick(object sender, EventArgs e) { CFormat05 pFormat05= new CFormat05(); SKQuoteLib_GetServerTime(refpFormat05); } public Form1() { Load += Form1_Load; } } 我看了一下我的code
我的程式在SKQuoteLib_AttachQuoteCallBack 之後
還有加上
//2.3當有索取的個股成交明細有所異動,即透過向此註冊的 Call back 函式進行處理
SKQuoteLib_AttachTicksCallBack(QuoteAttachTicks );
之後我又加了一大堆我看不懂的
//2.4
SKQuoteLib_AttachBest5CallBack(QuoteAttachBest5 );
SKQuoteLib_AttachStrikePricesCallBack(QuoteAttachStrikePrices );
SKQuoteLib_AttachKLineDataCallBack(QuoteAttachKLineData );
在這之後我就是下
QuoteEnterMonitor();
SKQuoteLib_AttchServerTimeCallBack(QuoteAttachServerTime);
SKQuoteLib_GetServerTime(ref CFtime);
----
之後就是每隔幾分鐘下 SKQuoteLib_GetServerTime 命令..
希望對你有幫助.
pazival01 發表於 13-3-7 10:18 static/image/common/back.gif
我看了一下我的code
我的程式在SKQuoteLib_AttachQuoteCallBack 之後
感謝pazival01兄指點,我再試看看。 在修改過程中,發現一個奇怪的現象,
1. 原接收台指期貨TX00,買價、買量、賣價、賣量、成交價、單筆量,
等6個報價選項時,約可收到4分鐘報價。
2. 若是接收台指期貨TX00的項目,縮減為買量、賣量,
等2個報價選項時,約可收到12分鐘報價。
煩請 高手們指教,幫幫忙,
謝謝。
我看了一下我的code, 我好像沒使用SKQuoteLib_RequestStocks 這個function
--
接收台指期貨 TX00 報價 我是這樣用
SKQuoteLib_GetStockByNo("TX00", ref Stock);
SKQuoteLib_RequestTicks(ref PageNo, "TX00");
SKQuoteLib_QuoteGetKLine("TX00", 0);
也許你可以這樣試試看,
--
也說不定是我哪裡誤用了, 拿到是錯誤的數據~ @@..
... pazival01 發表於 13-3-7 13:33 static/image/common/back.gif
我看了一下我的code, 我好像沒使用SKQuoteLib_RequestStocks 這個function
--
感謝pazival01兄指點,我再試看看。