private static Order Deviation(Order order,
                                       OrderDeviationMode mode, int threshold,
                                       OrderDeviationMethod method,
                                       OrderPriceAdjustMethod adjustMethod,
                                       byte slippage, byte maxTry)
        {
            var info = GetOrderInfo(order);

            if (mode == OrderDeviationMode.Disabled)
            {
                info.DeviationMode = mode;
            }
            else
            {
                switch (info.DeviationMode)
                {
                case OrderDeviationMode.QuoteAndTrade:
                case OrderDeviationMode.Trade:
                case OrderDeviationMode.Time:
                    info.DeviationMode |= mode;
                    break;

                default:
                    info.DeviationMode = mode;
                    break;
                }
            }
            info.DeviationInfo.Threshold         = threshold;
            info.DeviationInfo.Method            = method;
            info.DeviationInfo.PriceAdjustMethod = adjustMethod;
            info.DeviationInfo.Slippage          = slippage;
            info.DeviationInfo.MaxTry            = maxTry;
            return(order);
        }
 public void Load(byte[] bytes)
 {
     using (var stream = new MemoryStream(bytes))
         using (var reader = new BinaryReader(stream)) {
             OpenClose     = (OpenCloseType)reader.ReadByte();
             HedgeFlag     = (HedgeFlagType)reader.ReadByte();
             Side          = (OrderSide)reader.ReadByte();
             DeviationMode = (OrderDeviationMode)reader.ReadByte();
             FailedMethod  = (OrderAdjustFailedMethod)reader.ReadByte();
             ParentOrderId = reader.ReadInt32();
             Market2Limit.LoadForm(reader);
             DeviationInfo.LoadForm(reader);
         }
 }
 private static Order PriceDeviation(Order order, byte priceOffset, OrderDeviationMode mode,
                                     OrderPriceAdjustMethod adjustMethod = OrderPriceAdjustMethod.MatchPrice, byte slippage = 1, byte maxTry = 3)
 {
     return(Deviation(order, mode, priceOffset, OrderDeviationMethod.PriceAdjust, adjustMethod, slippage, maxTry));
 }