/// <summary> /// Runs a simulation of an active market based on user input /// </summary> private static void Simulator() { string input = ""; while (input != "H" && input != "M" && input != "L" && input != "X") { Console.Write("Please enter a market volatility (H)igh, (M)edium, or (L)ow or press X to go back to the main menu: "); input = Console.ReadLine().ToUpper(); } switch (input) { case "H": volatility = MarketVolatility.High; break; case "M": volatility = MarketVolatility.Medium; break; case "L": volatility = MarketVolatility.Low; break; case "X": return; } account.NextPeriod(); MarketSimulator.Tick(volatility, stocks); }
public MainGridViewModel(OrdersRepository repository) { this.repository = repository; Orders = repository.Orders; this.refreshCommand = new Command(ExecuteRefreshCommand); this.market = new MarketSimulator(); PullToRefreshCommand = new Command(ExecutePullToRefreshCommand); }
public MainGridViewModel(OrdersRepository repository) { this.repository = repository; Orders = repository.Orders; // this.SwipeButtonCommand = new Command((o) => SwipeButtonClickExecute(o)); this.refreshCommand = new Command(ExecuteRefreshCommand); this.market = new MarketSimulator(); this.PullToRefreshCommand = new Command(ExecutePullToRefreshCommand); this.LoadMoreCommand = new Command(ExecuteLoadMoreCommand); }
public override MarketSimulator.Contracts.Order FilterLimitOrders(MarketSimulator.Contracts.Order order) { if (order != null && !_compete && order.Type == OrderType.LimitOrder) { return null; } else { return order; } }
public MarketSimulator.Contracts.Order GetNextAction(MarketSimulator.Contracts.LimitOrderBookSnapshot limitOrderBook) { count++; if (count == 50) { var order = new MarketSimulator.Contracts.Order(); order.Valid = true; order.Type = MarketSimulator.Contracts.OrderType.MarketOrder; order.Quantity = 10000; order.Side = MarketSimulator.Contracts.OrderSide.Buy; order.UserID = "Whale"; return order; } return null; }
public MarketSimulator.Contracts.Order GetNextAction(MarketSimulator.Contracts.LimitOrderBookSnapshot limitOrderBookSnapshot, int day, int tradingPeriod) { if (!WillTradeInThisPeriod(day, tradingPeriod)) { return null; } var randomDraw = (ExpectedAssetLiquidationValue - ExpectedAssetLiquidationValueOrderRange) + (_random.NextDouble() * ExpectedAssetLiquidationValueOrderRange * 2); var orderQuantity = Math.Round(_random.NextDouble() * _maxOrderQuantity,0); Order order = new Order(); order.Price = randomDraw; order.Quantity = orderQuantity; order.UserID = _name; if (randomDraw > ExpectedAssetLiquidationValue) { //sell order.Side = OrderSide.Sell; if (limitOrderBookSnapshot != null && limitOrderBookSnapshot.BestBidPrice != null && randomDraw < limitOrderBookSnapshot.BestBidPrice) { //sell market order order.Type = OrderType.MarketOrder; } else { //sell limit order order.Type = OrderType.LimitOrder; } } else { //buy order.Side = OrderSide.Buy; if (limitOrderBookSnapshot != null && limitOrderBookSnapshot.BestAskPrice != null && randomDraw > limitOrderBookSnapshot.BestAskPrice) { //buy market order order.Type = OrderType.MarketOrder; } else { //buy limit order order.Type = OrderType.LimitOrder; } } order = FilterLimitOrders(order); return order; }