Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

Stops and Targets randomlly not being placed...

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

    Stops and Targets randomlly not being placed...

    So seems like I solved my last problem... but a new problem has popped up...

    My stops and targets do not seem to get placed at random times.... they'll get placed for a while... then all of a sudden after an hour or two of live sim test, they don't get placed...

    I've used the following OnOrderUpdate() and OnExecution() methods... from looking at the sample OnOrderUpdate() code in the sample code section, things should be ok...

    Code:
    protected override void OnOrderUpdate(IOrder order)
            {
                // HANDLE ORDER UPDATES FOR LONG A
                // Entry
                if (longentryOrderA != null && longentryOrderA.Token == order.Token)
                {    
                    if (order.OrderState == OrderState.Cancelled)
                    {
                        longentryOrderA = null;
                    }
                }
                
                // Target
                if (longtargetOrderA != null && longtargetOrderA.Token == order.Token)
                {    
                    if (order.OrderState == OrderState.Filled
                        || order.OrderState == OrderState.PartFilled)
                    {
                        longtargetOrderA = null;
                        longentryOrderA = null;
                        longstopOrderA = null;
                    }
                }
                
                // Stop
                if (longstopOrderA != null && longstopOrderA.Token == order.Token)
                {    
                    if (order.OrderState == OrderState.Filled
                        || order.OrderState == OrderState.PartFilled)
                    {
                        longstopOrderA = null;
                        longentryOrderA = null;
                        longtargetOrderA = null;
                    }
    
                }
                
                // HANDLE ORDER UPDATES FOR SHORT A
                // Entry
                if (shortentryOrderA != null && shortentryOrderA.Token == order.Token)
                {    
                    if (order.OrderState == OrderState.Cancelled)
                    {
                        shortentryOrderA = null;
                    }
                }
                
                // Target
                if (shorttargetOrderA != null && shorttargetOrderA.Token == order.Token)
                {    
                    if (order.OrderState == OrderState.Filled
                        || order.OrderState == OrderState.PartFilled)
                    {
                        shorttargetOrderA = null;
                        shortentryOrderA = null;
                        shortstopOrderA = null;
                    }
                }
                
                // Stop
                if (shortstopOrderA != null && shortstopOrderA.Token == order.Token)
                {    
                    if (order.OrderState == OrderState.Filled
                        || order.OrderState == OrderState.PartFilled)
                    {
                        shortstopOrderA = null;
                        shortentryOrderA = null;
                        shorttargetOrderA = null;
                    }
    
                }
            }
            
            /// <summary>
            /// Called on each incoming execution
            /// </summary>
            protected override void OnExecution(IExecution execution)
            {
                // LONG ORDER A STOP AND TARGET
                if (longentryOrderA != null && longentryOrderA.Token == execution.Order.Token)
                {
                    if (execution.Order.OrderState == OrderState.Filled || execution.Order.OrderState == OrderState.PartFilled || (execution.Order.OrderState == OrderState.Cancelled && execution.Order.Filled > 0))
                    {
                        longstopOrderA = ExitLongStop(0, true, execution.Order.Filled, execution.Order.AvgFillPrice - 4 * TickSize, "LongStopA", "LongA");
                        longtargetOrderA = ExitLongLimit(0, true, execution.Order.Filled, execution.Order.AvgFillPrice + 6 * TickSize, "LongTargetA", "LongA");
                    }
                }
                
                // SHORT ORDER A STOP AND TARGET
                if (shortentryOrderA != null && shortentryOrderA.Token == execution.Order.Token)
                {
                    if (execution.Order.OrderState == OrderState.Filled || execution.Order.OrderState == OrderState.PartFilled || (execution.Order.OrderState == OrderState.Cancelled && execution.Order.Filled > 0))
                    {
                        shortstopOrderA = ExitShortStop(0, true, execution.Order.Filled, execution.Order.AvgFillPrice + 4 * TickSize, "ShortStopA", "ShortA");
                        shorttargetOrderA = ExitShortLimit(0, true, execution.Order.Filled, execution.Order.AvgFillPrice - 6 * TickSize, "ShortTargetA", "ShortA");
                    }
                }
            }
    Last edited by BigDog008; 07-17-2009, 07:19 AM.

    #2
    Hi BigDog008, at those 'randon' times when they appear to get ignored - what did the TraceOrders output show? I feel you're running into the order handling rules and thus you would see ignored orders in the traces...
    Last edited by NinjaTrader_Bertrand; 07-17-2009, 07:48 AM.
    BertrandNinjaTrader Customer Service

    Comment


      #3
      Excuse my horrible spelling.... just realized it! ....been a loooooong night

      Here is the log file output... from what it seems, they weren't even placed

      7/17/2009 8:09 Default SuperDOM close position
      7/17/2009 8:06 Order Order='5c73429012fe4bb7b177210ec53a6d30/Sim101' Name='ShortA' New State=Cancelled Instrument='ES 09-09' Action=SellShort Limit price=935.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:06 Order Order='5c73429012fe4bb7b177210ec53a6d30/Sim101' Name='ShortA' New State=PendingCancel Instrument='ES 09-09' Action=SellShort Limit price=935.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:06 Order Order='5c73429012fe4bb7b177210ec53a6d30/Sim101' Name='ShortA' New State=Working Instrument='ES 09-09' Action=SellShort Limit price=935.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:06 Order Order='5c73429012fe4bb7b177210ec53a6d30/Sim101' Name='ShortA' New State=Accepted Instrument='ES 09-09' Action=SellShort Limit price=935.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:06 Order Order='5c73429012fe4bb7b177210ec53a6d30/Sim101' Name='ShortA' New State=PendingSubmit Instrument='ES 09-09' Action=SellShort Limit price=935.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:06 Position Instrument='ES 09-09' Account='Sim101' Avg price=935 Quantity=1 Market position=Long Operation=Insert Currency=Unknown
      7/17/2009 8:06 Execution Execution='af366187b4bb41eab289892262ada9ec' Instrument='ES 09-09' Account='Sim101' Exchange=Default Price=935 Quantity=1 Market position=Long Operation=Insert Order='26358f9908ef40679c6d97386f48bda1' Time='7/17/2009 8:06:18 AM' 7/17/2009 8:06 Order Order='26358f9908ef40679c6d97386f48bda1/Sim101' Name='LongA' New State=Filled Instrument='ES 09-09' Action=Buy Limit price=935 Stop price=0 Quantity=1 Type=Limit Filled=1 Fill price=935 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='26358f9908ef40679c6d97386f48bda1/Sim101' Name='LongA' New State=Working Instrument='ES 09-09' Action=Buy Limit price=935 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='26358f9908ef40679c6d97386f48bda1/Sim101' Name='LongA' New State=Accepted Instrument='ES 09-09' Action=Buy Limit price=935 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='26358f9908ef40679c6d97386f48bda1/Sim101' Name='LongA' New State=PendingSubmit Instrument='ES 09-09' Action=Buy Limit price=935 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='530f731d7d724206adddae1795147bc7/Sim101' Name='LongA' New State=Cancelled Instrument='ES 09-09' Action=Buy Limit price=934.75 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='530f731d7d724206adddae1795147bc7/Sim101' Name='LongA' New State=PendingCancel Instrument='ES 09-09' Action=Buy Limit price=934.75 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='530f731d7d724206adddae1795147bc7/Sim101' Name='LongA' New State=Working Instrument='ES 09-09' Action=Buy Limit price=934.75 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='530f731d7d724206adddae1795147bc7/Sim101' Name='LongA' New State=Accepted Instrument='ES 09-09' Action=Buy Limit price=934.75 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='530f731d7d724206adddae1795147bc7/Sim101' Name='LongA' New State=PendingSubmit Instrument='ES 09-09' Action=Buy Limit price=934.75 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='bb57e4cba20046d1b29367797e1e9cb4/Sim101' Name='LongTargetA' New State=Cancelled Instrument='ES 09-09' Action=Sell Limit price=936.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Order Order='bb57e4cba20046d1b29367797e1e9cb4/Sim101' Name='LongTargetA' New State=PendingCancel Instrument='ES 09-09' Action=Sell Limit price=936.25 Stop price=0 Quantity=1 Type=Limit Filled=0 Fill price=0 Error=NoError Native error=''
      7/17/2009 8:04 Position Instrument='ES 09-09' Account='Sim101' Avg price=935 Quantity=0 Market position=Long Operation=Remove Currency=Unknown

      Comment


        #4
        and this is the trace orders output...

        7/17/2009 8:01:04 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:04 AM: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=934.50 SignalName='LongStopA' FromEntrySignal='LongA'
        7/17/2009 8:01:04 AM Amended matching order: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=934.50 SignalName=LongStopA' FromEntrySignal='LongA'
        7/17/2009 8:01:05 AM Cancelled pending exit order, since associated position is closed: Order='f70aa315a2ad4d3eb58aa07ccde686f9/Sim101' Name='LongTargetA' State=Working Instrument='ES 09-09' Action=Sell Limit price=935.75 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='f70aa315a2ad4d3eb58aa07ccde686f9' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:01:05 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:05 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.25 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        Cancelled custom managed order at 7/17/2009 8:01:05 AM: Order='c77e960f1e5c42bc83a222f125692934/Sim101' Name='LongA' State=Working Instrument='ES 09-09' Action=Buy Limit price=934.25 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='c77e960f1e5c42bc83a222f125692934' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:01:05 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:05 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.25 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        7/17/2009 8:01:05 AM Ignored PlaceOrder() method at 7/17/2009 8:01:05 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.25 StopPrice=0 SignalName='LongA' FromEntrySignal='' Reason='Exceeded entry signals limit based on EntryHandling and EntriesPerDirection properties'
        7/17/2009 8:01:05 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:05 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.25 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        Cancelled custom managed order at 7/17/2009 8:01:08 AM: Order='fef3194ee7554ee7ae2ec178ab1175bd/Sim101' Name='LongA' State=Working Instrument='ES 09-09' Action=Buy Limit price=934.25 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='fef3194ee7554ee7ae2ec178ab1175bd' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:01:08 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:08 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.50 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        7/17/2009 8:01:08 AM Ignored PlaceOrder() method at 7/17/2009 8:01:08 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.50 StopPrice=0 SignalName='LongA' FromEntrySignal='' Reason='Exceeded entry signals limit based on EntryHandling and EntriesPerDirection properties'
        7/17/2009 8:01:08 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:08 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.50 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        Cancelled custom managed order at 7/17/2009 8:01:55 AM: Order='67ec74147b584997b5fa5d0e2e1b5f53/Sim101' Name='LongA' State=Working Instrument='ES 09-09' Action=Buy Limit price=934.5 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='67ec74147b584997b5fa5d0e2e1b5f53' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:01:55 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:55 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.75 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        7/17/2009 8:01:55 AM Ignored PlaceOrder() method at 7/17/2009 8:01:55 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.75 StopPrice=0 SignalName='LongA' FromEntrySignal='' Reason='Exceeded entry signals limit based on EntryHandling and EntriesPerDirection properties'
        7/17/2009 8:01:55 AM Entered internal PlaceOrder() method at 7/17/2009 8:01:55 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.75 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        7/17/2009 8:03:04 AM Entered internal PlaceOrder() method at 7/17/2009 8:03:04 AM: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=933.75 SignalName='LongStopA' FromEntrySignal='LongA'
        7/17/2009 8:03:04 AM Entered internal PlaceOrder() method at 7/17/2009 8:03:04 AM: Action=Sell OrderType=Limit Quantity=1 LimitPrice=936.25 StopPrice=0 SignalName='LongTargetA' FromEntrySignal='LongA'
        7/17/2009 8:03:31 AM Entered internal PlaceOrder() method at 7/17/2009 8:03:31 AM: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=935.00 SignalName='LongStopA' FromEntrySignal='LongA'
        7/17/2009 8:03:31 AM Amended matching order: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=935.00 SignalName=LongStopA' FromEntrySignal='LongA'
        7/17/2009 8:03:59 AM Cancelled pending exit order, since associated position is closed: Order='bb57e4cba20046d1b29367797e1e9cb4/Sim101' Name='LongTargetA' State=Working Instrument='ES 09-09' Action=Sell Limit price=936.25 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='bb57e4cba20046d1b29367797e1e9cb4' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:04:00 AM Entered internal PlaceOrder() method at 7/17/2009 8:04:00 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=934.75 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        Cancelled custom managed order at 7/17/2009 8:04:09 AM: Order='530f731d7d724206adddae1795147bc7/Sim101' Name='LongA' State=Working Instrument='ES 09-09' Action=Buy Limit price=934.75 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='530f731d7d724206adddae1795147bc7' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:04:09 AM Entered internal PlaceOrder() method at 7/17/2009 8:04:09 AM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=935.00 StopPrice=0 SignalName='LongA' FromEntrySignal=''
        7/17/2009 8:06:18 AM Entered internal PlaceOrder() method at 7/17/2009 8:06:18 AM: Action=SellShort OrderType=Limit Quantity=1 LimitPrice=935.25 StopPrice=0 SignalName='ShortA' FromEntrySignal=''
        7/17/2009 8:06:18 AM Entered internal PlaceOrder() method at 7/17/2009 8:06:18 AM: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=934.00 SignalName='LongStopA' FromEntrySignal='LongA'
        7/17/2009 8:06:18 AM Entered internal PlaceOrder() method at 7/17/2009 8:06:18 AM: Action=Sell OrderType=Limit Quantity=1 LimitPrice=936.50 StopPrice=0 SignalName='LongTargetA' FromEntrySignal='LongA'
        7/17/2009 8:06:18 AM Cancelled pending entry order on opposite side of the market: BarsInProgress=0: Order='5c73429012fe4bb7b177210ec53a6d30/Sim101' Name='ShortA' State=Working Instrument='ES 09-09' Action=SellShort Limit price=935.25 Stop price=0 Quantity=1 Strategy='LimitOrderTest' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='5c73429012fe4bb7b177210ec53a6d30' Gtd='12/1/2099 12:00:00 AM'
        7/17/2009 8:09:01 AM CancelAllOrders: BarsInProgress=0

        Comment


          #5
          BigDog, both your stop and target are placed -

          7/17/2009 8:03:04 AM Entered internal PlaceOrder() method at 7/17/2009 8:03:04 AM: Action=Sell OrderType=Limit Quantity=1 LimitPrice=936.25 StopPrice=0 SignalName='LongTargetA' FromEntrySignal='LongA'
          7/17/2009 8:03:31 AM Entered internal PlaceOrder() method at 7/17/2009 8:03:31 AM: Action=Sell OrderType=Stop Quantity=1 LimitPrice=0 StopPrice=935.00 SignalName='LongStopA' FromEntrySignal='LongA'

          Please correlate the TraceOrders output with the time where you feel they are not placed or ignored, then you should get worthwhile debugging tips.
          BertrandNinjaTrader Customer Service

          Comment


            #6
            I didn't see them appear in the DOM

            just to be on the safer side, am I better off keeping my reset to null for stops and targets in the OnExecution() method rather than OnOrderUpdate()?

            Comment


              #7
              Yes, please leave this in OnExecution() as in the sample, as this is called after OnOrderUpdate() which ensures your strategy has received the execution.

              Do you see any target and stops on the DOM, or just not the 'randomly' missing ones?
              BertrandNinjaTrader Customer Service

              Comment


                #8
                just not the random ones....

                for example I'm running the limit order test strat now and its working BOTH my bids and asks and the appropriate stops and targets...

                just that every now and then i will see missing stops and targets



                what is the thought process or logic behind keeping the resetting of the null state in OnExecution rather than OnOrderUpdate? from a programming standpoint?

                Comment


                  #9
                  Ok, great - what are TraceOrders showing you 'every now and then' - are orders getting ignored? If yes for what reason?

                  For your second question, please see this info from the OnOrderUpdate() help guide link - http://www.ninjatrader-support.com/H...derUpdate.html

                  CRITICAL: If you want to drive your strategy logic based on order fills you must use OnExecution() instead of OnOrderUpdate(). OnExecution() is always triggered after OnOrderUpdate(). There is internal strategy logic that is triggered after OnOrderUpdate() is called but before OnExecution() that can adversely affect your strategy if you are relying on tracking fills within OnOrderUpdate().
                  BertrandNinjaTrader Customer Service

                  Comment


                    #10
                    sounds good Bertrand, I'll get my shovel out and start digging deeper through the trace logs...

                    in regards to OnOrderUpdate() would I be correct in saying its best used to maybe reset null state for cancelled entry orders only?


                    got to admit that these past few days with your assistance, really have gotten a much better scope of what ninja trader is capable of... thank you for this

                    Comment


                      #11
                      You're welcome BigDog008, thanks for the kind words! You want reset the target and stop IOrders also if filled or cancelled (position closed)...just like in the samples.
                      BertrandNinjaTrader Customer Service

                      Comment

                      Latest Posts

                      Collapse

                      Topics Statistics Last Post
                      Started by knighty6508, 05-10-2024, 01:20 AM
                      4 responses
                      24 views
                      0 likes
                      Last Post knighty6508  
                      Started by OllieFeraher, 05-09-2024, 11:14 AM
                      6 responses
                      19 views
                      0 likes
                      Last Post OllieFeraher  
                      Started by PaulMohn, 05-02-2024, 06:59 PM
                      2 responses
                      43 views
                      0 likes
                      Last Post PaulMohn  
                      Started by ETFVoyageur, Today, 02:10 AM
                      0 responses
                      11 views
                      0 likes
                      Last Post ETFVoyageur  
                      Started by rayyyu12, Today, 12:47 AM
                      0 responses
                      8 views
                      0 likes
                      Last Post rayyyu12  
                      Working...
                      X