Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        /// <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;
            }
        }