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