/// <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; } }
/// <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; } }
/// <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; } } }
/// <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; } }
/// <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; } }
//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; } }