コード例 #1
0
        // 请求历史数据
        public void SendHistoricalDataRequestBar(HistoricalDataRequest request, string market)
        {
            Instrument inst      = request.Instrument as Instrument;
            string     altSymbol = inst.GetSymbol(Name);

            PeriodType pt = GetPeriodTypeFromDataType(request);

            if (pt == PeriodType.MAX_PERIOD_TYPE)
            {
                EmitHistoricalDataError(request, "不支持的时间周期!");
                return;
            }

            string key = GetKeyFromSTKHISDATA(market, altSymbol, pt);

            // 先发请求再存下来
            int nRet = QuotApi.QT_RequestHistory(m_pQuotApi, market, altSymbol, pt);

            ehlog.Info("-->RequestHistory:{0},{1} Return:{2}", market, altSymbol, nRet);
            if (0 == nRet)
            {
                SaveRequest(request, key, market, altSymbol, DateTime.MaxValue);
            }
            else
            {
                EmitHistoricalDataError(request, "API返回错误:" + nRet);
            }
        }
コード例 #2
0
 private void Disconnect_Quot()
 {
     lock (_lockQuot)
     {
         if (null != m_pQuotApi && IntPtr.Zero != m_pQuotApi)
         {
             QuotApi.QT_RegMsgQueue2QuotApi(m_pQuotApi, IntPtr.Zero);
             QuotApi.QT_ReleaseQuotApi(m_pQuotApi);
             m_pQuotApi = IntPtr.Zero;
         }
         _bQuotConnected = false;
     }
 }
コード例 #3
0
 //建立行情
 private void Connect_Quot()
 {
     lock (_lockQuot)
     {
         if (_bWantQuotConnect &&
             (null == m_pQuotApi || IntPtr.Zero == m_pQuotApi))
         {
             m_pQuotApi = QuotApi.QT_CreateQuotApi();
             QuotApi.ES_RegOnRspHistoryQuot(m_pMsgQueue, _fnOnRspHistoryQuot_Holder);
             QuotApi.ES_RegOnRspMarketInfo(m_pMsgQueue, _fnOnRspMarketInfo_Holder);
             QuotApi.ES_RegOnRspTraceData(m_pMsgQueue, _fnOnRspTraceData_Holder);
             QuotApi.QT_RegMsgQueue2QuotApi(m_pQuotApi, m_pMsgQueue);
             QuotApi.QT_Connect(m_pQuotApi, server.Address, server.Port, account.InvestorId, account.Password);
         }
     }
 }
コード例 #4
0
        private void SendRequest_Tick(string key)
        {
            DataRecord dr;

            if (!historicalDataRecords_key.TryGetValue(key, out dr))
            {
                return;
            }

            // 移动到下一交易日
            do
            {
                dr.date = dr.date.AddDays(1);
                if (dr.date.DayOfWeek == DayOfWeek.Saturday ||
                    dr.date.DayOfWeek == DayOfWeek.Sunday)
                {
                    continue;
                }
                else
                {
                    break;
                }
            }while(true);

            // 超出日期了,可以中止了
            if (dr.date >= dr.request.EndDate)
            {
                EmitHistoricalDataCompleted(dr.request);

                historicalDataRecords_requestId.Remove(dr.request.RequestId);
                historicalDataRecords_key.Remove(dr.key);
                return;
            }

            // 发送请求
            int nRet = QuotApi.QT_RequestTrace(m_pQuotApi, dr.market, dr.symbol, dr.date.ToString("yyyyMMdd"));

            ehlog.Info("-->RequestTrace:{0},{1},{2} Return:{3}", dr.market, dr.symbol, dr.date.ToString("yyyyMMdd"), nRet);
            if (0 == nRet)
            {
            }
            else
            {
                EmitHistoricalDataError(dr.request, "API返回错误:" + nRet);
            }
        }