示例#1
0
        private void sqlitedb(object s)
        {
            MainForm cMainForm = (MainForm)s;
            ThostFtdcDepthMarketDataField pDepthMarketData = new ThostFtdcDepthMarketDataField();
            QueueSendData Data = new QueueSendData();
            bool bCommit=false;
            while (Queue_SQLite.bUse)
            {
                if (Queue_SQLite.DataQ.Count == 0)
                {
                    Queue_SQLite.Are.WaitOne();
                    Queue_SQLite.Are.Reset();
                    if(bCommit)
                        MemDB.Commit();
                }
                else
                {
                    Data = Queue_SQLite.DataQ.Dequeue();
                    Queue_SQLite.m_lReceiveNum++;
                    #region 这里写策略
                    switch (Data.QueueType)
                    {
                        case EnumQueueType.DepthMarketData:
                            pDepthMarketData = (ThostFtdcDepthMarketDataField)Data.QueueData;
                            if (pDepthMarketData.TradingDay == "" || pDepthMarketData.InstrumentID == "")
                            {
                                Queue_SQLite.m_lDropNum++;
                                Queue_SQLite.Are.Reset();
                            }
                            #region 数据入内存数据库
                            if (sTradingDay != pDepthMarketData.TradingDay || sTableName == string.Empty)
                            {
                                sTableName = "TIP_" + pDepthMarketData.TradingDay;
                                sTradingDay = pDepthMarketData.TradingDay;
                                if (!MemDB.existTable(sTableName))
                                {
                                    string vSQL = string.Format(sDeepRspTableSql, sTableName);
                                    MemDB.setSQL(vSQL);
                                    MemDB.Execute();
                                    MemDB.Commit();
                                }
                            }
                            string sSql = "insert into " + sTableName + "(ActionDay,BidPrice1,BidPrice2,BidPrice3,BidPrice4,BidPrice5,BidVolume1,BidVolume2,BidVolume3,BidVolume4,BidVolume5,AveragePrice,AskPrice1,AskPrice2,AskPrice3,AskPrice4,AskPrice5,AskVolume1,AskVolume2,AskVolume3,AskVolume4,AskVolume5,ClosePrice,CurrDelta,ExchangeID,ExchangeInstID,HighestPrice,InstrumentID,LastPrice,LowerLimitPrice,LowestPrice,OpenInterest,OpenPrice,PreClosePrice,PreDelta,PreOpenInterest,PreSettlementPrice,SettlementPrice,TradingDay,Turnover,UpdateMillisec,UpdateTime,UpperLimitPrice,Volume) values ('"
                                + pDepthMarketData.ActionDay + "','" + pDepthMarketData.BidPrice1 + "','"
                                + pDepthMarketData.BidPrice2 + "','" + pDepthMarketData.BidPrice3 + "','" + pDepthMarketData.BidPrice4 + "','" + pDepthMarketData.BidPrice5 + "','"
                                + pDepthMarketData.BidVolume1 + "','" + pDepthMarketData.BidVolume2 + "','" + pDepthMarketData.BidVolume3 + "','" + pDepthMarketData.BidVolume4 + "','"
                                + pDepthMarketData.BidVolume5 + "','" + pDepthMarketData.AveragePrice + "','" + pDepthMarketData.AskPrice1 + "','" + pDepthMarketData.AskPrice2 + "','"
                                + pDepthMarketData.AskPrice3 + "','" + pDepthMarketData.AskPrice4 + "','" + pDepthMarketData.AskPrice5 + "','" + pDepthMarketData.AskVolume1 + "','"
                                + pDepthMarketData.AskVolume2 + "','" + pDepthMarketData.AskVolume3 + "','" + pDepthMarketData.AskVolume4 + "','" + pDepthMarketData.AskVolume5 + "','"
                                + pDepthMarketData.ClosePrice + "','" + pDepthMarketData.CurrDelta + "','" + pDepthMarketData.ExchangeID + "','"
                                + pDepthMarketData.ExchangeInstID + "','" + pDepthMarketData.HighestPrice + "','" + pDepthMarketData.InstrumentID + "','"
                                + pDepthMarketData.LastPrice + "','" + pDepthMarketData.LowerLimitPrice + "','" + pDepthMarketData.LowestPrice + "','"
                                + pDepthMarketData.OpenInterest + "','" + pDepthMarketData.OpenPrice + "','" + pDepthMarketData.PreClosePrice + "','"
                                + pDepthMarketData.PreDelta + "','" + pDepthMarketData.PreOpenInterest + "','" + pDepthMarketData.PreSettlementPrice + "','"
                                + pDepthMarketData.SettlementPrice + "','" + pDepthMarketData.TradingDay + "','" + pDepthMarketData.Turnover + "','"
                                + pDepthMarketData.UpdateMillisec + "','" + pDepthMarketData.UpdateTime + "','" + pDepthMarketData.UpperLimitPrice + "','" + pDepthMarketData.Volume + "')";
                            MemDB.setSQL(sSql);
                            MemDB.Execute();
                            bCommit = true;
                            Queue_SQLite.m_lRunNum++;
                            #endregion
                            break;
                        case EnumQueueType.OnRtnOrder:
                            break;
                        case EnumQueueType.StopSign0:
                            Queue_PolicySample.bUse = false;
                            return;
                        default:
                            break;
                    }
                }
                #endregion

            }
        }
示例#2
0
 private void PolicySampleRUN(object s)
 {
     MainForm cMainForm = (MainForm)s;
     ThostFtdcInputOrderField sInputOrder = new ThostFtdcInputOrderField();
     ThostFtdcDepthMarketDataField pDepthMarketData = new ThostFtdcDepthMarketDataField();
     QueueSendData Data = new QueueSendData();
     while (Queue_PolicySample.bUse)
     {
         if (Queue_PolicySample.DataQ.Count == 0)
         {
             Queue_PolicySample.Are.WaitOne();
             Queue_PolicySample.Are.Reset();
         }
         else
         {
             Data = Queue_PolicySample.DataQ.Dequeue();
             #region 这里写策略
             switch (Data.QueueType)
             {
                 case EnumQueueType.DepthMarketData:
                     Queue_PolicySample.m_lReceiveNum++;
                     pDepthMarketData = (ThostFtdcDepthMarketDataField)Data.QueueData;
                     if (pDepthMarketData.InstrumentID == "IF1309")
                     {
                         Queue_PolicySample.m_lRunNum++;
                         Queue_PolicySample.add_log("插入报单!触发单:" + pDepthMarketData.InstrumentID + " \n时间:" + pDepthMarketData.UpdateTime);
                         // cMainForm.TDReqOrderInsert(sInputOrder);
                     }
                     else
                     {
                         Queue_PolicySample.m_lDropNum++;
                     }
                     break;
                 case EnumQueueType.OnRtnOrder:
                     break;
                 case EnumQueueType.StopSign0:
                     Queue_PolicySample.bUse = false;
                     return;
                 default:
                     break;
             }
             #endregion
         }
     }
     Queue_PolicySample.bUse = false;
 }
示例#3
0
        /// <summary>
        /// 行情接口->获取深度行情
        /// </summary>
        /// <param name="s">行情结构体,需强转</param>
        private void SetMDDepthMarketData(object s)
        {
            if (this.InvokeRequired)
            {
                SetCallback d = new SetCallback(SetMDDepthMarketData);
                this.BeginInvoke(d, new object[] { s });
            }
            else
            {
                ThostFtdcDepthMarketDataField pDepthMarketData = (ThostFtdcDepthMarketDataField)s;
                QueueSendData sQueueSend = new QueueSendData();
                sQueueSend.QueueType = EnumQueueType.DepthMarketData;
                sQueueSend.QueueData = s;
                List_QueueSend.Add(sQueueSend);
                SignMainQueueSend.Set();

                DataRow DR_Find = this.DT_DeepInstrumentRSP.Rows.Find(pDepthMarketData.InstrumentID);
                DataRow dr = this.DT_DeepInstrumentRSP.NewRow();
                #region 实时行情更新赋值
                dr["叫买价"] = (pDepthMarketData.BidPrice1 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.BidPrice1, 2).ToString() : null;
                dr["叫买价2"] = (pDepthMarketData.BidPrice2 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.BidPrice2, 2).ToString() : null;
                dr["叫买价3"] = (pDepthMarketData.BidPrice3 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.BidPrice3, 2).ToString() : null;
                dr["叫买价4"] = (pDepthMarketData.BidPrice4 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.BidPrice4, 2).ToString() : null;
                dr["叫买价5"] = (pDepthMarketData.BidPrice5 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.BidPrice5, 2).ToString() : null;
                dr["叫买量"] = pDepthMarketData.BidVolume1.ToString();
                dr["叫买量2"] = pDepthMarketData.BidVolume2.ToString();
                dr["叫买量3"] = pDepthMarketData.BidVolume3.ToString();
                dr["叫买量4"] = pDepthMarketData.BidVolume4.ToString();
                dr["叫买量5"] = pDepthMarketData.BidVolume5.ToString();
                dr["当日均价"] = (pDepthMarketData.AveragePrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.AveragePrice, 2).ToString() : null;
                dr["叫卖价"] = (pDepthMarketData.AskPrice1 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.AskPrice1, 2).ToString() : null;
                dr["叫卖价2"] = (pDepthMarketData.AskPrice2 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.AskPrice2, 2).ToString() : null;
                dr["叫卖价3"] = (pDepthMarketData.AskPrice3 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.AskPrice3, 2).ToString() : null;
                dr["叫卖价4"] = (pDepthMarketData.AskPrice4 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.AskPrice4, 2).ToString() : null;
                dr["叫卖价5"] = (pDepthMarketData.AskPrice5 != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.AskPrice5, 2).ToString() : null;
                dr["叫卖量"] = pDepthMarketData.AskVolume1.ToString();
                dr["叫卖量2"] = pDepthMarketData.AskVolume2.ToString();
                dr["叫卖量3"] = pDepthMarketData.AskVolume3.ToString();
                dr["叫卖量4"] = pDepthMarketData.AskVolume4.ToString();
                dr["叫卖量5"] = pDepthMarketData.AskVolume5.ToString();
                dr["收盘价"] = (pDepthMarketData.ClosePrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.ClosePrice, 2).ToString() : null;
                dr["虚实度"] = (pDepthMarketData.CurrDelta != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.CurrDelta, 2).ToString() : null;
                dr["最高价"] = (pDepthMarketData.HighestPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.HighestPrice, 2).ToString() : null;
                dr["最新价"] = (pDepthMarketData.LastPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.LastPrice, 2).ToString() : null;
                dr["跌停板价"] =
                    (pDepthMarketData.LowerLimitPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.LowerLimitPrice, 2).ToString() : null;
                dr["最低价"] = (pDepthMarketData.LowestPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.LowestPrice, 2).ToString() : null;
                dr["持仓量"] = (pDepthMarketData.OpenInterest != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.OpenInterest, 2).ToString() : null;
                dr["开盘价"] = (pDepthMarketData.OpenPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.OpenPrice, 2).ToString() : null;
                dr["昨收盘"] =
                    (pDepthMarketData.PreClosePrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.PreClosePrice, 2).ToString() : null;
                dr["昨虚实度"] = (pDepthMarketData.PreDelta != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.PreDelta, 2).ToString() : null;
                dr["昨持仓"] =
                    (pDepthMarketData.PreOpenInterest != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.PreOpenInterest, 2).ToString() : null;
                dr["上次结算价"] =
                    (pDepthMarketData.PreSettlementPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.PreSettlementPrice, 2).ToString() : null;
                dr["结算价"] =
                    (pDepthMarketData.SettlementPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.SettlementPrice, 2).ToString() : null;
                dr["成交金额"] = (pDepthMarketData.Turnover != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.Turnover, 2).ToString() : null;
                dr["毫秒"] = pDepthMarketData.UpdateMillisec.ToString();
                dr["时间"] = pDepthMarketData.UpdateTime.ToString();
                dr["涨停板价"] =
                    (pDepthMarketData.UpperLimitPrice != Double.MaxValue) ? Function.GetRoundNum(pDepthMarketData.UpperLimitPrice, 2).ToString() : null;
                dr["数量"] = pDepthMarketData.Volume.ToString();
                dr["交易日"] = pDepthMarketData.TradingDay.ToString();
                dr["品种名称"] = pDepthMarketData.InstrumentID;
                dr["自然日"] = pDepthMarketData.ActionDay.ToString();
                #endregion
                if (DR_Find != null)
                {
                    DR_Find.ItemArray = dr.ItemArray;
                }
                else
                {
                    this.DT_DeepInstrumentRSP.Rows.Add(dr);
                }
            }
        }