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 charlesugo_1, 05-26-2026, 05:03 PM
        0 responses
        68 views
        0 likes
        Last Post charlesugo_1  
        Started by DannyP96, 05-18-2026, 02:38 PM
        1 response
        151 views
        0 likes
        Last Post NinjaTrader_ChelseaB  
        Started by CarlTrading, 05-11-2026, 05:56 AM
        0 responses
        162 views
        0 likes
        Last Post CarlTrading  
        Started by CarlTrading, 05-10-2026, 08:12 PM
        0 responses
        100 views
        0 likes
        Last Post CarlTrading  
        Started by Hwop38, 05-04-2026, 07:02 PM
        0 responses
        288 views
        0 likes
        Last Post Hwop38
        by Hwop38
         
        Working...
        X