NexusFi: Find Your Edge


Home Menu

 





Unofficial NinjaTrader 8 wish list thread (NT8)!


Discussion in NinjaTrader

Updated
      Top Posters
    1. looks_one NinjaTrader with 96 posts (106 thanks)
    2. looks_two Big Mike with 81 posts (78 thanks)
    3. looks_3 OpalDragon with 35 posts (12 thanks)
    4. looks_4 AdvancedIndicators with 29 posts (26 thanks)
      Best Posters
    1. looks_one Fat Tails with 5.3 thanks per post
    2. looks_two NinjaTrader with 1.1 thanks per post
    3. looks_3 Big Mike with 1 thanks per post
    4. looks_4 AdvancedIndicators with 0.9 thanks per post
    1. trending_up 378,179 views
    2. thumb_up 692 thanks given
    3. group 221 followers
    1. forum 1,036 posts
    2. attach_file 63 attachments




 
Search this Thread

Unofficial NinjaTrader 8 wish list thread (NT8)!

  #751 (permalink)
 
NinjaTrader's Avatar
 NinjaTrader  NinjaTrader is an official Site Sponsor
Site Sponsor

Web: NinjaTrader
AMA: Ask Me Anything
Webinars: NinjaTrader Webinars
Elite offer: Click here
 
Posts: 1,713 since May 2010
Thanks Given: 203
Thanks Received: 2,686


freetrader View Post
Thanks much for the information on the release date. That is very good news.

I am only running two custom indicators based on NT code with very minor modifications to simply color fill below and above a line, and only when it updates the indicator. All indicators are set to only update on bar close, in my case 5 minute bars at the lowest. Careful review of NT forum posts suggest that the problem I'm having is due to the sheer number of indicators (16) I'm using per chart. I will PM you later today.

Thanks to freetrader for reaching out to our support team so we could analyze the performance issues he experienced.

The workspace(s) provided had:

- At least 20 individual charts mostly intraday
- Anywhere from 150 to 400 days of day to load
- 46+ pitchforks
- And indicators on each chart including one custom on at least each chart

The problem boils down to the custom indicator which calls the DrawRegion() method for each bar on each chart which resulted in north of a million of these calls with a unique tag for each bar. DrawRegion() used in this implementation is extremely costly. A minor tweak to the indicator replacing DrawRegion() with a histogram plot removed the performance bottleneck immediately.

Follow me on Twitter Reply With Quote

Can you help answer these questions
from other members on NexusFi?
Futures True Range Report
The Elite Circle
ZombieSqueeze
Platforms and Indicators
The space time continuum and the dynamics of a financial …
Emini and Emicro Index
NexusFi Journal Challenge - April 2024
Feedback and Announcements
NT7 Indicator Script Troubleshooting - Camarilla Pivots
NinjaTrader
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Get funded firms 2023/2024 - Any recommendations or word …
59 thanks
Funded Trader platforms
36 thanks
NexusFi site changelog and issues/problem reporting
25 thanks
The Program
20 thanks
GFIs1 1 DAX trade per day journal
19 thanks
  #752 (permalink)
 
NJAMC's Avatar
 NJAMC 
Atkinson, NH USA
Market Wizard
 
Experience: Intermediate
Platform: NinjaTrader 8/TensorFlow
Broker: NinjaTrader Brokerage
Trading: Futures, CL, ES, ZB
Posts: 1,970 since Dec 2010
Thanks Given: 3,037
Thanks Received: 2,394


NinjaTrader View Post
Thanks to freetrader for reaching out to our support team so we could analyze the performance issues he experienced.

The workspace(s) provided had:

- At least 20 individual charts mostly intraday
- Anywhere from 150 to 400 days of day to load
- 46+ pitchforks
- And indicators on each chart including one custom on at least each chart

The problem boils down to the custom indicator which calls the DrawRegion() method for each bar on each chart which resulted in north of a million of these calls with a unique tag for each bar. DrawRegion() used in this implementation is extremely costly. A minor tweak to the indicator replacing DrawRegion() with a histogram plot removed the performance bottleneck immediately.

This might be a good test case for NT8. I am sure if the DrawRegion() is better coded in the new platform, freetrader should see better performance. Also, with the multithreading there should be some relief.

Nil per os
-NJAMC [Generic Programmer]

LOM WIKI: NT-Local-Order-Manager-LOM-Guide
Artificial Bee Colony Optimization
Visit my NexusFi Trade Journal Reply With Quote
  #753 (permalink)
 
NinjaTrader's Avatar
 NinjaTrader  NinjaTrader is an official Site Sponsor
Site Sponsor

Web: NinjaTrader
AMA: Ask Me Anything
Webinars: NinjaTrader Webinars
Elite offer: Click here
 
Posts: 1,713 since May 2010
Thanks Given: 203
Thanks Received: 2,686



NJAMC View Post
This might be a good test case for NT8. I am sure if the DrawRegion() is better coded in the new platform, freetrader should see better performance. Also, with the multithreading there should be some relief.

DrawRegion() is not poorly coded and in NT8, although there are performance improvements it would be immaterial in this particular scenario. Simply put, it was the wrong tool for the job. DrawRegion() is designed to color a region, not to draw vertical bars, especially 1MM+ of them, that's what PlotStyle.Bar is for.

Follow me on Twitter Reply With Quote
  #754 (permalink)
 
NJAMC's Avatar
 NJAMC 
Atkinson, NH USA
Market Wizard
 
Experience: Intermediate
Platform: NinjaTrader 8/TensorFlow
Broker: NinjaTrader Brokerage
Trading: Futures, CL, ES, ZB
Posts: 1,970 since Dec 2010
Thanks Given: 3,037
Thanks Received: 2,394


NinjaTrader View Post
DrawRegion() is not poorly coded and in NT8, although there are performance improvements it would be immaterial in this particular scenario. Simply put, it was the wrong tool for the job. DrawRegion() is designed to color a region, not to draw vertical bars, especially 1MM+ of them, that's what PlotStyle.Bar is for.

@NinjaTrader,

Agreed, I don't think DrawRegion() is the proper function to use here, didn't mean to imply that it wasn't coded correctly, sorry. I agree, it shouldn't be used for this application.

What I think, not knowing all the details of NT8, is that some new technology that NT8 leverages to improve charting performance can be leveraged in a redesign of many of these 3rd party "colorful" indicators. This would require a new function that acted like DrawRegion() but leverages the video card performance for example.

Regards,

Nil per os
-NJAMC [Generic Programmer]

LOM WIKI: NT-Local-Order-Manager-LOM-Guide
Artificial Bee Colony Optimization
Visit my NexusFi Trade Journal Reply With Quote
  #755 (permalink)
 
Big Mike's Avatar
 Big Mike 
Manta, Ecuador
Site Administrator
Developer
Swing Trader
 
Experience: Advanced
Platform: Custom solution
Broker: IBKR
Trading: Stocks & Futures
Frequency: Every few days
Duration: Weeks
Posts: 50,398 since Jun 2009
Thanks Given: 33,173
Thanks Received: 101,538


NJAMC View Post
@NinjaTrader,

Agreed, I don't think DrawRegion() is the proper function to use here, didn't mean to imply that it wasn't coded correctly, sorry. I agree, it shouldn't be used for this application.

What I think, not knowing all the details of NT8, is that some new technology that NT8 leverages to improve charting performance can be leveraged in a redesign of many of these 3rd party "colorful" indicators. This would require a new function that acted like DrawRegion() but leverages the video card performance for example.

Regards,

WPF and DirectX is what you are looking for.

Mike

We're here to help: just ask the community or contact our Help Desk

Quick Links: Change your Username or Register as a Vendor
Searching for trading reviews? Review this list
Lifetime Elite Membership: Sign-up for only $149 USD
Exclusive money saving offers from our Site Sponsors: Browse Offers
Report problems with the site: Using the NexusFi changelog thread
Follow me on Twitter Visit my NexusFi Trade Journal Reply With Quote
  #756 (permalink)
 
NJAMC's Avatar
 NJAMC 
Atkinson, NH USA
Market Wizard
 
Experience: Intermediate
Platform: NinjaTrader 8/TensorFlow
Broker: NinjaTrader Brokerage
Trading: Futures, CL, ES, ZB
Posts: 1,970 since Dec 2010
Thanks Given: 3,037
Thanks Received: 2,394


Big Mike View Post
WPF and DirectX is what you are looking for.

Mike

@Big Mike,

My understanding is charts will be sped up with DirectX, so hopefully one of the Game Programmers in the group can help us come up with some DirectX libraries to replace some of these DrawRegion() type of visual features. That will help the 3rd party indicators play nice with NT8. I am not an expert with DirectX, but feel we can come up with a library (maybe even one that is inherited that will transparently replace the NT8 build in features with an optimized DirectX call version.

Nil per os
-NJAMC [Generic Programmer]

LOM WIKI: NT-Local-Order-Manager-LOM-Guide
Artificial Bee Colony Optimization
Visit my NexusFi Trade Journal Reply With Quote
  #757 (permalink)
 
Big Mike's Avatar
 Big Mike 
Manta, Ecuador
Site Administrator
Developer
Swing Trader
 
Experience: Advanced
Platform: Custom solution
Broker: IBKR
Trading: Stocks & Futures
Frequency: Every few days
Duration: Weeks
Posts: 50,398 since Jun 2009
Thanks Given: 33,173
Thanks Received: 101,538


NJAMC View Post
@Big Mike,

My understanding is charts will be sped up with DirectX, so hopefully one of the Game Programmers in the group can help us come up with some DirectX libraries to replace some of these DrawRegion() type of visual features. That will help the 3rd party indicators play nice with NT8. I am not an expert with DirectX, but feel we can come up with a library (maybe even one that is inherited that will transparently replace the NT8 build in features with an optimized DirectX call version.

I honestly cannot see any reason to do so. The poor performance by the other user was due to poor coding. A 2D chart does not need DirectX.

You have other case examples of sluggish performance due to drawing objects in NT?

Mike

We're here to help: just ask the community or contact our Help Desk

Quick Links: Change your Username or Register as a Vendor
Searching for trading reviews? Review this list
Lifetime Elite Membership: Sign-up for only $149 USD
Exclusive money saving offers from our Site Sponsors: Browse Offers
Report problems with the site: Using the NexusFi changelog thread
Follow me on Twitter Visit my NexusFi Trade Journal Reply With Quote
  #758 (permalink)
 
NJAMC's Avatar
 NJAMC 
Atkinson, NH USA
Market Wizard
 
Experience: Intermediate
Platform: NinjaTrader 8/TensorFlow
Broker: NinjaTrader Brokerage
Trading: Futures, CL, ES, ZB
Posts: 1,970 since Dec 2010
Thanks Given: 3,037
Thanks Received: 2,394


Big Mike View Post
I honestly cannot see any reason to do so. The poor performance by the other user was due to poor coding. A 2D chart does not need DirectX.

You have other case examples of sluggish performance due to drawing objects in NT?

Mike

That is true, but there are ways to avoid poor coding by hiding the complexity of doing something correctly. The DirectX pipe is designed to speed 2D and 3D (2D is just the flat projection). Right now the operating system does this pixel by pixel within the CPU (Single thread), so converting the rectangle (region) into 2 triangles and handing that off to a GPU that is optimized to render trillions of triangles/second will will dramatically improve overall performance of these indicators in the future. Unfortunately, it will likely allow us to be lazy in coding again since the GPU will hide some of the inefficient coding.

I think a DirextX NT8 library would be great for performance of 3rd party tools.

Nil per os
-NJAMC [Generic Programmer]

LOM WIKI: NT-Local-Order-Manager-LOM-Guide
Artificial Bee Colony Optimization
Visit my NexusFi Trade Journal Reply With Quote
  #759 (permalink)
 jta3 
Copenhagen, Denmark
 
Experience: Advanced
Platform: Fib Fib and Fib.!
Trading: Setup
Posts: 300 since May 2011
Thanks Given: 55
Thanks Received: 162

Row Filter Condition in MarketAnalyzer.

I miss to set a condition like RSI 14 where the Filter Condition can be set to show value Below 30% and Above 70% so I can filter out value between 30-70%. I can't see how that possible today.

NinjaTrader Version 7

Reply With Quote
  #760 (permalink)
 
Sazon's Avatar
 Sazon 
Roswell, GA
 
Experience: Advanced
Platform: NinjaTrader
Trading: Futures
Posts: 238 since Feb 2013
Thanks Given: 930
Thanks Received: 472



jta3 View Post
Row Filter Condition in MarketAnalyzer.

I miss to set a condition like RSI 14 where the Filter Condition can be set to show value Below 30% and Above 70% so I can filter out value between 30-70%. I can't see how that possible today.

NinjaTrader Version 7

You can write a custom indicator that plots a negative number when the values are between 30% and 70%. Then filter out negative rows.


Edit: I will also add that it would be a good idea for NinjaTrader to add a "between" condition in the market analyzer.

Reply With Quote




Last Updated on December 24, 2023


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts