예제 #1
0
        public void SubmitBid(Bid bid)
        {
            if (bid.BidAmount > bid.PurchasingTeam.Balance - TeamBids[bid.PurchasingTeam].Sum(b => b.BidAmount))
            {
                return;                 //	Team can't afford it (including existing potentially successful bids)
            }
            if (bid.PurchasingTeam.Players.Any(p => p.Number == bid.PlayerNumber))
            {
                return;                 //	That number is already taken
            }
            if (TeamBids[bid.PurchasingTeam].Any(b => b.PlayerNumber == bid.PlayerNumber))
            {
                return;                 //	One team putting in two bids for the same team number
            }
            if (!Bids.ContainsKey(bid.Player.Index))
            {
                Bids[bid.Player.Index] = new List <Bid>();
            }

            if (Bids[bid.Player.Index].Any(b => b.PurchasingTeam == bid.PurchasingTeam))
            {
                return;                 //	Already put in one bid, ignore subsequent bids for this week
            }
            Bids[bid.Player.Index].Add(bid);
        }
예제 #2
0
 private void OrderBookUpdateHandler(OrderBookFullUpdateData data)
 {
     if (!TrackedSymbol.Equals(data.Symbol))
     {
         return;
     }
     LastTradePrice    = data.LastTradePrice;
     LastTradeQuantity = data.LastTradeQuantity;
     SpotPrice         = data.MarkPrice;
     foreach (Tuple <decimal, decimal> ask in data.AskUpdates)
     {
         if (ask.Item2 == 0)
         {
             if (Asks.ContainsKey(ask.Item1))
             {
                 Asks.TryRemove(ask.Item1, out _);
             }
         }
         else
         {
             Asks[ask.Item1] = ask.Item2;
         }
     }
     foreach (Tuple <decimal, decimal> bid in data.BidUpdates)
     {
         if (bid.Item2 == 0)
         {
             if (Bids.ContainsKey(bid.Item1))
             {
                 Bids.TryRemove(bid.Item1, out _);
             }
         }
         else
         {
             Bids[bid.Item1] = bid.Item2;
         }
     }
     LastTrades = data.Trades;
     LastFullUpdateTimestamp = data.LastFullTimestamp;
     OrderBookUpdatedList?.Invoke(data.BidUpdates, data.AskUpdates);
     OrderBookUpdated?.Invoke(this);
 }
 public long GetBetForPlayer(int position)
 {
     return(Bids.ContainsKey(position) ? Bids[position].Bet : 0);
 }