Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Fetching Data from Indicator

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

    Fetching Data from Indicator

    My Indicator fetches some data from a web resource every 5 minutes. I have created a simple timer that calls an Asynchronous task. My question is, I don't know where to dispose of the timer or write this so it automatically disposes. Here is my Code:

    Code:
            //Run this every 5 minutes
            void TimerElapsed(object sender, ElapsedEventArgs e)
            {
                FetchDataAsync();
            }
    
            protected override void OnStateChange()
            {
                Print(State);
                if (State == State.SetDefaults)
                {
                    Description                                    = @"Enter the description for your new custom Indicator here.";
                    Name                                        = "TestProj";
                    Calculate                                    = Calculate.OnPriceChange;
                    IsOverlay                                    = false;
                    DisplayInDataBox                            = true;
                    DrawOnPricePanel                            = false;
                    DrawHorizontalGridLines                        = true;
                    DrawVerticalGridLines                        = true;
                    PaintPriceMarkers                            = true;
                    ScaleJustification                            = NinjaTrader.Gui.Chart.ScaleJustification.Right;
                    IsSuspendedWhileInactive                    = false;
                    AddPlot(new Stroke(Brushes.Black), PlotStyle.Bar, "Plot1");                
                }
                else if (State == State.Configure){
                    FetchDataAsync();        //fetch the data the first time then timer takes over every 5mins
                    System.Timers.Timer t = new System.Timers.Timer();
                    t.Interval = 50000; // Every 5 mins
                    t.AutoReset = true;
                    t.Elapsed += new ElapsedEventHandler(TimerElapsed);
                    t.Start();
                }            
            }
    What event can I use to call t.Dispose() when the user removes the indicator. If I don't, the timer keeps running even though the Indicator is removed. Alternatively, is there another way to write this so that the timer is automatically disposed of at the right time?
    Last edited by swcooke; 01-04-2020, 11:27 PM.

    #2
    Did you try inside OnStateChange?

    Code:
    else if (State == State.Terminated)
    {
        if (myTimer != null)
            myTimer.Dispose();
    }
    Last edited by bltdavid; 01-04-2020, 11:51 PM.

    Comment


      #3
      Hello swcooke,

      bltdavid is giving a good suggestion.

      Below is a link to an example of timer.
      https://ninjatrader.com/support/forum/forum/ninjatrader-8/indicator-development/95391-nt8-sometimes-runs-onstatechange-termination-during-onbarupdate?p=777185#post777185
      Chelsea B.NinjaTrader Customer Service

      Comment


        #4
        Thanks. That is what I needed!

        Comment

        Latest Posts

        Collapse

        Topics Statistics Last Post
        Started by Geovanny Suaza, 02-11-2026, 06:32 PM
        0 responses
        648 views
        0 likes
        Last Post Geovanny Suaza  
        Started by Geovanny Suaza, 02-11-2026, 05:51 PM
        0 responses
        369 views
        1 like
        Last Post Geovanny Suaza  
        Started by Mindset, 02-09-2026, 11:44 AM
        0 responses
        108 views
        0 likes
        Last Post Mindset
        by Mindset
         
        Started by Geovanny Suaza, 02-02-2026, 12:30 PM
        0 responses
        572 views
        1 like
        Last Post Geovanny Suaza  
        Started by RFrosty, 01-28-2026, 06:49 PM
        0 responses
        574 views
        1 like
        Last Post RFrosty
        by RFrosty
         
        Working...
        X