Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Summation (SUM)

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

    Summation (SUM)

    the definition of SUM in help s as follows:

    Returns the sum over the specified period.


    i am using SUM in a strategy on a 1 tick chart with a defined dataseries assigning each occurance a value of 1. like this:


    mydata.Set( 1 );
    SUM (mydata, 6)[0]


    printing the values to the output window the first value for the SUM is 6 but then each value after the first is one less going to an infinite negative number with each tick printed.


    my understanding of SUM (mydata, 6)[0] is that it should always be 6...the sum of the last 6 periods of mydata using a 1 tick chart. basically the same as adding mydata[0] + mydata[1]+ mydata[2]+.......mydata[5]. i printed the values of mydata from [0] to [5] and all equal 1.



    what am i missing?

    #2
    Hi jcash, could you please post your code so we can try reproducing this? Thanks!

    Comment


      #3
      code and output window

      Originally posted by NinjaTrader_Bertrand View Post
      Hi jcash, could you please post your code so we can try reproducing this? Thanks!
      here is a code example:

      Code:
      [Description("written for a 1 tick chart")]
          public class MyCustomStrategy : Strategy
          {
              #region Variables
              // Wizard generated variables
              private int length = 1; // Default setting for Length
              // User defined variables (add any user defined variables below)
              private DataSeries MyData;
              #endregion
      
              /// <summary>
              /// This method is used to configure the strategy and is called once before any strategy method is called.
              /// </summary>
              protected override void Initialize()
              {
                  CalculateOnBarClose = false;
                  
                  MyData = new DataSeries(this);
              }
      
              /// <summary>
              /// Called on each bar update event (incoming tick)
              /// </summary>
              protected override void OnBarUpdate()
              {
                  MyData.Set (1);
                  
                  double sumnum = SUM(MyData, 6)[0];
                  
                  Print ("sumnum:            "+sumnum);
                  Print ("MyData [0]:  "+MyData[0]+"MyData [1]:  "+MyData[1]+"MyData [2]:  "+MyData[2]+"MyData [3]:  "+MyData[3]+"MyData [4]:  "+MyData[4]+"MyData [5]:  "+MyData[5]);
                  
                  
              }
      here is the output window print results:

      Code:
      sumnum:            6
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            5
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            4
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            3
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            2
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            1
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            0
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -1
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -2
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -3
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -4
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -5
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -6
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -7
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -8
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -9
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -10
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -11
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -12
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -13
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -14
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -15
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -16
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -17
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -18
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -19
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -20
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -21
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -22
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -23
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -24
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -25
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -26
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -27
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -28
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -29
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -30
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -31
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -32
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -33
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -34
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -35
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -36
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -37
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -38
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -39
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -40
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -41
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -42
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -43
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -44
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1
      sumnum:            -45
      MyData [0]:  1MyData [1]:  1MyData [2]:  1MyData [3]:  1MyData [4]:  1MyData [5]:  1

      Comment


        #4
        jcash,

        You should only check a period of 6 when you actually have 6 bars of data set.

        Code:
        MyData.Set (1);
            if (CurrentBar < 6)
        return;
        double sumnum = SUM(MyData, 6)[0];
        Print ("sumnum:            "+sumnum);
        Also, I was actually unable to reproduce your behavior with your code. I get prints of 6 all the way through.
        Josh P.NinjaTrader Customer Service

        Comment


          #5
          SUM used in strategy

          i am using SUM in a strategy NOT an indicator.

          when SUM is used in a strategy i get the progressively more negative number.

          when i use SUM (the same exact code as posted) in an indicator i do get the constant result of 6 also.

          Comment


            #6
            i added the if (CurrentBar < 6) return; code with the same results of progressively negative number in a strategy.

            Comment


              #7
              Not able to reproduce. All 6s once enough data points have been set.

              Output:
              Code:
              1
              2
              3
              4
              5
              6
              6
              6
              6
              6
              Please try the attached strategy.
              Attached Files
              Josh P.NinjaTrader Customer Service

              Comment


                #8
                output window from your code - ds

                yes, there are many instances of the correct result 6, but if you let it run for a while, like i did, i becomes progressively negative. go to the bottom of the following window.

                Code:
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                6
                5
                4
                3
                2
                1
                0
                -1
                -2
                -3
                -4
                -5
                -6
                -7
                -8
                -9
                -10
                -11
                -12
                -13
                -14
                -15
                -16
                -17
                -18
                -19
                -20
                -21
                -22
                -23
                -24
                -25
                -26
                -27
                -28
                -29
                -30
                -31
                -32
                -33
                -34
                -35
                -36
                -37
                -38
                -39
                -40
                -41
                -42
                -43
                -44
                -45
                -46
                -47
                -48
                -49
                -50
                -51
                -52
                -53
                -54
                -55
                -56
                -57
                -58
                -59
                -60
                -61

                Comment


                  #9
                  jcash,

                  Unfortunately I am not able to reproduce. All 6s on my end. Please provide exact steps.
                  Josh P.NinjaTrader Customer Service

                  Comment


                    #10
                    similar type of issue

                    i ran into a similar issue with SMA calculations in a strategy vs indicator...eventually the SMA calcs would drift off into results that could not possibly be correct using the data provided. i took the following advise mentioned in the attached post and wrote the SMA calculations in an indicator and referenced them in the strategy.

                    Comment


                      #11
                      jcash,

                      Please ensure you are on NT6.5.1000.10 and that you do not have a CalculateOnBarClose line set in your indicators.
                      Josh P.NinjaTrader Customer Service

                      Comment


                        #12
                        ?????

                        if i use SUM(MyData, 6)[0] i still get negative numbers after downloading .10 version of NT.

                        BUT, i cut and paste the actual formula from the SUM indicator and inserted MyData:

                        sumnum.Set ( MyData[0] + (CurrentBar > 0 ? sumnum[1] : 0) - (CurrentBar >= 6 ? MyData[6] : 0) );

                        and it now works, all results equal 6 even after many minutes of runtime.

                        Comment


                          #13
                          jcash,

                          I am not sure why this would happen on your end. Please try uninstall and when you do delete your My Documents\NinjaTrader 6.5 folder. That will get you a 100% clean reinstall. Be sure to backup anything you want to save too.
                          Josh P.NinjaTrader Customer Service

                          Comment


                            #14
                            SUM indicator BUGGY in realtime

                            Hi guys,
                            I see this too. It has wasted hours of my time trying to figure out why a strategy wouldn't work in realtime but historical was fine.
                            I can prove it with this printout.
                            I was using a call to LinReg from a strategy, and the values were going really wierd as soon as Historical finished and bars became realtime. I tracked it down to the SUM indicator (which LinReg uses).
                            I wrote a local method for SUM inside my strategy, and called both SUM and my local version and printed the results, including a print of the Historical boolean flag.
                            The results are IDENTICAL until realtime, then they are incorrect.

                            I have a very fresh install of Ninja on my machine (two weeks old). Up-to-date with .NET, and it also misbehaves on a second machine.
                            THIS MUST BE A BUG.
                            saltminer

                            My local SUM indicator is
                            private double LocalSUM(IDataSeries Series, int Period)
                            {
                            // using a local version of SUM
                            double SumResult = 0;
                            for (int q = 0; q < Period && CurrentBar-q >= 0; q++)
                            SumResult += Series[q];
                            return SumResult;
                            }


                            The OutputWindow results are
                            Historical=True
                            SUM Indicator = 65.246157629379 and local emulation is 65.246157629379
                            Historical=True
                            SUM Indicator = 31.8655711884876 and local emulation is 31.8655711884876
                            Historical=True
                            SUM Indicator = -6.77638797232066 and local emulation is -6.77638797232066
                            Historical=True
                            SUM Indicator = -35.6548272130512 and local emulation is -35.6548272130512
                            Historical=True
                            SUM Indicator = -52.4377008118063 and local emulation is -52.4377008118063
                            Historical=True
                            SUM Indicator = -58.9317293059175 and local emulation is -58.9317293059175
                            Historical=True
                            SUM Indicator = -53.7358503243995 and local emulation is -53.7358503243995
                            Historical=True
                            SUM Indicator = -39.2967217220739 and local emulation is -39.2967217220739
                            Historical=True
                            SUM Indicator = -30.8041767961586 and local emulation is -30.8041767961586
                            Historical=True
                            SUM Indicator = -20.3585409108091 and local emulation is -20.3585409108091
                            Historical=True
                            SUM Indicator = -0.931537014539572 and local emulation is -0.931537014539572
                            Historical=False
                            SUM Indicator = 1.40617264945831 and local emulation is 12.8119427011334
                            Historical=False
                            SUM Indicator = -6.83589955930438 and local emulation is 26.8417576819811
                            Historical=False
                            SUM Indicator = -13.6977744148535 and local emulation is 28.8449236170309
                            Historical=False
                            SUM Indicator = -16.6085183317773 and local emulation is 26.8120737487443
                            Historical=False
                            SUM Indicator = -6.908715208996 and local emulation is 36.4490191060067
                            Historical=False
                            SUM Indicator = -5.88270285981343 and local emulation is 50.7991125244826
                            Historical=False
                            SUM Indicator = -6.89488216293284 and local emulation is 69.2230065697713
                            Historical=False
                            SUM Indicator = -0.0963777228989784 and local emulation is 74.6541488012226
                            Historical=False
                            SUM Indicator = 13.3998881990374 and local emulation is 86.9608965344414
                            Last edited by saltminer; 06-23-2009, 09:07 PM. Reason: clarity

                            Comment


                              #15
                              saltminer,

                              Depending on what data series you are actually running the SUM you may see that behavior. This is especially true if you start changing historically held data series values.
                              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
                              594 views
                              0 likes
                              Last Post Geovanny Suaza  
                              Started by Geovanny Suaza, 02-11-2026, 05:51 PM
                              0 responses
                              343 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
                              556 views
                              1 like
                              Last Post Geovanny Suaza  
                              Started by RFrosty, 01-28-2026, 06:49 PM
                              0 responses
                              554 views
                              1 like
                              Last Post RFrosty
                              by RFrosty
                               
                              Working...
                              X