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 Mindset, 04-21-2026, 06:46 AM
        0 responses
        49 views
        0 likes
        Last Post Mindset
        by Mindset
         
        Started by M4ndoo, 04-20-2026, 05:21 PM
        0 responses
        69 views
        0 likes
        Last Post M4ndoo
        by M4ndoo
         
        Started by M4ndoo, 04-19-2026, 05:54 PM
        0 responses
        36 views
        0 likes
        Last Post M4ndoo
        by M4ndoo
         
        Started by cmoran13, 04-16-2026, 01:02 PM
        0 responses
        96 views
        0 likes
        Last Post cmoran13  
        Started by PaulMohn, 04-10-2026, 11:11 AM
        0 responses
        59 views
        0 likes
        Last Post PaulMohn  
        Working...
        X