コード例 #1
0
 private void RemoveWorstOrderLeg(ThreadSafeAsk ask, ProposedOrder propOrder, bool useLock = false)
 {
     while (propOrder.IsValidOrder && propOrder.BuyRatio < ask.GetBuyRatio(propOrder.SellCommodityID, propOrder.BuyCommodityID) && propOrder.ProposedQuanityBuy > 0)
     {
         var worstPerfomingOrderLeg = propOrder.RemoveWorstPerforming(useLock);
         if (worstPerfomingOrderLeg == null)
         {
             break;
         }
         RebalanceOrder(propOrder, useLock);
         propOrder.CleanUpOrder();
     }
 }
コード例 #2
0
        private ProposedOrder BuildProposedOrder(ThreadSafeAsk ask, long askQuantity, IEnumerable <ProposedOrderLeg> orderLegs, bool useLock = false, bool isMarketOrder = false)
        {
            ProposedOrder propOrder = new ProposedOrder(ask);

            if (ask.IsBuy)
            {
                BuildProposedOrderForBuy(ask, askQuantity, orderLegs, propOrder, useLock);
            }
            else
            {
                BuildProposedOrderForSell(ask, askQuantity, orderLegs, propOrder, useLock);
            }
            propOrder.CleanUpOrder();
            if (!isMarketOrder && ask.AllowPartialFill && propOrder.IsValidOrder)
            {
                RemoveWorstOrderLeg(ask, propOrder, useLock);
            }

            orderLegs = null;
            return(propOrder);
        }