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

Global Draw Object

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

    Global Draw Object

    Is there a way to make a draw object (for example an Arrow) for an indicator appear on all chart, on multiple instrument? In other words, the draw object on Nasdaq -NQ will also appear on S&P 500 - ES chart.

    #2
    Hello cryfgg,

    Thanks for your post.

    We do not offer any support for global drawing objects on multiple instruments.

    The closest you can get would be to add a public method to your indicator that takes a start time and end time, and a start and end price. The method could then use those parameters to call Draw.ArrowLine() with a specific tag to update that arrow line, or draw a new one.

    The indicator then would need to be added to all charts that where the arrow line should be draw.

    Then, when the indicator should call Draw.ArrowLine(), do this instead: loop through all windows, and within all windows that are charts, loop through the active ChartControl Indicators collection and find your indicator, then call the indicator's public method and give it the start/end price/time parameters. (I would only attempt to modify things on other windows after State == State.Realtime)

    Here is some code to loop through windows and loop through indicators in the ActiveChartControl Indicators collection.

    Code:
        foreach (var window in NinjaTrader.Core.Globals.AllWindows)
        {
            // check if the found window is a Chart window, if not continue looking
            if (!(window is NinjaTrader.Gui.Chart.Chart)) continue;
    
            window.Dispatcher.InvokeAsync(new Action(() =>
            {
                // try to cast as a Chart, if it fails it will be null
                var foundChart = window as NinjaTrader.Gui.Chart.Chart;
    
                // make sure we found a chart
                if (foundChart == null) return;
    
                // make sure the found chart is the owner window
                if (foundChart != this.Owner as NinjaTrader.Gui.Chart.Chart) return;
    
                // Instantiate indicator collection
                ChartObjectCollection<NinjaTrader.Gui.NinjaScript. IndicatorRenderBase>  indicatorCollection = foundChart.ActiveChartControl.Indicators;
    
                 // Loop through indicators in collection
                 foreach (Indicator indi in indicatorCollection)
                      Print(indi.Name);
    
             }));
    
         }
    Draw.ArrowLine() - https://ninjatrader.com/support/help..._arrowline.htm
    ChartControl.Indicators - https://ninjatrader.com/support/help...indicators.htm

    We look forward to assisting.
    JimNinjaTrader Customer Service

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by Gerik, Today, 01:02 AM
    0 responses
    2 views
    0 likes
    Last Post Gerik
    by Gerik
     
    Started by Shai Samuel, Yesterday, 11:29 PM
    0 responses
    2 views
    0 likes
    Last Post Shai Samuel  
    Started by futurestrader0000, Yesterday, 09:27 PM
    0 responses
    4 views
    0 likes
    Last Post futurestrader0000  
    Started by AdeptistJune, Yesterday, 09:19 PM
    0 responses
    7 views
    0 likes
    Last Post AdeptistJune  
    Started by Johnny90, 05-14-2022, 04:17 AM
    4 responses
    25 views
    0 likes
    Last Post jeronymite  
    Working...
    X