private void CreateInstance() { _omsclient = new RoboTrading(); #region OnStatusChanged _omsclient.OnStatusChanged += (iStat, sDesc) => { if (iStat == 100) { this.Start(); } if (iStat == 110) { this.Stop(); } }; #endregion #region OnNewOrderReply _omsclient.OnNewOrderReply += (id, key, sDesc, iStat) => { var info = ""; if (iStat == 1) { return; } _track.TryRemove(id, out info); if (sDesc.Contains("Erro de acesso a base de dados")) { // var detail = info.Split(' '); // var order = new NewOrderData(); // _orders.TryGetValue(detail[0], out order); // order.Symbol = detail[1]; // order.ClientID = detail[4]; // order.Quantity = double.Parse(detail[5]); // var iReqID = 0; // var status = "OK"; // if (_rt != null) _rt.NewOrder(order, out iReqID, out status); // if (status != "OK") OnStatusChanged("Nova tentativa para: " + info); // else OnStatusChanged("OFF " + status + " " + info); // _track.TryAdd(iReqID, info); // return; } NotifyOMS(info + sDesc.Trim()); }; #endregion #region OnCancelOrderReply _omsclient.OnCancelOrderReply += (key, sDesc, iStat) => { if (iStat > 1) { NotifyOMS("Falha ao cancelar ordem #" + key.Trim() + " " + sDesc); return; } //var info = new OrderInfo(); //var output = "Ordem " + key.Trim() + " cancelada com sucesso"; ////if (iStat == 1) ShadowOrders.TryRemove(key.Trim(), out info); //if (iStat != 1) output = output // .Replace("cancelada com sucesso", " nao foi cancelada. Motivo: " + sDesc); }; #endregion #region OnOrderListReply _omsclient.OnOrderListReply += (iCount, s, i) => { #region Save all pending order in a list //int iNumOrders; //var data = new string[3]; //var iReply = _rt.GetOrderIDsFromList(new IDFilter(), // out data[0], out iNumOrders, out data[1], out data[2]); //foreach (var id in data[0].Trim().Split('\t')) //{ // var info = new OrderInfo(); // iReply = _rt.GetOrderInfo(id.Trim(), "F", info, out data[2]); // if (info.Identificator.Length > 0) // { // if (info.OrderStatus == "E") // ReferencePrice.TryAdd(info.Identificator, info.Price); // Debug.WriteLine(info.Identificator); // } //} #endregion #region OnOrderListUpdate _omsclient.OnOrderListUpdate += (key, sDesc, iStat) => { var info = new OrderInfo(); iStat = _omsclient.GetOrderInfo(key.Trim(), "F", info, out sDesc); sDesc = iStat + ": " + sDesc + " > " + info.OrderID + " " + info.OrderStatus + " " + info.Quantity; Debug.WriteLine(sDesc); if (!info.Identificator.Contains(":")) { return; } if (info.OrderStatus == "X") { } //if (info.OrderStatus == "E") // _porders.TryAdd(info.OrderID, info); }; #endregion }; #endregion }