below is an extract from my strategy that relates to catching the order execution.
It works 99% of the time. but sometimes I dont get the "targetreached = true;" set and also the Pint command is not printed.
what can be the issue please?
//*********************************************************************************************************** protected override void OnOrderUpdate(Cbi.Order order, double limitPrice, double stopPrice, int quantity, int filled, double averageFillPrice, Cbi.OrderState orderState, DateTime time, Cbi.ErrorCode error, string comment) { if (order.Name == "Entry5" ) { entryOrder = order; if (order.OrderState == OrderState.Cancelled && order.Filled == 0) entryOrder = null; } if (order.Name == "MyStop" ||order.Name == "MyStop5" || order.Name == "extraStop" || order.Name == "TrailingStop") stopOrder = order; if (order.Name == "MyTarget" || order.Name == "MyTarget5" || order.Name == "Profit target") targetOrder = order; } //END of OnOrderUpdate() //*********************************************************************************************************** //*********************************************************************************************************** protected override void OnExecutionUpdate(Execution execution, string executionId, double price, int quantity, MarketPosition marketPosition, string orderId, DateTime time) { if (entryOrder != null && entryOrder == execution.Order ) { if (execution.Order.OrderState == OrderState.Filled || execution.Order.OrderState == OrderState.PartFilled || (execution.Order.OrderState == OrderState.Cancelled && execution.Order.Filled > 0)) { //STOP LOSS if (Position.MarketPosition == MarketPosition.Long && execution.Order.Name == "Entry5") { stopOrder = ExitLongStopMarket(1, true, Position.Quantity, Math.Min(StopLevel,(GetCurrentBid() - 1*TickSize)), "MyStop5", "Entry5"); } //Target //============= if (Position.MarketPosition == MarketPosition.Long && execution.Order.Name == "Entry5") { targetOrder = ExitLongLimit(0, true, Position.Quantity , TargetLevel, "MyTarget5", "Entry5"); } } } if ((stopOrder != null && stopOrder == execution.Order) || (targetOrder != null && targetOrder == execution.Order) { if (execution.Order.OrderState == OrderState.Filled ) { [B]if (targetOrder != null && targetOrder == execution.Order) { targetreached = true; Print("TARGET reached"); NumberOfTimesStopTrailed = 0; }[/B] ProcessPerDayCounter++; } } } //End of OnExecutionUpdate()
Comment