"Strategy submitted an order that generated the following error 'Unable to change order'. Strategy has sent cancel requests, attempted to close the position an terminate itself.
Pic is attached.
Here is a snippet of the code. Note isLivUntilCancelled is set to TRUE.
if (Trade Condition occurs....)
{
myEntryOrder = EnterLongLimit(0, true, DefaultQuantity, bidPrice, "LongStrategyEntry");
SetProfitTarget("LongStrategyEntry", CalculationMode.Ticks, ProfitTargetValue);
SetStopLoss("LongStrategyEntry", CalculationMode.Ticks, StopLossValue, True);
barNumberOfOrder = CurrentBar;
myCancelOrder = myEntryOrder;
}
// If more than CancelOffset bars has elapsed, cancel the entry order
if (CurrentBar > barNumberOfOrder + CancelOffset)
{
CancelOrder(myCancelOrder);
}
and here is the event handler...
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)
{
// Check if Order is Filled or Partially Filled
if (myEntryOrder != null && myEntryOrder == order)
{
if (myEntryOrder.OrderState == OrderState.Filled)
{
myEntryOrder = null;
myCancelOrder = null;
}
}
if (myCancelOrder != null && myCancelOrder == order)
{
if (myCancelOrder.OrderState == OrderState.Cancelled)
{
myEntryOrder = null;
myCancelOrder = null;
}
}
}
I'm thinking there might be a race condition. Perhaps somebody else can see something I am missing. Any help would be greatly appreciated!
Comment