public void CancelOrder(Order order) { _ordersAllReadyCanseled.Add(order); QuikSharp.DataStructures.Transaction.Order qOrder = new QuikSharp.DataStructures.Transaction.Order(); qOrder.SecCode = order.SecurityNameCode.Split('_')[0]; qOrder.Account = order.PortfolioNumber; qOrder.ClassCode = _securities.Find(sec => sec.Name == order.SecurityNameCode).NameClass; if (order.NumberMarket == "") { qOrder.OrderNum = 0; } else { qOrder.OrderNum = Convert.ToInt64(order.NumberMarket); } //qOrder.OrderNum = Convert.ToInt64(order.NumberMarket); lock (_serverLocker) { var res = QuikLua.Orders.KillOrder(qOrder).Result; } }
public void SendOrder(Order order) { QuikSharp.DataStructures.Transaction.Order qOrder = new QuikSharp.DataStructures.Transaction.Order(); qOrder.SecCode = order.SecurityNameCode.Split('_')[0]; qOrder.Account = order.PortfolioNumber; qOrder.ClassCode = _securities.Find(sec => sec.Name == order.SecurityNameCode).NameClass; qOrder.Quantity = Convert.ToInt32(order.Volume); qOrder.Operation = order.Side == Side.Buy ? Operation.Buy : Operation.Sell; qOrder.Price = order.Price; qOrder.Comment = order.NumberUser.ToString(); lock (_serverLocker) { var res = QuikLua.Orders.CreateOrder(qOrder).Result; if (res > 0) { order.NumberUser = Convert.ToInt32(res); if (MyOrderEvent != null) { MyOrderEvent(order); } } if (res < 0) { order.State = OrderStateType.Fail; if (MyOrderEvent != null) { MyOrderEvent(order); } } } }
private void EventsOnOnOrder(QuikSharp.DataStructures.Transaction.Order qOrder) { lock (orderLocker) { try { if (qOrder.TransID == 0) { return; } Order order = new Order(); order.NumberUser = Convert.ToInt32(qOrder.TransID); //Convert.qOrder.OrderNum;TransID order.NumberMarket = qOrder.OrderNum.ToString(new CultureInfo("ru-RU")); order.TimeCallBack = ServerTime; order.SecurityNameCode = qOrder.SecCode + "_" + qOrder.ClassCode; order.Price = qOrder.Price; order.Volume = qOrder.Quantity; order.VolumeExecute = qOrder.Quantity - qOrder.Balance; order.PortfolioNumber = qOrder.Account; order.TypeOrder = qOrder.Flags.ToString().Contains("IsLimit") ? OrderPriceType.Limit : OrderPriceType.Market; order.ServerType = ServerType.QuikLua; if (qOrder.State == State.Active) { order.State = OrderStateType.Activ; order.TimeCallBack = new DateTime(qOrder.Datetime.year, qOrder.Datetime.month, qOrder.Datetime.day, qOrder.Datetime.hour, qOrder.Datetime.min, qOrder.Datetime.sec); } else if (qOrder.State == State.Completed) { order.State = OrderStateType.Done; order.VolumeExecute = qOrder.Quantity; order.TimeDone = order.TimeCallBack; } else if (qOrder.State == State.Canceled) { order.TimeCancel = new DateTime(qOrder.WithdrawDatetime.year, qOrder.WithdrawDatetime.month, qOrder.WithdrawDatetime.day, qOrder.WithdrawDatetime.hour, qOrder.WithdrawDatetime.min, qOrder.WithdrawDatetime.sec); order.State = OrderStateType.Cancel; order.VolumeExecute = 0; } else if (qOrder.Balance != 0) { order.State = OrderStateType.Patrial; order.VolumeExecute = qOrder.Quantity - qOrder.Balance; } if (_ordersAllReadyCanseled.Find(o => o.NumberUser == qOrder.TransID) != null) { order.State = OrderStateType.Cancel; order.TimeCancel = order.TimeCallBack; } if (qOrder.Operation == Operation.Buy) { order.Side = Side.Buy; } else { order.Side = Side.Sell; } if (MyOrderEvent != null) { MyOrderEvent(order); } } catch (Exception error) { SendLogMessage(error.ToString(), LogMessageType.Error); } } }