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); }
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); }
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); }