コード例 #1
0
ファイル: API_CMA.cs プロジェクト: fagan2888/CAT
        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
        }