I'm new to this Unmanaged Approach and I'm missing something. The SubmitOrders that I intend as exits are being disregarded and at times actually entering as new trades. The only time my entries are exiting is when an opposite entry fires. Can someone please point out my error. I would be incredibly grateful. Here is one side of my code. The other side is simply opposite.
private IOrder BullQuickI = null;
private IOrder BullRunnerI = null;
//Entry Conditions for Bull
if (CrossBelow(MACD(12, 26, 9).Avg, MACD(12, 26, 9), 1)
&& BullQuickI == null
&& BullRunnerI == null)
{
BullQuickI = SubmitOrder(0, OrderAction.Buy, OrderType.Market, 1, 0, 0, "", "BullQuickI");
Print(Time[0] + " Enter BullQuick I - " + BullQuickI.OrderId);
BullRunnerI = SubmitOrder(0, OrderAction.Buy, OrderType.Market, 1, 0, 0, "", "BullRunnerI");
Print(Time[0] + " Enter BullRunner I - " + BullRunnerI.OrderId);
m_inBullQuickMove = true;
m_inBullRunner = true;
}
//Conditions to Exit BullQuickI
if (Close[0] > Position.AvgPrice
&& m_inBullQuickMove
&& Falling(RMI(10, 3)) == true)
{
BullQuickIExit = SubmitOrder(0, OrderAction.SellShort, OrderType.Market, 1, 0, 0, "BullQuickI", "BullQuickIExit");
m_inBullQuickMove = false;
Print(Time[0] + " BullQuickIExit - " + BullQuickIExit.OrderId);
}
//Conditions to Exit BullRunnerI
if (m_inBullRunner && Close[0] < VMAZones (9, 2, 18).Lower[0]
//&& BullRunnerExitOK
&& TrendStrengthA(VC.NinjaScript.Utility.MovingAverageType.VWMA, 200, 20, 10).TrendStrength[0] < 60
&& Falling(RMI(10, 3)) == true)
{
BullRunnerIExit = SubmitOrder(0, OrderAction.SellShort, OrderType.Market, 1, 0, 0, "BullRunnerI", "BullRunnerIExit");
m_inBullRunner = false;
BullRunnerExitOK = false;
Print(Time[0] + " BullRunnerIExit - " + BullRunnerIExit.OrderId);
}
protected override void OnOrderUpdate(IOrder order)
{
if (BullQuickI != null && BullQuickI == order)
{
if (order.OrderState == OrderState.Filled || order.OrderState == OrderState.Cancelled)
BullQuickI = null;
}
if (BullRunnerI != null && BullRunnerI == order)
{
if (order.OrderState == OrderState.Filled || order.OrderState == OrderState.Cancelled)
BullRunnerI = null;
}
}

Comment