public static ORDER_BILL ProcessPriceForOrderClosing(MarketOrder order, Account account, TradeSharpConnection ctx) { AccountGroup.MarkupType markType; var spreadDelta = AcccountMarkupDictionary.GetMarkupAbs(account.Group, order.Symbol, out markType); var markupExit = 0f; if (spreadDelta > 0 && markType != AccountGroup.MarkupType.NoMarkup) { markupExit = spreadDelta; if (markType == AccountGroup.MarkupType.Markup) { order.PriceExit -= spreadDelta * order.Side; } } var bill = ctx.ORDER_BILL.FirstOrDefault(b => b.Position == order.ID); if (bill != null) { bill.MarkupExit = markupExit; } //else // Logger.Debug("Markup: ProcessPriceForOrderClosing - can not find the bill for pos " + order.ID); return(bill); }
/// <summary> /// добавить маркапы и прочее шкурилово /// /// вызывается на открытии рыночного ордера, срабатывании отложенного /// (для всех - единая точка входа - SaveOrder & Notify Client) /// </summary> public static OrderBill ProcessOrderOpening(MarketOrder order, Account account) { AccountGroup.MarkupType markType; var spreadDelta = AcccountMarkupDictionary.GetMarkupAbs(account.Group, order.Symbol, out markType); var bill = new OrderBill(0, markType, 0); if (spreadDelta > 0 && markType != AccountGroup.MarkupType.NoMarkup) { if (markType == AccountGroup.MarkupType.Markup) { order.PriceEnter += spreadDelta * order.Side; } bill.MarkupEnter = spreadDelta; } return(bill); }