/// <summary> /// Executes the order. /// </summary> /// <param name="symbol">The symbol.</param> /// <param name="actualSignal">The actual signal.</param> private void ExecuteOrder(string symbol, OrderSignal actualSignal, MomersionState actualSenderStrategy) { int?shares; int newOrderID; switch (actualSignal) { case OrderSignal.goShort: case OrderSignal.goLong: // Estimate the operation shares and submit an order only if the estimation returns not null shares = EstimatePosition(symbol, actualSignal); if (shares.HasValue) { newOrderID = Transactions.LastOrderId + 1; SenderStrategy.Add(newOrderID, actualSenderStrategy); MarketOrder(symbol, shares.Value); } break; case OrderSignal.closeShort: case OrderSignal.closeLong: shares = Portfolio[symbol].Quantity; newOrderID = Transactions.LastOrderId + 1; SenderStrategy.Add(newOrderID, actualSenderStrategy); MarketOrder(symbol, -shares.Value); break; default: break; } }
/// <summary> /// Executes the order. /// </summary> /// <param name="symbol">The symbol.</param> /// <param name="actualSignal">The actual signal.</param> private void ExecuteOrder(string symbol, OrderSignal actualSignal, MomersionState actualSenderStrategy) { int? shares; int newOrderID; switch (actualSignal) { case OrderSignal.goShort: case OrderSignal.goLong: // Estimate the operation shares and submit an order only if the estimation returns not null shares = EstimatePosition(symbol, actualSignal); if (shares.HasValue) { newOrderID = Transactions.LastOrderId + 1; SenderStrategy.Add(newOrderID, actualSenderStrategy); MarketOrder(symbol, shares.Value); } break; case OrderSignal.closeShort: case OrderSignal.closeLong: shares = Portfolio[symbol].Quantity; newOrderID = Transactions.LastOrderId + 1; SenderStrategy.Add(newOrderID, actualSenderStrategy); MarketOrder(symbol, -shares.Value); break; default: break; } }