Exemplo n.º 1
0
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="actualOrder">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, SignalInfo actualOrder, TradeBars data)
        {
            decimal limitPrice = 0m;
            int     shares     = PositionShares(symbol, actualOrder);
            ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();
            OrderTicket           ticket;

            switch (actualOrder.Value)
            {
            case OrderSignal.goLongLimit:
                // Define the limit price.
                limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                ticket     = LimitOrder(symbol, shares, limitPrice, actualOrder.Id.ToString(CultureInfo.InvariantCulture));

                _ticketsQueue.Add(ticket);

                break;

            case OrderSignal.goShortLimit:
                limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                ticket     = LimitOrder(symbol, shares, limitPrice, actualOrder.Id.ToString(CultureInfo.InvariantCulture));
                _ticketsQueue.Add(ticket);
                break;

            case OrderSignal.goLong:
            case OrderSignal.goShort:
            case OrderSignal.closeLong:
            case OrderSignal.closeShort:
            case OrderSignal.revertToLong:
            case OrderSignal.revertToShort:
                ticket = MarketOrder(symbol, shares, false, actualOrder.Id.ToString(CultureInfo.InvariantCulture));
                _ticketsQueue.Add(ticket);
                break;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="actualOrder">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, OrderSignal actualOrder, TradeBars data)
        {
            decimal limitPrice = 0m;
            int     shares     = PositionShares(symbol, actualOrder);
            ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();

            switch (actualOrder)
            {
            case OrderSignal.goLongLimit:
                // Define the limit price.
                limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                _ticketsQueue.Enqueue(LimitOrder(symbol, shares, limitPrice));
                break;

            case OrderSignal.goShortLimit:
                limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                _ticketsQueue.Enqueue(LimitOrder(symbol, shares, limitPrice));
                break;

            case OrderSignal.goLong:
            case OrderSignal.goShort:
            case OrderSignal.closeLong:
            case OrderSignal.closeShort:
            case OrderSignal.revertToLong:
            case OrderSignal.revertToShort:
                _ticketsQueue.Enqueue(MarketOrder(symbol, shares));     // Send the order.
                break;

            default: break;
            }
        }
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="signalInfo">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, SignalInfo signalInfo, KeyValuePair <Symbol, TradeBar> data)
        {
            decimal limitPrice = 0m;
            int     shares     = PositionShares(symbol, signalInfo);

            if (shares == 0)
            {
                return;
            }
            ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();
            OrderTicket           ticket;

            switch (signalInfo.Value)
            {
            case OrderSignal.goLongLimit:
                // Define the limit price.
                signalInfo.IsActive = false;
                limitPrice          = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                ticket = LimitOrder(symbol, shares, limitPrice, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                _ticketsQueue.Add(ticket);
                break;

            case OrderSignal.goShortLimit:
                signalInfo.IsActive = false;
                limitPrice          = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                ticket = LimitOrder(symbol, shares, limitPrice, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                _ticketsQueue.Add(ticket);
                break;

            case OrderSignal.goLong:
            case OrderSignal.goShort:
            case OrderSignal.closeLong:
            case OrderSignal.closeShort:
            case OrderSignal.revertToLong:
            case OrderSignal.revertToShort:
                signalInfo.IsActive = false;
                ticket = MarketOrder(symbol, shares, false, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                _ticketsQueue.Add(ticket);
                break;

            default: break;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="signalInfo">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, SignalInfo signalInfo, KeyValuePair <Symbol, TradeBar> data)
        {
            int shares = Convert.ToInt32(PositionShares(symbol, signalInfo));

            if (shares != 0)
            {
                ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();
                OrderTicket           ticket;
                decimal limitPrice;
                switch (signalInfo.Value)
                {
                case OrderSignal.goLongLimit:
                    // Define the limit price.
                    limitPrice = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                    ticket     = LimitOrder(symbol, shares, limitPrice,
                                            signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    break;

                case OrderSignal.goShortLimit:
                    limitPrice = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                    ticket     = LimitOrder(symbol, shares, limitPrice,
                                            signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    break;

                case OrderSignal.goLong:
                case OrderSignal.goShort:
                case OrderSignal.closeLong:
                case OrderSignal.closeShort:
                case OrderSignal.revertToLong:
                case OrderSignal.revertToShort:
                    ticket = MarketOrder(symbol, shares, false, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="signalInfo">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, SignalInfo signalInfo, KeyValuePair<Symbol, TradeBar> data)
        {
            decimal limitPrice = 0m;
            int shares = Convert.ToInt32(PositionShares(symbol, signalInfo));
            if (shares == 0)
            {
                return;
            }
            ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();
            OrderTicket ticket;

            if (shares == 0)
                signalInfo.Value = OrderSignal.doNothing;

            switch (signalInfo.Value)
            {
                case OrderSignal.goLongLimit:
                    // Define the limit price.
                    limitPrice = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                    //ticket = MarketOrder(symbol, shares, false, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    ticket = LimitOrder(symbol, shares, limitPrice, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    //_ticketsQueue.Add(ticket);
                    break;

                case OrderSignal.goShortLimit:
                    limitPrice = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                    ticket = MarketOrder(symbol, shares, false, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    //ticket = LimitOrder(symbol, shares, limitPrice, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    //_ticketsQueue.Add(ticket);
                    break;

                case OrderSignal.goLong:
                case OrderSignal.goShort:
                case OrderSignal.closeLong:
                case OrderSignal.closeShort:
                case OrderSignal.revertToLong:
                case OrderSignal.revertToShort:
                    ticket = MarketOrder(symbol, shares, false, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                    //_ticketsQueue.Add(ticket);
                    break;

                default: break;
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="actualOrder">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, SignalInfo actualOrder, TradeBars data)
        {
            decimal limitPrice = 0m;
            int shares = PositionShares(symbol, actualOrder);
            ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();
            OrderTicket ticket;
            switch (actualOrder.Value)
            {
                case OrderSignal.goLongLimit:
                    // Define the limit price.
                    limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                    ticket = LimitOrder(symbol, shares, limitPrice, actualOrder.Id.ToString(CultureInfo.InvariantCulture));

                    _ticketsQueue.Add(ticket);

                    break;

                case OrderSignal.goShortLimit:
                    limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                    ticket = LimitOrder(symbol, shares, limitPrice, actualOrder.Id.ToString(CultureInfo.InvariantCulture));
                    _ticketsQueue.Add(ticket);
                    break;

                case OrderSignal.goLong:
                case OrderSignal.goShort:
                case OrderSignal.closeLong:
                case OrderSignal.closeShort:
                case OrderSignal.revertToLong:
                case OrderSignal.revertToShort:
                    ticket = MarketOrder(symbol, shares, false, actualOrder.Id.ToString(CultureInfo.InvariantCulture));
                    _ticketsQueue.Add(ticket);
                    break;
            }
        }
Exemplo n.º 7
0
        //private decimal CalculateTradeProfit(Symbol symbol)
        //{
        //    return _orderTransactionProcessor.CalculateLastTradePandL(symbol);
        //}
        #region "Methods"
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="signalInfo">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, SignalInfo signalInfo, KeyValuePair<Symbol, TradeBar> data)
        {
            return;
            int shares = Convert.ToInt32(PositionShares(symbol, signalInfo));
            if (shares != 0)
            {
                ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();
                OrderTicket ticket = null;
                decimal limitPrice = 0;


                switch (signalInfo.Value)
                {
                    case OrderSignal.goLongLimit:
                        // Define the limit price.
                        limitPrice = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                        ticket = LimitOrder(symbol, shares, limitPrice, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                        break;

                    case OrderSignal.goShortLimit:
                        limitPrice = priceCalculator.Calculate(data.Value, signalInfo, RngFac);
                        ticket = LimitOrder(symbol, shares, limitPrice, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                        break;

                    case OrderSignal.goLong:
                    case OrderSignal.goShort:
                    case OrderSignal.closeLong:
                    case OrderSignal.closeShort:
                    case OrderSignal.revertToLong:
                    case OrderSignal.revertToShort:
                        ticket = MarketOrder(symbol, shares, false, signalInfo.Id.ToString(CultureInfo.InvariantCulture));
                        limitPrice = ticket.AverageFillPrice;
                        break;

                    default:
                        break;
                }
                if (ticket != null)
                {
                    if (ticket.OrderId == 82)
                        System.Diagnostics.Debug.WriteLine("Send order 82");
                    string msg = string.Format("Order {0} Sent {1}, {2}, {3} at {4} bar {5}",
                        ticket.OrderId,
                        signalInfo.Value,
                        signalInfo.Name,
                        shares,
                        limitPrice,
                        barcount);
                    Log(msg);
                }
            }
        }
        /// <summary>
        /// Executes the ITrend strategy orders.
        /// </summary>
        /// <param name="symbol">The symbol to be traded.</param>
        /// <param name="actualOrder">The actual arder to be execute.</param>
        /// <param name="data">The actual TradeBar data.</param>
        private void ExecuteStrategy(Symbol symbol, OrderSignal actualOrder, TradeBars data)
        {
            decimal limitPrice = 0m;
            int shares = PositionShares(symbol, actualOrder);
            ILimitPriceCalculator priceCalculator = new InstantTrendLimitPriceCalculator();

            switch (actualOrder)
            {
                case OrderSignal.goLongLimit:
                    // Define the limit price.
                    limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                    _ticketsQueue.Enqueue(LimitOrder(symbol, shares, limitPrice));
                    break;

                case OrderSignal.goShortLimit:
                    limitPrice = priceCalculator.Calculate(data[symbol], actualOrder, RngFac);
                    _ticketsQueue.Enqueue(LimitOrder(symbol, shares, limitPrice));
                    break;

                case OrderSignal.goLong:
                case OrderSignal.goShort:
                case OrderSignal.closeLong:
                case OrderSignal.closeShort:
                case OrderSignal.revertToLong:
                case OrderSignal.revertToShort:
                    _ticketsQueue.Enqueue(MarketOrder(symbol, shares)); // Send the order.
                    break;

                default: break;
            }
        }