Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

It seems my shortStops are not executing

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    It seems my shortStops are not executing

    Guys,

    Please help. I have code that sets long position stop loss or short position stop loss orders as is appropriate. Although the long stops do sometimes execute, the short do not. These orders are entered in the OnExecution() method as follows:

    As you can see, the chart text is placed by the code. So the order is at least entered, but it seems it always blows through.

    OnBarUpdate()

    if (Position.MarketPosition == MarketPosition.Long){
    if (fallingBar1 && fallingBar0 && shortThreshold && shortXADXVMA) // short entry signal
    {
    exitOrder = ExitLong(Position.Quantity, "exitLongOnShortX", "LongOnADX");
    entryOrder = EnterShortLimit(simLotsTraded, GetCurrentAsk(), "ShortOnADX");
    //Log("Short order placed because close plus threshold (" + longTrigger1.ToString() + ") is less than the ADX (" + ADXVMA(ADX_Per)[0].ToString() + ").", LogLevel.Warning);
    } else if (!ADXVMARising && shortCross && exitOnFlatCross) {
    exitOrder = ExitLong(Position.Quantity, "exitLongOnShortXAndFlat", "LongOnADX");
    }
    } else if (Position.MarketPosition == MarketPosition.Short) {
    if (risingBar1 && risingBar0 && longThreshold && longXADXVMA ) // long entry signal
    {
    exitOrder = ExitShort(Position.Quantity, "exitShortOnLongX", "ShortOnADX");
    entryOrder = EnterLongLimit(simLotsTraded, GetCurrentBid(), "LongOnADX");
    //Log("Long order placed because close minus threshold (" + longTrigger1.ToString() + ") is greater than the ADX (" + ADXVMA(ADX_Per)[0].ToString() + ").", LogLevel.Warning);
    } else if (!ADXVMAFalling && longCross && exitOnFlatCross ){
    exitOrder = ExitShort(Position.Quantity, "exitShortOnLongXAndFlat", "ShortOnADX");
    }
    } else { // no position
    if (risingBar1 && risingBar0 && longThreshold && longXADXVMA )
    {
    entryOrder = EnterLongLimit(simLotsTraded, GetCurrentBid(), "LongOnADX");
    //Log("Long order placed because close minus threshold (" + longTrigger1.ToString() + ") is greater than the ADX (" + ADXVMA(ADX_Per)[0].ToString() + ").", LogLevel.Warning);
    }

    // Condition to short
    if (fallingBar1 && fallingBar0 && shortThreshold && shortXADXVMA)
    {
    entryOrder = EnterShortLimit(simLotsTraded, GetCurrentAsk(), "ShortOnADX");
    //Log("Short order placed because close plus threshold (" + longTrigger1.ToString() + ") is less than the ADX (" + ADXVMA(ADX_Per)[0].ToString() + ").", LogLevel.Warning);
    }
    }


    OnExecution()
    if (entryOrder != null && entryOrder.Token == execution.Order.Token){

    if (execution.Order.OrderState == OrderState.Filled || execution.Order.OrderState == OrderState.PartFilled || (execution.Order.OrderState == OrderState.Cancelled && execution.Order.Filled > 0))
    {
    if (entryOrder.Name.Equals("LongOnADX")) {

    // Stop-Loss order entryrange ticks below our entry price
    //stop1Price = (10000*execution.Order.AvgFillPrice - entryThreshold)/10000;
    stop1Price = (10000*ADXVMA(aDX_Per)[0] - 5)/10000;
    stopOrder = ExitLongStop(0, true, execution.Order.Filled, stop1Price, "longStop", "LongOnADX");

    dotCounter += 1;
    dotName = "dot" + dotCounter.ToString();
    someString = "Setting Long Stop at " + stop1Price.ToString();
    DrawText(dotName, someString, 0, (Close[0]+.0045), Color.Black);

    if (execution.Order.OrderState != OrderState.PartFilled)
    {
    entryOrder = null;
    }
    } else if (entryOrder.Name.Equals("ShortOnADX")){
    // Stop-Loss order entryrange ticks above our entry price
    //stop1Price = (10000*execution.Order.AvgFillPrice + entryThreshold)/10000;
    stop1Price = (10000*ADXVMA(aDX_Per)[0] + 5)/10000;
    stopOrder = ExitLongStop(0, true, execution.Order.Filled, stop1Price, "shortStop", "ShortOnADX");

    dotCounter += 1;
    dotName = "dot" + dotCounter.ToString();
    someString = "Setting Short Stop at " + stop1Price.ToString();
    DrawText(dotName, someString, 0, (Close[0]-.004), Color.Black);

    // enter a stop order at the market open (10 pip loss)
    //stopOrder = ExitShortStop(0, true, execution.Order.Filled, stop1Price, "shortStop1", "enterShortOnADXCross");

    // Target order profitTarget below our entry price /// use heuristics to exit order
    //targetOrder = ExitShortLimit(0, true, execution.Order.Filled/2, shortTarget1 , "shortTarget1", "enterShortOnADXCross");

    // Resets the entryOrder object to null after the order has been filled or partially filled to completion
    if (execution.Order.OrderState != OrderState.PartFilled)
    {
    entryOrder = null;
    }
    } // enterLongOnADXCross or enterShortOnADXCross processing

    } // was the entry order filled at all?
    } // is this an entryOrder?
    Attached Files

    #2
    You should use TraceOrders = true and slowly step through your code to see what it is doing. http://www.ninjatrader-support2.com/...ead.php?t=3627
    Josh P.NinjaTrader Customer Service

    Comment


      #3
      thanks Josh, let me give it a try.

      Comment


        #4
        Order is ignored?

        Josh,

        The stop order was ignored, but I cannot figure out why?

        1/7/2009 1:00:00 AM Entered internal PlaceOrder() method at 1/7/2009 1:00:00 AM: Action=SellShort OrderType=Limit Quantity=0.02M LimitPrice=1.3482 StopPrice=0 SignalName='ShortOnADX' FromEntrySignal=''
        1/7/2009 1:00:00 AM Entered internal PlaceOrder() method at 1/7/2009 1:00:00 AM: Action=Sell OrderType=Stop Quantity=0.02M LimitPrice=0 StopPrice=1.3508 SignalName='shortStop' FromEntrySignal='ShortOnADX'
        1/7/2009 1:00:00 AM Ignored PlaceOrder() method: Action=Sell OrderType=Stop Quantity=20000 LimitPrice=0 StopPrice=1.3508 SignalName='shortStop' FromEntrySignal='ShortOnADX' Reason='This was an exit order but no position exists to exit'
        1/7/2009 1:21:00 AM Entered internal PlaceOrder() method at 1/7/2009 1:21:00 AM: Action=BuyToCover OrderType=Market Quantity=0.02M LimitPrice=0 StopPrice=0 SignalName='exitShortOnLongXAndFlat' FromEntrySignal='ShortOnADX'
        1/7/2009 10:05:00 AM Entered internal PlaceOrder() method at 1/7/2009 10:05:00 AM: Action=Buy OrderType=Limit Quantity=0.02M LimitPrice=1.3687 StopPrice=0 SignalName='LongOnADX' FromEntrySignal=''
        1/7/2009 10:05:00 AM Entered internal PlaceOrder() method at 1/7/2009 10:05:00 AM: Action=Sell OrderType=Stop Quantity=0.02M LimitPrice=0 StopPrice=1.3647 SignalName='longStop' FromEntrySignal='LongOnADX'
        1/7/2009 11:59:00 AM Entered internal PlaceOrder() method at 1/7/2009 11:59:00 AM: Action=Sell OrderType=Market Quantity=0.02M LimitPrice=0 StopPrice=0 SignalName='exitLongOnShortXAndFlat' FromEntrySignal='LongOnADX'
        1/7/2009 11:59:00 AM Cancelled pending exit order, since associated position is closed: Order='NT-00003/Back101' Name='longStop' State=Working Instrument='$EURUSD' Action=Sell Limit price=0 Stop price=1.36467990157279 Quantity=0.02M Strategy='ADXVMAXover2' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='d2611ef7ecd44b3e94db425fa2f49534' Gtd='12/1/2099 12:00:00 AM'

        Comment


          #5
          "This was an exit order but no position exists to exit"

          Position was already closed when you placed the order. Likely placed too late.
          Josh P.NinjaTrader Customer Service

          Comment


            #6
            got it

            Josh,

            sorry, code typo. My 'short exit" was mis-entered as ExitLongStop()....

            Comment


              #7
              Good catch.
              Josh P.NinjaTrader Customer Service

              Comment

              Latest Posts

              Collapse

              Topics Statistics Last Post
              Started by Geovanny Suaza, 02-11-2026, 06:32 PM
              0 responses
              601 views
              0 likes
              Last Post Geovanny Suaza  
              Started by Geovanny Suaza, 02-11-2026, 05:51 PM
              0 responses
              347 views
              1 like
              Last Post Geovanny Suaza  
              Started by Mindset, 02-09-2026, 11:44 AM
              0 responses
              103 views
              0 likes
              Last Post Mindset
              by Mindset
               
              Started by Geovanny Suaza, 02-02-2026, 12:30 PM
              0 responses
              559 views
              1 like
              Last Post Geovanny Suaza  
              Started by RFrosty, 01-28-2026, 06:49 PM
              0 responses
              558 views
              1 like
              Last Post RFrosty
              by RFrosty
               
              Working...
              X