public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                tdlog.Info("GetBrokerInfo");
                //TraderApi.TD_ReqQryTradingAccount(m_pTdApi);
                //TraderApi.TD_ReqQryInvestorPosition(m_pTdApi, null);
                //timerAccount.Enabled = false;
                //timerAccount.Enabled = true;
                //timerPonstion.Enabled = false;
                //timerPonstion.Enabled = true;

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID) { BuyingPower = m_TradingAccount.Available };

                Type t = typeof(CThostFtdcTradingAccountField);
                FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
                foreach (FieldInfo field in fields)
                {
                    brokerAccount.AddField(field.Name, field.GetValue(m_TradingAccount).ToString());
                }

                DataRow[] rows = _dbInMemInvestorPosition.SelectAll();

                foreach (DataRow dr in rows)
                {
                    BrokerPosition brokerPosition = new BrokerPosition {
                        Symbol = dr[DbInMemInvestorPosition.InstrumentID].ToString()
                    };

                    int pos = (int)dr[DbInMemInvestorPosition.Position];
                    TThostFtdcPosiDirectionType PosiDirection = (TThostFtdcPosiDirectionType)dr[DbInMemInvestorPosition.PosiDirection];
                    if (TThostFtdcPosiDirectionType.Long == PosiDirection)
                    {
                        brokerPosition.LongQty = pos;
                    }
                    else if (TThostFtdcPosiDirectionType.Short == PosiDirection)
                    {
                        brokerPosition.ShortQty = pos;
                    }
                    else
                    {
                        if (pos >= 0)//净NET这个概念是什么情况?
                            brokerPosition.LongQty = pos;
                        else
                            brokerPosition.ShortQty = -pos;
                    }
                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PosiDirection, PosiDirection.ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.HedgeFlag, ((TThostFtdcHedgeFlagType)dr[DbInMemInvestorPosition.HedgeFlag]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PositionDate, ((TThostFtdcPositionDateType)dr[DbInMemInvestorPosition.PositionDate]).ToString());
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }

            return brokerInfo;
        }
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                if (_bTdConnected)
                {
                }
                else
                {
                    return(brokerInfo);
                }

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID)
                {
                    BuyingPower = m_TradingAccount.Available
                };

                Type        t      = typeof(CThostFtdcTradingAccountField);
                FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
                foreach (FieldInfo field in fields)
                {
                    brokerAccount.AddField(field.Name, field.GetValue(m_TradingAccount).ToString());
                }

                foreach (CThostFtdcInvestorPositionField pos in _dictPositions.Values)
                {
                    BrokerPosition brokerPosition = new BrokerPosition
                    {
                        Symbol = pos.InstrumentID
                    };

                    if (TThostFtdcPosiDirectionType.Long == pos.PosiDirection)
                    {
                        brokerPosition.LongQty = pos.Position;
                    }
                    else if (TThostFtdcPosiDirectionType.Short == pos.PosiDirection)
                    {
                        brokerPosition.ShortQty = pos.Position;
                    }

                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;

                    Type        t2      = typeof(CThostFtdcInvestorPositionField);
                    FieldInfo[] fields2 = t2.GetFields(BindingFlags.Public | BindingFlags.Instance);
                    foreach (FieldInfo field in fields2)
                    {
                        brokerPosition.AddCustomField(field.Name, field.GetValue(pos).ToString());
                    }
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }

            return(brokerInfo);
        }
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                if (_bTdConnected)
                {
                }
                else
                {
                    return brokerInfo;
                }

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID) { BuyingPower = m_TradingAccount.Available };

                Type t = typeof(CThostFtdcTradingAccountField);
                FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
                foreach (FieldInfo field in fields)
                {
                    brokerAccount.AddField(field.Name, field.GetValue(m_TradingAccount).ToString());
                }

                foreach (CThostFtdcInvestorPositionField pos in _dictPositions.Values)
                {
                    BrokerPosition brokerPosition = new BrokerPosition
                    {
                        Symbol = pos.InstrumentID
                    };

                    if (TThostFtdcPosiDirectionType.Long == pos.PosiDirection)
                    {
                        brokerPosition.LongQty = pos.Position;
                    }
                    else if (TThostFtdcPosiDirectionType.Short == pos.PosiDirection)
                    {
                        brokerPosition.ShortQty = pos.Position;
                    }

                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;

                    Type t2 = typeof(CThostFtdcInvestorPositionField);
                    FieldInfo[] fields2 = t2.GetFields(BindingFlags.Public | BindingFlags.Instance);
                    foreach (FieldInfo field in fields2)
                    {
                        brokerPosition.AddCustomField(field.Name, field.GetValue(pos).ToString());
                    }
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }            

            return brokerInfo;
        }
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (!this.isConnected)
            {
                this.EmitError(this.Id, -1, "The TDXTradeProvider is not connected.");
                return(brokerInfo);
            }
            ReportArgs rargs = this.trader.QueryFund();

            if (rargs.Succeeded && rargs.Result != null)
            {
                FundRecord    fundRecord    = (FundRecord)rargs.Result;
                BrokerAccount brokerAccount = new BrokerAccount("通达信-" + this.fundID);
                brokerAccount.AddField("Balance", fundRecord.Balance.ToString());
                brokerAccount.AddField("Available", fundRecord.Available.ToString());
                brokerAccount.AddField("TotalAssets", fundRecord.TotalAsserts.ToString());
                brokerAccount.AddField("Desirable", fundRecord.Desirable.ToString());
                brokerAccount.AddField("MarketValue", fundRecord.MarketValue.ToString());
                brokerAccount.AddField("Frozen", fundRecord.Frozen.ToString());
                brokerAccount.BuyingPower = fundRecord.Available;
                brokerInfo.Accounts.Add(brokerAccount);
                rargs = this.trader.QueryPositions();
                if (rargs.Succeeded && rargs.Result != null)
                {
                    List <PositionRecord> positions = (List <PositionRecord>)rargs.Result;
                    foreach (PositionRecord position in positions)
                    {
                        BrokerPosition brokerPosition = new BrokerPosition();
                        brokerPosition.SecurityExchange = position.SecurityExchange;
                        brokerPosition.Symbol           = position.SecurityExchange + "." + position.SecurityID;
                        brokerPosition.AddCustomField("Available", position.Available.ToString());
                        brokerPosition.Qty = position.Quantity;
                        brokerPosition.AddCustomField("CostPrice", position.CostPrice.ToString());
                        brokerPosition.LongQty = position.Quantity;
                        brokerAccount.AddPosition(brokerPosition);
                    }
                }
                else
                {
                    this.EmitError(this.Id, -1, rargs.ErrorInfo);
                }
            }
            else
            {
                this.EmitError(this.Id, -1, rargs.ErrorInfo);
            }


            return(brokerInfo);
        }
Example #5
0
 public void OnPositionStatusReport(object sender, PositionStatusReportEventArgs e)
 {
     if (this.brokerAccount != null)
     {
         BrokerPosition brokerPosition = new BrokerPosition();
         brokerPosition.AddCustomField("AccountID", e.AccountID);
         brokerPosition.SecurityExchange = e.SecurityExchange;
         brokerPosition.Symbol           = e.SecurityExchange + e.SecurityID;
         brokerPosition.AddCustomField("Balance", e.Balance.ToString());
         brokerPosition.AddCustomField("AvailableBalance", e.AvailableBalance.ToString());
         brokerPosition.Currency = "CNY";
         brokerPosition.LongQty  = e.Quantity;
         this.brokerAccount.AddPosition(brokerPosition);
         autoResetEvent.Set();
     }
 }
Example #6
0
 private void oR3uofPPWO(BinaryWriter obj0, BrokerPosition obj1)
 {
     obj0.Write(obj1.Currency);
     obj0.Write(obj1.LongQty);
     obj0.Write(obj1.MaturityDate.Ticks);
     obj0.Write(obj1.PutOrCall);
     obj0.Write(obj1.Qty);
     obj0.Write(obj1.SecurityExchange);
     obj0.Write(obj1.SecurityType);
     obj0.Write(obj1.ShortQty);
     obj0.Write(obj1.Strike);
     obj0.Write(obj1.Symbol);
     BrokerPositionField[] customFields = obj1.GetCustomFields();
     obj0.Write(customFields.Length);
     foreach (BrokerPositionField brokerPositionField in customFields)
     {
         obj0.Write(brokerPositionField.Name);
         obj0.Write(brokerPositionField.Value);
     }
 }
Example #7
0
        private void _OnRspQryInvestorPosition(object sender, ref PositionField field, int size1, bool bIsLast)
        {
            Instrument inst = InstrumentManager.GetInstrument(field.InstrumentID);

            if (inst == null)
            {
                return;
            }
            //
            BrokerPosition brokerPos = new BrokerPosition(inst
                                                          , ConvertUtil.ConvertExchange(field.ExchangeID)
                                                          , field.Side == PositionSide.Long ? DirectionType.Buy : DirectionType.Sell
                                                          , (long)field.Position
                                                          , (long)field.TodayPosition
                                                          , (long)field.HistoryPosition
                                                          , (long)field.HistoryFrozen
                                                          , (long)field.TodayBSPosition
                                                          , (long)field.TodayBSFrozen);

            mOnBroderPosition?.Invoke(brokerPos);
        }
Example #8
0
        private BrokerPosition lrvuzgJsBI(BinaryReader obj0)
        {
            BrokerPosition brokerPosition = new BrokerPosition();

            brokerPosition.Currency         = obj0.ReadString();
            brokerPosition.LongQty          = obj0.ReadDouble();
            brokerPosition.MaturityDate     = new DateTime(obj0.ReadInt64());
            brokerPosition.PutOrCall        = obj0.ReadInt32();
            brokerPosition.Qty              = obj0.ReadDouble();
            brokerPosition.SecurityExchange = obj0.ReadString();
            brokerPosition.SecurityType     = obj0.ReadString();
            brokerPosition.ShortQty         = obj0.ReadDouble();
            brokerPosition.Strike           = obj0.ReadDouble();
            brokerPosition.Symbol           = obj0.ReadString();
            int num = obj0.ReadInt32();

            for (int index = 0; index < num; ++index)
            {
                string name = obj0.ReadString();
                string str  = obj0.ReadString();
                brokerPosition.AddCustomField(name, str);
            }
            return(brokerPosition);
        }
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                Console.WriteLine(string.Format("GetBrokerInfo:{0}", Clock.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
                //TraderApi.TD_ReqQryTradingAccount(m_pTdApi);
                //TraderApi.TD_ReqQryInvestorPosition(m_pTdApi, null);
                //timerAccount.Enabled = false;
                //timerAccount.Enabled = true;
                //timerPonstion.Enabled = false;
                //timerPonstion.Enabled = true;

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID);

                // account fields
                brokerAccount.BuyingPower = m_TradingAccount.Available;

                brokerAccount.AddField("Available", m_TradingAccount.Available.ToString());
                brokerAccount.AddField("Balance", m_TradingAccount.Balance.ToString());
                brokerAccount.AddField("CashIn", m_TradingAccount.CashIn.ToString());
                brokerAccount.AddField("CloseProfit", m_TradingAccount.CloseProfit.ToString());
                brokerAccount.AddField("Commission", m_TradingAccount.Commission.ToString());
                brokerAccount.AddField("Credit", m_TradingAccount.Credit.ToString());
                brokerAccount.AddField("CurrMargin", m_TradingAccount.CurrMargin.ToString());
                brokerAccount.AddField("DeliveryMargin", m_TradingAccount.DeliveryMargin.ToString());
                brokerAccount.AddField("Deposit", m_TradingAccount.Deposit.ToString());
                brokerAccount.AddField("ExchangeDeliveryMargin", m_TradingAccount.ExchangeDeliveryMargin.ToString());
                brokerAccount.AddField("ExchangeMargin", m_TradingAccount.ExchangeMargin.ToString());
                brokerAccount.AddField("FrozenCash", m_TradingAccount.FrozenCash.ToString());
                brokerAccount.AddField("FrozenCommission", m_TradingAccount.FrozenCommission.ToString());
                brokerAccount.AddField("FrozenMargin", m_TradingAccount.FrozenMargin.ToString());
                brokerAccount.AddField("Interest", m_TradingAccount.Interest.ToString());
                brokerAccount.AddField("InterestBase", m_TradingAccount.InterestBase.ToString());
                brokerAccount.AddField("Mortgage", m_TradingAccount.Mortgage.ToString());
                brokerAccount.AddField("PositionProfit", m_TradingAccount.PositionProfit.ToString());
                brokerAccount.AddField("PreBalance", m_TradingAccount.PreBalance.ToString());
                brokerAccount.AddField("PreCredit", m_TradingAccount.PreCredit.ToString());
                brokerAccount.AddField("PreDeposit", m_TradingAccount.PreDeposit.ToString());
                brokerAccount.AddField("PreMargin", m_TradingAccount.PreMargin.ToString());
                brokerAccount.AddField("PreMortgage", m_TradingAccount.PreMortgage.ToString());
                brokerAccount.AddField("Reserve", m_TradingAccount.Reserve.ToString());
                brokerAccount.AddField("SettlementID", m_TradingAccount.SettlementID.ToString());
                brokerAccount.AddField("Withdraw", m_TradingAccount.Withdraw.ToString());
                brokerAccount.AddField("WithdrawQuota", m_TradingAccount.WithdrawQuota.ToString());

                DataRow[] rows = _dbInMemInvestorPosition.SelectAll();

                foreach (DataRow dr in rows)
                {
                    BrokerPosition brokerPosition = new BrokerPosition {
                        Symbol = dr[DbInMemInvestorPosition.InstrumentID].ToString()
                    };

                    int pos = (int)dr[DbInMemInvestorPosition.Position];
                    TThostFtdcPosiDirectionType PosiDirection = (TThostFtdcPosiDirectionType)dr[DbInMemInvestorPosition.PosiDirection];
                    if (TThostFtdcPosiDirectionType.Long == PosiDirection)
                    {
                        brokerPosition.LongQty = pos;
                    }
                    else if (TThostFtdcPosiDirectionType.Short == PosiDirection)
                    {
                        brokerPosition.ShortQty = pos;
                    }
                    else
                    {
                        if (pos >= 0)//净NET这个概念是什么情况?
                            brokerPosition.LongQty = pos;
                        else
                            brokerPosition.ShortQty = -pos;
                    }
                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PosiDirection, PosiDirection.ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.HedgeFlag, ((TThostFtdcHedgeFlagType)dr[DbInMemInvestorPosition.HedgeFlag]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PositionDate, ((TThostFtdcPositionDateType)dr[DbInMemInvestorPosition.PositionDate]).ToString());
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }

            return brokerInfo;
        }
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                if (_bTdConnected)
                {
                    //tdlog.Info("GetBrokerInfo");
                }
                else
                {
                    //if (nGetBrokerInfoCount < 5)
                    //{
                    //    tdlog.Info("GetBrokerInfo,交易没有连接,查询无效,5次后将不显示");
                    //    ++nGetBrokerInfoCount;
                    //}
                    return null;
                }  

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID);

                // account fields
                brokerAccount.BuyingPower = m_TradingAccount.Available;

                Type t = typeof(CZQThostFtdcTradingAccountField);
                FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
                foreach (FieldInfo field in fields)
                {
                    brokerAccount.AddField(field.Name, field.GetValue(m_TradingAccount).ToString());
                }

                DataRow[] rows = _dbInMemInvestorPosition.SelectAll();

                foreach (DataRow dr in rows)
                {
                    BrokerPosition brokerPosition = new BrokerPosition {
                        Symbol = dr[DbInMemInvestorPosition.InstrumentID].ToString()
                    };

                    int pos = (int)dr[DbInMemInvestorPosition.Position];
                    
                    TZQThostFtdcPosiDirectionType PosiDirection = (TZQThostFtdcPosiDirectionType)dr[DbInMemInvestorPosition.PosiDirection];
                    if (TZQThostFtdcPosiDirectionType.Long == PosiDirection)
                    {
                        brokerPosition.LongQty = pos;
                    }
                    else if (TZQThostFtdcPosiDirectionType.Short == PosiDirection)
                    {
                        brokerPosition.ShortQty = pos;
                    }
                    else
                    {
                        if (pos >= 0)//净NET这个概念是什么情况?
                            brokerPosition.LongQty = pos;
                        else
                            brokerPosition.ShortQty = -pos;
                    }
                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PosiDirection, PosiDirection.ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.HedgeFlag, ((TZQThostFtdcHedgeFlagType)dr[DbInMemInvestorPosition.HedgeFlag]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PositionDate, ((TZQThostFtdcPositionDateType)dr[DbInMemInvestorPosition.PositionDate]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.LongFrozen, dr[DbInMemInvestorPosition.LongFrozen].ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.ShortFrozen, dr[DbInMemInvestorPosition.ShortFrozen].ToString());
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }            

            return brokerInfo;
        }
Example #11
0
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                if (_bTdConnected)
                {
                    //tdlog.Info("GetBrokerInfo");
                }
                else
                {
                    //if (nGetBrokerInfoCount < 5)
                    //{
                    //    tdlog.Info("GetBrokerInfo,交易没有连接,查询无效,5次后将不显示");
                    //    ++nGetBrokerInfoCount;
                    //}
                    return(null);
                }

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID);

                // account fields
                brokerAccount.BuyingPower = m_TradingAccount.Available;

                Type        t      = typeof(CZQThostFtdcTradingAccountField);
                FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
                foreach (FieldInfo field in fields)
                {
                    brokerAccount.AddField(field.Name, field.GetValue(m_TradingAccount).ToString());
                }

                DataRow[] rows = _dbInMemInvestorPosition.SelectAll();

                foreach (DataRow dr in rows)
                {
                    BrokerPosition brokerPosition = new BrokerPosition {
                        Symbol = dr[DbInMemInvestorPosition.InstrumentID].ToString()
                    };

                    int pos = (int)dr[DbInMemInvestorPosition.Position];

                    TZQThostFtdcPosiDirectionType PosiDirection = (TZQThostFtdcPosiDirectionType)dr[DbInMemInvestorPosition.PosiDirection];
                    if (TZQThostFtdcPosiDirectionType.Long == PosiDirection)
                    {
                        brokerPosition.LongQty = pos;
                    }
                    else if (TZQThostFtdcPosiDirectionType.Short == PosiDirection)
                    {
                        brokerPosition.ShortQty = pos;
                    }
                    else
                    {
                        if (pos >= 0)//净NET这个概念是什么情况?
                        {
                            brokerPosition.LongQty = pos;
                        }
                        else
                        {
                            brokerPosition.ShortQty = -pos;
                        }
                    }
                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PosiDirection, PosiDirection.ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.HedgeFlag, ((TZQThostFtdcHedgeFlagType)dr[DbInMemInvestorPosition.HedgeFlag]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PositionDate, ((TZQThostFtdcPositionDateType)dr[DbInMemInvestorPosition.PositionDate]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.LongFrozen, dr[DbInMemInvestorPosition.LongFrozen].ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.ShortFrozen, dr[DbInMemInvestorPosition.ShortFrozen].ToString());
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }

            return(brokerInfo);
        }
        BrokerPosition CreateBrokerPosition(PositionDataXml pos)
        {
            PositionInfo info = GetPositionInfo(pos);

            BrokerPosition brokerPos = new BrokerPosition();
            brokerPos.Symbol = pos.Symbol;
            brokerPos.Direction = pos.PositionType;
            brokerPos.Size = info.CurrentStats.CurrentSize;
            brokerPos.EntryPrice = info.CurrentStats.EntryPrice;
            brokerPos.EntryDate = info.OpenDate;

            return brokerPos;
        }
Example #13
0
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                Console.WriteLine(string.Format("GetBrokerInfo:{0}", Clock.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
                //TraderApi.TD_ReqQryTradingAccount(m_pTdApi);
                //TraderApi.TD_ReqQryInvestorPosition(m_pTdApi, null);
                //timerAccount.Enabled = false;
                //timerAccount.Enabled = true;
                //timerPonstion.Enabled = false;
                //timerPonstion.Enabled = true;

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID);

                // account fields
                brokerAccount.BuyingPower = m_TradingAccount.Available;

                Type        t      = typeof(CZQThostFtdcTradingAccountField);
                FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Instance);
                foreach (FieldInfo field in fields)
                {
                    brokerAccount.AddField(field.Name, field.GetValue(m_TradingAccount).ToString());
                }

                DataRow[] rows = _dbInMemInvestorPosition.SelectAll();

                foreach (DataRow dr in rows)
                {
                    BrokerPosition brokerPosition = new BrokerPosition {
                        Symbol = dr[DbInMemInvestorPosition.InstrumentID].ToString()
                    };

                    int pos = (int)dr[DbInMemInvestorPosition.Position];

                    TZQThostFtdcPosiDirectionType PosiDirection = (TZQThostFtdcPosiDirectionType)dr[DbInMemInvestorPosition.PosiDirection];
                    if (TZQThostFtdcPosiDirectionType.Long == PosiDirection)
                    {
                        brokerPosition.LongQty = pos;
                    }
                    else if (TZQThostFtdcPosiDirectionType.Short == PosiDirection)
                    {
                        brokerPosition.ShortQty = pos;
                    }
                    else
                    {
                        if (pos >= 0)//净NET这个概念是什么情况?
                        {
                            brokerPosition.LongQty = pos;
                        }
                        else
                        {
                            brokerPosition.ShortQty = -pos;
                        }
                    }
                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PosiDirection, PosiDirection.ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.HedgeFlag, ((TZQThostFtdcHedgeFlagType)dr[DbInMemInvestorPosition.HedgeFlag]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PositionDate, ((TZQThostFtdcPositionDateType)dr[DbInMemInvestorPosition.PositionDate]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.LongFrozen, dr[DbInMemInvestorPosition.LongFrozen].ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.ShortFrozen, dr[DbInMemInvestorPosition.ShortFrozen].ToString());
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }

            return(brokerInfo);
        }
Example #14
0
        public BrokerInfo GetBrokerInfo()
        {
            BrokerInfo brokerInfo = new BrokerInfo();

            if (IsConnected)
            {
                Console.WriteLine(string.Format("GetBrokerInfo:{0}", Clock.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")));
                //TraderApi.TD_ReqQryTradingAccount(m_pTdApi);
                //TraderApi.TD_ReqQryInvestorPosition(m_pTdApi, null);
                //timerAccount.Enabled = false;
                //timerAccount.Enabled = true;
                //timerPonstion.Enabled = false;
                //timerPonstion.Enabled = true;

                BrokerAccount brokerAccount = new BrokerAccount(m_TradingAccount.AccountID);

                // account fields
                brokerAccount.BuyingPower = m_TradingAccount.Available;

                brokerAccount.AddField("Available", m_TradingAccount.Available.ToString());
                brokerAccount.AddField("Balance", m_TradingAccount.Balance.ToString());
                brokerAccount.AddField("CashIn", m_TradingAccount.CashIn.ToString());
                brokerAccount.AddField("CloseProfit", m_TradingAccount.CloseProfit.ToString());
                brokerAccount.AddField("Commission", m_TradingAccount.Commission.ToString());
                brokerAccount.AddField("Credit", m_TradingAccount.Credit.ToString());
                brokerAccount.AddField("CurrMargin", m_TradingAccount.CurrMargin.ToString());
                brokerAccount.AddField("DeliveryMargin", m_TradingAccount.DeliveryMargin.ToString());
                brokerAccount.AddField("Deposit", m_TradingAccount.Deposit.ToString());
                brokerAccount.AddField("ExchangeDeliveryMargin", m_TradingAccount.ExchangeDeliveryMargin.ToString());
                brokerAccount.AddField("ExchangeMargin", m_TradingAccount.ExchangeMargin.ToString());
                brokerAccount.AddField("FrozenCash", m_TradingAccount.FrozenCash.ToString());
                brokerAccount.AddField("FrozenCommission", m_TradingAccount.FrozenCommission.ToString());
                brokerAccount.AddField("FrozenMargin", m_TradingAccount.FrozenMargin.ToString());
                brokerAccount.AddField("Interest", m_TradingAccount.Interest.ToString());
                brokerAccount.AddField("InterestBase", m_TradingAccount.InterestBase.ToString());
                brokerAccount.AddField("Mortgage", m_TradingAccount.Mortgage.ToString());
                brokerAccount.AddField("PositionProfit", m_TradingAccount.PositionProfit.ToString());
                brokerAccount.AddField("PreBalance", m_TradingAccount.PreBalance.ToString());
                brokerAccount.AddField("PreCredit", m_TradingAccount.PreCredit.ToString());
                brokerAccount.AddField("PreDeposit", m_TradingAccount.PreDeposit.ToString());
                brokerAccount.AddField("PreMargin", m_TradingAccount.PreMargin.ToString());
                brokerAccount.AddField("PreMortgage", m_TradingAccount.PreMortgage.ToString());
                brokerAccount.AddField("Reserve", m_TradingAccount.Reserve.ToString());
                brokerAccount.AddField("SettlementID", m_TradingAccount.SettlementID.ToString());
                brokerAccount.AddField("Withdraw", m_TradingAccount.Withdraw.ToString());
                brokerAccount.AddField("WithdrawQuota", m_TradingAccount.WithdrawQuota.ToString());

                DataRow[] rows = _dbInMemInvestorPosition.SelectAll();

                foreach (DataRow dr in rows)
                {
                    BrokerPosition brokerPosition = new BrokerPosition {
                        Symbol = dr[DbInMemInvestorPosition.InstrumentID].ToString()
                    };

                    int pos = (int)dr[DbInMemInvestorPosition.Position];
                    TThostFtdcPosiDirectionType PosiDirection = (TThostFtdcPosiDirectionType)dr[DbInMemInvestorPosition.PosiDirection];
                    if (TThostFtdcPosiDirectionType.Long == PosiDirection)
                    {
                        brokerPosition.LongQty = pos;
                    }
                    else if (TThostFtdcPosiDirectionType.Short == PosiDirection)
                    {
                        brokerPosition.ShortQty = pos;
                    }
                    else
                    {
                        if (pos >= 0)//净NET这个概念是什么情况?
                        {
                            brokerPosition.LongQty = pos;
                        }
                        else
                        {
                            brokerPosition.ShortQty = -pos;
                        }
                    }
                    brokerPosition.Qty = brokerPosition.LongQty - brokerPosition.ShortQty;
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PosiDirection, PosiDirection.ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.HedgeFlag, ((TThostFtdcHedgeFlagType)dr[DbInMemInvestorPosition.HedgeFlag]).ToString());
                    brokerPosition.AddCustomField(DbInMemInvestorPosition.PositionDate, ((TThostFtdcPositionDateType)dr[DbInMemInvestorPosition.PositionDate]).ToString());
                    brokerAccount.AddPosition(brokerPosition);
                }
                brokerInfo.Accounts.Add(brokerAccount);
            }

            return(brokerInfo);
        }