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

Orders cancelling prior to OnOrderUpdate() event

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

    Orders cancelling prior to OnOrderUpdate() event

    Hi,
    I have a strange problem with an NT7 strategy's orders. There are three sub-positions in the strategy, filled by entry orders named LE1,LE2,LE3, and of course SE1, SE2,SE3. There are target and stoploss orders for each, named LT1, LT2, LT3, ST1, ST2, ST3, and LS1, LS2, LS3, SS1, SS2, SS3.
    While reversing a position, I usually use the following technique:
    1) Cancel all the working orders.
    2) When they are all cancelled, close the position.
    3) Place the entry orders for the new position.

    This has worked as a technique for years and for many strategies. However, I am having trouble with one particular strategy. By adding logging to various stages in the activity, I can see that orders are reaching a cancelled state before an OnOrderUpdate() event occurs for them. This is messing with the strategy's ability to perform the reversal correctly. Below are comments and log entries for a specific example.

    I would greatly appreciate comments and assistance on this matter.
    saltminer

    ------

    Cancel all the working orders after finding they are working....

    AllOrdersInactive(): ST1=True ST2=True ST3=True SS1=True SS2=True SS3=True
    AllOrdersInactive() result is False
    Cancelled custom managed order at 28/08/2018 2:53:00 PM: Order='NT-00004/Replay101' Name='ST1' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=68.75 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='d8790329c8bd453b858837b587a8cc68' Gtd='1/12/2099 12:00:00 AM'
    Cancelled custom managed order at 28/08/2018 2:53:00 PM: Order='NT-00006/Replay101' Name='ST2' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=68.73 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='fbe7215c04bf4668b6d1d3c86f94c594' Gtd='1/12/2099 12:00:00 AM'
    Cancelled custom managed order at 28/08/2018 2:53:00 PM: Order='NT-00008/Replay101' Name='ST3' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=68.7 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='7c64d3dc51aa4305b37a9e03f6a7580b' Gtd='1/12/2099 12:00:00 AM'
    Cancelled custom managed order at 28/08/2018 2:53:00 PM: Order='NT-00003/Replay101' Name='SS1' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='ae07c0ab3d5f4d26bf105d2a8dc3b370' Gtd='1/12/2099 12:00:00 AM'
    Cancelled custom managed order at 28/08/2018 2:53:00 PM: Order='NT-00005/Replay101' Name='SS2' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='cbc4e6cf6d88440eb9aad41128646b2c' Gtd='1/12/2099 12:00:00 AM'
    Cancelled custom managed order at 28/08/2018 2:53:00 PM: Order='NT-00007/Replay101' Name='SS3' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='91ff7b418aaf40609613b0eb0feda696' Gtd='1/12/2099 12:00:00 AM'


    At this point, 5 of the 6 orders IMMEDIATELY become OrderState=Cancelled!!!

    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00004/Replay101' Name='ST1' State=PendingCancel Instrument='CL 10-18' Action=BuyToCover Limit price=68.75 Stop price=0
    Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='d8790329c8bd453b858837b587a8cc68' Gtd='1/12/2099 12:00:00 AM'
    AllOrdersInactive(): ST1=True ST2=False ST3=False SS1=False SS2=False SS3=False
    AllOrdersInactive() result is False
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00004/Replay101' Name='ST1' State=Cancelled Instrument='CL 10-18' Action=BuyToCover Limit price=68.75 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='d8790329c8bd453b858837b587a8cc68' Gtd='1/12/2099 12:00:00 AM'
    AllOrdersInactive(): ST1=False ST2=False ST3=False SS1=False SS2=False SS3=False
    AllOrdersInactive() result is True


    A single order, ST1, triggers OnOrderUpdate events moving through PendingCancel and then Cancelled. The strategy now proceeds believing all orders are cancelled when they are actually not. You can see below eventually the OnOrderUpdate() events occur to cancel these orders.

    28/08/2018 2:53:00 PM going Long from OnOrderUpdate()
    28/08/2018 2:53:00 PM GoLong()
    28/08/2018 2:53:00 PM Entered internal PlaceOrder() method at 28/08/2018 2:53:00 PM: BarsInProgress=0 Action=Buy OrderType=Limit Quantity=1 LimitPrice=68.88 StopPrice=0 SignalName='LE1' FromEntrySignal=''
    28/08/2018 2:53:00 PM Entered internal PlaceOrder() method at 28/08/2018 2:53:00 PM: BarsInProgress=0 Action=Buy OrderType=Limit Quantity=1 LimitPrice=68.88 StopPrice=0 SignalName='LE2' FromEntrySignal=''
    28/08/2018 2:53:00 PM Ignored PlaceOrder() method at 28/08/2018 2:53:00 PM: Action=Buy OrderType=Limit Quantity=1 LimitPrice=68.88 StopPrice=0 SignalName=LE2' FromEntrySignal='' Reason='An Enter() method to submit an entry order has been ignored. Please search on the term 'Internal Order Handling Rules' in the Help Guide for detailed explanation.'
    **NT** An Enter() method to submit an entry order at '28/08/2018 2:53:00 PM' has been ignored. Please search on the term 'Internal Order Handling Rules' in the Help Guide for detailed explanation.
    28/08/2018 2:53:00 PM Entered internal PlaceOrder() method at 28/08/2018 2:53:00 PM: BarsInProgress=0 Action=Buy OrderType=Limit Quantity=1 LimitPrice=68.88 StopPrice=0 SignalName='LE3' FromEntrySignal=''
    28/08/2018 2:53:00 PM ORDER UPDATE Order='NT-00009/Replay101' Name='Close position' State=PendingSubmit Instrument='CL 10-18' Action=BuyToCover Limit price=68.88 Stop price=0 Quantity=3 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='69488fdd88144c0dbf06ffc223db3b39' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:53:00 PM ORDER UPDATE Order='NT-00009/Replay101' Name='Close position' State=Accepted Instrument='CL 10-18' Action=BuyToCover Limit price=68.88 Stop price=0 Quantity=3 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='69488fdd88144c0dbf06ffc223db3b39' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:53:00 PM ORDER UPDATE Order='NT-00009/Replay101' Name='Close position' State=Working Instrument='CL 10-18' Action=BuyToCover Limit price=68.88 Stop price=0 Quantity=3 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='69488fdd88144c0dbf06ffc223db3b39' Gtd='1/12/2099 12:00:00 AM'
    (irrelevant text removed to shorten this forum post)
    Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='eceb091054754920825e8652f2aacdbb' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00006/Replay101' Name='ST2' State=PendingCancel Instrument='CL 10-18' Action=BuyToCover Limit price=68.73 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='fbe7215c04bf4668b6d1d3c86f94c594' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00006/Replay101' Name='ST2' State=Cancelled Instrument='CL 10-18' Action=BuyToCover Limit price=68.73 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='fbe7215c04bf4668b6d1d3c86f94c594' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00008/Replay101' Name='ST3' State=PendingCancel Instrument='CL 10-18' Action=BuyToCover Limit price=68.7 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='7c64d3dc51aa4305b37a9e03f6a7580b' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00008/Replay101' Name='ST3' State=Cancelled Instrument='CL 10-18' Action=BuyToCover Limit price=68.7 Stop price=0 Quantity=1 Strategy='agEMA_Turbo' Type=Limit Tif=Gtc Oco='' Filled=0 Fill price=0 Token='7c64d3dc51aa4305b37a9e03f6a7580b' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00003/Replay101' Name='SS1' State=PendingCancel Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='ae07c0ab3d5f4d26bf105d2a8dc3b370' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00003/Replay101' Name='SS1' State=Cancelled Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='ae07c0ab3d5f4d26bf105d2a8dc3b370' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00005/Replay101' Name='SS2' State=PendingCancel Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='cbc4e6cf6d88440eb9aad41128646b2c' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00005/Replay101' Name='SS2' State=Cancelled Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='cbc4e6cf6d88440eb9aad41128646b2c' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00007/Replay101' Name='SS3' State=PendingCancel Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='91ff7b418aaf40609613b0eb0feda696' Gtd='1/12/2099 12:00:00 AM'
    28/08/2018 2:23:00 PM ORDER UPDATE Order='NT-00007/Replay101' Name='SS3' State=Cancelled Instrument='CL 10-18' Action=BuyToCover Limit price=0 Stop price=68.95 Quantity=1 Strategy='agEMA_Turbo' Type=Stop Tif=Gtc Oco='' Filled=0 Fill price=0 Token='91ff7b418aaf40609613b0eb0feda696' Gtd='1/12/2099 12:00:00 AM'



    #2
    Is this Managed mode?

    I think it is, because you have an error advising you to search for 'Internal Order Handling Rules' in the NT7 Help Guide, which if I remember correctly only pertains to Managed mode.

    It doesn't look you have multiple profit targets for an order, I know that Managed mode does
    not support scaling out (aka, multiple profit targets) for a Managed mode position.

    My first suggestion:
    Have you resolved the issue why that error message is being printed?

    Also, can you summarize the problem better?
    I mean, this 'special case' that is affecting your code, can you describe it better?

    And, beg pardon, why is this 'special case' you're seeing a problem?
    I mean, can you write code for this special case and just handle it?

    Sorry, I'm not sure I see the question you're asking ...
    What am I missing?

    Comment


      #3
      Hello saltminer,

      Thanks for your post.

      Without full knowledge of your strategy's inner workings and how exactly you are performing your operations to cancel all orders and close positions, I will be limited with the input I can give.

      I would expect with a print for the IOrder object iterating in OnOrderUpdate, that you would see PendingCancel before each Cancelled OrderState. When I test on my end, I see the results I would expect.

      Order='27cb255d83f6402f9e9d3e2d76f11e67/Sim101' Name='MyStop0' State=PendingCancel Instrument='ES 03-19' Action=Sell Limit price=0 Stop price=2641.75 Quantity=1 Type=Stop Tif=Gtc OverFill=False Oco='' Filled=0 Fill price=0 Token='27cb255d83f6402f9e9d3e2d76f11e67' Gtd='1/1/0001 12:00:00 AM'
      Order='db720a0be94744bf8b6c07103136487a/Sim101' Name='MyTarget0' State=PendingCancel Instrument='ES 03-19' Action=Sell Limit price=2644.75 Stop price=0 Quantity=1 Type=Limit Tif=Gtc OverFill=False Oco='' Filled=0 Fill price=0 Token='db720a0be94744bf8b6c07103136487a' Gtd='1/1/0001 12:00:00 AM'
      Order='44f8dc80de8441dab3870e7bc0a9bbdf/Sim101' Name='MyStop1' State=PendingCancel Instrument='ES 03-19' Action=Sell Limit price=0 Stop price=2641 Quantity=1 Type=Stop Tif=Gtc OverFill=False Oco='' Filled=0 Fill price=0 Token='44f8dc80de8441dab3870e7bc0a9bbdf' Gtd='1/1/0001 12:00:00 AM'
      Order='d2be139c3aac4848b140120f0977a0ad/Sim101' Name='MyTarget1' State=PendingCancel Instrument='ES 03-19' Action=Sell Limit price=2647 Stop price=0 Quantity=1 Type=Limit Tif=Gtc OverFill=False Oco='' Filled=0 Fill price=0 Token='d2be139c3aac4848b140120f0977a0ad' Gtd='1/1/0001 12:00:00 AM'
      Order='97ada19aef7a4f0f9e80273650f1a794/Sim101' Name='MyStop2' State=PendingCancel Instrument='ES 03-19' Action=Sell Limit price=0 Stop price=2639.75 Quantity=1 Type=Stop Tif=Gtc OverFill=False Oco='' Filled=0 Fill price=0 Token='97ada19aef7a4f0f9e80273650f1a794' Gtd='1/1/0001 12:00:00 AM'
      Order='5350616a94a6416bba0660055397c92e/Sim101' Name='MyTarget2' State=PendingCancel Instrument='ES 03-19' Action=Sell Limit price=2648.75 Stop price=0 Quantity=1 Type=Limit Tif=Gtc OverFill=False Oco='' Filled=0 Fill price=0 Token='5350616a94a6416bba0660055397c92e' Gtd='1/1/0001 12:00:00 AM'
      I have attached an example that can take multiple entries and outlines some behavior to cancel active orders and reverse a position that can be used as a reference.

      Let us know if we can be of further assistance.
      Attached Files
      JimNinjaTrader Customer Service

      Comment


        #4
        Thanks for the responses.
        I am using coding very similar to the example.
        The difference with the example from Jim is that orders are being set to null once they are confirmed as cancelled within OnOrderUpdate(). Checking for a null state of all orders indeed gets around the problem of the orders reporting their state as cancelled before they have passed through the OnOrderUpdate() with states of PendingCancel and Cancelled.
        So yes, I can implement this style of coding. But I don't recall ever having had to do this before. Orders have previously behaved themselves and passed through OnOrderUpdate() implementing their state changes properly. Question to Jim, which you may not know off the top of your head but I would appreciate you asking the development team - "has this order behaviour been changed recently (in the last 12 months or so)?".

        Another question - why is it ok for an order to report a state that has not yet created an event in OnOrderUpdate()?

        saltminer.

        Comment


          #5
          Hello saltminer,

          This has not changed. The approach I have taken in the example in post #3 is based off of our SampleOnOrderUpdate strategy, and I have not seen any changes to this strategy since I started working at NinjaTrader.

          Another question - why is it ok for an order to report a state that has not yet created an event in OnOrderUpdate()?
          In your last post you mention that you are not setting the IOrder objects back to null after cancellation. If the IOrder objects are not set to null after cancellation or after execution then the IOrder will still contain information from the last update. The process should be as follows:
          1. IOrder is created and is null
          2. Order submission method creates an order when that IOrder is null and conditions to enter are true
          3. In NT7, the IOrder object can be assigned from the IOrder returned from the order submission method, or the IOrder can be assigned in OnOrderUpdate when the iterating IOrder's Name property matches the signal name from the order submission method
          4. After execution or cancellation, the IOrder object is set back to null.
          I do not observe such behavior with the example provided which would be the way I would recommend to design such a strategy. If you see this behavior with the example, could you let me know how I can encounter it so I can comment further?

          I look forward to being of any further assistance.
          JimNinjaTrader Customer Service

          Comment


            #6
            Hi Jim,
            thanks for your time on this.
            My observations show (and the log in my initial post shows) that when multiple orders are cancelled with CancelOrder(order), some of those orders (if tested for order.OrderState) immediately report as OrderState.Cancelled. But they have not yet created any events in OnOrderUpdate(). That happens subsequently.
            This creates a problem for a straetgy with placing any new orders, because Ninja will refuse to place new entry orders while other conflicting ones are still active. (Even though they are reporting OrderState.Cancelled)

            I don't think that is the way it should work. An order should not be able to report a state it has not yet created an event in OnOrderUpdate() and reached in the proper manner.

            saltminer

            Comment


              #7
              Originally posted by saltminer View Post
              My observations show (and the log in my initial post shows) that when multiple orders are cancelled with CancelOrder(order), some of those orders (if tested for order.OrderState) immediately report as OrderState.Cancelled.
              I've never seen this happen.

              You would have to build and attach your own sample strategy to prove this, because I believe
              this assertion to be false, and it must be false for things to work correctly.

              I mean, think about it, Orders must be sent to the exchange to be properly cancelled.

              Who is your datafeed & broker?
              Are you seeing this running your strategy live?

              Originally posted by saltminer View Post
              But they have not yet created any events in OnOrderUpdate(). That happens subsequently.

              Another question - why is it ok for an order to report a state that has not yet created an event in OnOrderUpdate()?
              Perhaps you're doing something wrong.
              NinjaTrader's attached sample strategy, where the IOrder object is set to null
              inside OnOrderUpdate when Cancelled state is seen must be done.
              Are you doing this yet?

              If you are not properly setting the IOrder back to null at the correct time, how do you
              know that the information being reported later is even correct? This "reporting a state
              that has not yet created an event in OnOrderUpdate" issue, I suspect your IOrder reference
              is pointing to incorrect or old data -- because you didn't nullify the object when you
              were supposed to.

              Again, you would need to attach your own sample strategy, because I assert this
              phenomena you are reporting is a quite literally a symptom of a bug in your code,
              not a problem with NinjaTrader.

              Originally posted by saltminer View Post
              I don't think that is the way it should work. An order should not be able to report a state it has not yet created an event in OnOrderUpdate() and reached in the proper manner.
              Correct, it does not work that way.

              I think you are doing something fundamentally wrong, and the fact you
              have seen your strategies working until now is probably a coincidence,
              or a testament to NT's robustness, or your strategies are simple, or
              this new strategy manifesting the problem you now see is somehow
              different than your prior 'correct' strategies.

              What you are claiming here is simply something I have never seen.

              If you don't follow NT's sample code for how OnOrderUpdate and OnExecution should
              be coded -- you are doing so at your own extreme peril, and if real money is at an risk,
              then this is borderline insanity coupled with hefty doses of extreme ... well, let's just say
              it's a calamity waiting to happen.

              Tough words, I know, but I assert that NinjaTrader is working fine, and that your code
              has errors.

              I would love for you to distill your code into it's most basic form and submit a sample of
              what you're doing for your OnBarUpdate/OnOrderUpdate/OnExecution overrides, I'd
              bet my left nut you're doing something wrong.

              Perhaps you can alter NT's 3 order sample above to show us your method of coding
              the overrides?
              Last edited by bltdavid; 02-01-2019, 02:46 AM.

              Comment


                #8
                Hello saltminer,

                Without sample code demonstrating how you are encountering the behavior, we do not have enough context to say NinjaTrader is doing anything wrong. The example I posted is working fine and would be my recommendation for accomplishing this task.

                If you can demonstrate the issue using my example we could look into this further. Otherwise, I would recommend modifying your strategy so it models the example.

                bltdavid, I appreciate your input, but please be respectful and maintain professionalism on the forum.

                I look forward to being of any further assistance.
                JimNinjaTrader Customer Service

                Comment


                  #9
                  Hi bltdavid and NinjaTrader_Jim,
                  how about you both take a proper look at the red text in the first post of this thread. It clearly shows the sequence of events that I have described.

                  Comment


                    #10
                    Hello saltminer,

                    As I mentioned in post #8, without sample code demonstrating the issue you are running into, we cannot confirm that the script is doing everything correctly. The log messages show something is happening but we do not have any hard evidence that NinjaTrader is not doing what it is supposed to. A small and quickly testable example would be needed in addition to that detail to demonstrate that there is an issue with NinjaTrader.

                    My posted example which is how IOrder handling should be done does not display this issue and you have confirmed this, as well. If you observe that this does not demonstrate the issue, modelling off of this strategy will be your fastest resolution as you already have a working example.

                    If you are convinced there is a bug with NinjaTrader, please provide a small and quickly testable example that follows our advised usage of OnOrderUpdate and IOrder objects and demonstrates the issue.

                    Please let me know how you would like to proceed.
                    JimNinjaTrader Customer Service

                    Comment


                      #11
                      Originally posted by saltminer View Post
                      It clearly shows the sequence of events that I have described.
                      I'm not trying to be rude or difficult, but there is nothing clear about your log to me. I don't know the code behind the log messages you're showing us, and I certainly don't find those log messages showing anything particularly illuminating on the cause of issue you are having.

                      It's very simple. Not knowing your code, I don't find the log from your code very useful. Sorry.

                      That's why I totally agree with Jim -- please use the NinjaTrader sample as the definitive model for how your own code should look.

                      After that, if you still see the issue, distill your strategy into its smallest reproducible code unit that you are willing to publicly part with, and upload that strategy here.

                      Begging your pardon, but I'll say it again, I think it's an extremely high probability that your present code is wrong. IMHO, the fact your strategy code has worked until now should probably be viewed as lucky and coincidental.

                      Comment

                      Latest Posts

                      Collapse

                      Topics Statistics Last Post
                      Started by sidlercom80, 10-28-2023, 08:49 AM
                      166 responses
                      2,234 views
                      0 likes
                      Last Post sidlercom80  
                      Started by thread, Yesterday, 11:58 PM
                      0 responses
                      1 view
                      0 likes
                      Last Post thread
                      by thread
                       
                      Started by jclose, Yesterday, 09:37 PM
                      0 responses
                      6 views
                      0 likes
                      Last Post jclose
                      by jclose
                       
                      Started by WeyldFalcon, 08-07-2020, 06:13 AM
                      10 responses
                      1,414 views
                      0 likes
                      Last Post Traderontheroad  
                      Started by firefoxforum12, Yesterday, 08:53 PM
                      0 responses
                      11 views
                      0 likes
                      Last Post firefoxforum12  
                      Working...
                      X