Пример #1
0
        public bool AppendMagicDataToOrders(IList <string> OrderIDs)
        {
            var data = new DataBlock();

            foreach (var ID in OrderIDs)
            {
                var row = new Row();

                row.Add(new Field("TYPE", FieldType.StringScalar, "AppendEventData"));
                row.Add(new Field("REFERS_TO_ID", FieldType.StringScalar, ID));
                // populate the FIX_MSG field just to demonstrate the concept

                string sRandomValue;

                int r = _rand.Next(100);
                sRandomValue = r.ToString() + "%";
                row.Add(new Field("FIX_MSG", FieldType.StringScalar, sRandomValue));
                const int UPDATE_OVERWRITE_EXISTING = 2;
                row.Add(new Field("UPDATE_TYPE", FieldType.IntScalar, UPDATE_OVERWRITE_EXISTING));
                data.Add(row);
            }

            _query.Poke("ORDERS;*;", data.ConvertToBinary());

            return(true);
        }
Пример #2
0
        public bool CancelOneOrder(string orderID, string msg)
        {
            var data = new DataBlock();
            var row  = new Row();

            row.Add(new Field("TYPE", FieldType.StringScalar, "UserSubmitCancel"));
            row.Add(new Field("REFERS_TO_ID", FieldType.StringScalar, orderID));
            if (msg != null && msg.Length > 0)
            {
                row.Add(new Field("REASON", FieldType.StringScalar, msg));
            }

            data.Add(row);

            _query.Poke("ORDERS;*;", data.ConvertToBinary());

            return(true);
        }
Пример #3
0
        public bool CreateTrades(IList <Trade> trades)
        {
            if (trades.Count == 0)
            {
                return(false);
            }

            var data = new DataBlock();

            foreach (var trade in trades)
            {
                var row = new Row();

                row.Add(new Field("TYPE", FieldType.StringScalar, "UserSubmitStagedOrder"));
                row.Add(new Field("BANK", FieldType.StringScalar, Bank));
                row.Add(new Field("BRANCH", FieldType.StringScalar, Branch));
                row.Add(new Field("CUSTOMER", FieldType.StringScalar, Customer));
                row.Add(new Field("DEPOSIT", FieldType.StringScalar, Deposit));
                row.Add(new Field("DISP_NAME", FieldType.StringScalar, trade.Symbol));
                row.Add(new Field("VOLUME", FieldType.IntScalar, trade.Amount));
                row.Add(new Field("VOLUME_TYPE", FieldType.StringScalar, "AsEntered"));
                row.Add(new Field("PRICE_TYPE", FieldType.StringScalar, "Market"));
                row.Add(new Field("PRICE", FieldType.PriceScalar, new Price("0.0")));
                row.Add(new Field("GOOD_UNTIL", FieldType.StringScalar, "DAY"));
                string side = trade.Side;
                if (side == "Short" || side == "SHORT")
                {
                    side = "SellShort";
                }
                row.Add(new Field("BUYORSELL", FieldType.StringScalar, side));
                if (side == "SellShort")
                {
                    row.Add(new Field("SHORT_LOCATE_ID", FieldType.StringScalar, "GSCO"));
                }

                row.Add(new Field("EXIT_VEHICLE", FieldType.StringScalar, "NONE"));
                row.Add(new Field("CURRENCY", FieldType.StringScalar, "USD"));
                row.Add(new Field("ACCT_TYPE", FieldType.IntScalar, 119));
                if (trade.Symbol != "BAD")
                {
                    row.Add(new Field("STYP", FieldType.IntScalar, 1)); // STOCK
                }
                row.Add(new Field("PORTFOLIO_NAME", FieldType.StringScalar, trade.Algo));
                row.Add(new Field("ORDER_TAG", FieldType.StringScalar, trade.Algo)); // STOCK

                data.Add(row);
            }

            _query.Poke("ORDERS;*;", data.ConvertToBinary());

            /*
             * if (_rand.Next(5) == 0)
             * {
             *  var IDs = new List<string>();
             *
             *  foreach (KeyValuePair<string, OrderRecord> entry in _book)
             *  {
             *      if (entry.Value.Symbol == "MSFT")
             *          IDs.Add(entry.Value.OrderID);
             *  }
             *  AppendMagicDataToOrders(IDs);
             * }
             */

            return(true);
        }