NexusFi: Find Your Edge


Home Menu

 





FootPrintV2 Chart for NT8


Discussion in NinjaTrader

Updated
      Top Posters
    1. looks_one mk77ch with 71 posts (321 thanks)
    2. looks_two trymph with 32 posts (29 thanks)
    3. looks_3 zt379 with 22 posts (16 thanks)
    4. looks_4 brettji with 20 posts (17 thanks)
      Best Posters
    1. looks_one mk77ch with 4.5 thanks per post
    2. looks_two trymph with 0.9 thanks per post
    3. looks_3 brettji with 0.9 thanks per post
    4. looks_4 zt379 with 0.7 thanks per post
    1. trending_up 594,076 views
    2. thumb_up 496 thanks given
    3. group 175 followers
    1. forum 350 posts
    2. attach_file 140 attachments




 
Search this Thread
  #271 (permalink)
 morpheus0 
los angeles
 
Experience: Master
Platform: NinjaTrader
Broker: Rithmic
Trading: Futures
Frequency: Daily
Posts: 9 since Jun 2023
Thanks Given: 5
Thanks Received: 3

Added this to colorize the tape strip on extreme / min/max delta

HTML Code:
 double percentage_max 		= (currBarItem.dtc / currBarItem.dth) * 100;
						double percentage_min 		= (currBarItem.dtc / currBarItem.dtl) * 100;
						double percent 				= 95;
						
						bool extremeNegativeDelta 	= percentage_min > percent;
						bool extremePositiveDelta 	= percentage_max > percent;
						  
						if(currBarItem.dtc > 0.0)
						{
							askBrush.Opacity = opacity; 
							RenderTarget.FillRectangle(rect, extremePositiveDelta ? maxDeltaAskBrush : askBrush);
						}
						else if(currBarItem.dtc < 0.0)
						{
							bidBrush.Opacity = opacity; 
							RenderTarget.FillRectangle(rect, extremeNegativeDelta ? maxDeltaBidBrush : bidBrush);
						}
						else
						{
							ntlBrush.Opacity = opacity;
							RenderTarget.FillRectangle(rect, ntlBrush);
						}


Follow me on X Reply With Quote
  #272 (permalink)
 RobWa 
Seattle, WA
 
Platform: NinjaTrader8
Trading: Futures
Frequency: Daily
Duration: Minutes
Posts: 73 since May 2024
Thanks Given: 15
Thanks Received: 50


morpheus0 View Post
Added this to colorize the tape strip on extreme / min/max delta

HTML Code:
 double percentage_max 		= (currBarItem.dtc / currBarItem.dth) * 100;
						double percentage_min 		= (currBarItem.dtc / currBarItem.dtl) * 100;
						double percent 				= 95;
						
						bool extremeNegativeDelta 	= percentage_min > percent;
						bool extremePositiveDelta 	= percentage_max > percent;
						  
						if(currBarItem.dtc > 0.0)
						{
							askBrush.Opacity = opacity; 
							RenderTarget.FillRectangle(rect, extremePositiveDelta ? maxDeltaAskBrush : askBrush);
						}
						else if(currBarItem.dtc < 0.0)
						{
							bidBrush.Opacity = opacity; 
							RenderTarget.FillRectangle(rect, extremeNegativeDelta ? maxDeltaBidBrush : bidBrush);
						}
						else
						{
							ntlBrush.Opacity = opacity;
							RenderTarget.FillRectangle(rect, ntlBrush);
						}

I can do a little with TOS scripting, but Ninja I suck at. I'm not sure how to even add this to the build I have but will try. 👍


Reply With Quote
  #273 (permalink)
 morpheus0 
los angeles
 
Experience: Master
Platform: NinjaTrader
Broker: Rithmic
Trading: Futures
Frequency: Daily
Posts: 9 since Jun 2023
Thanks Given: 5
Thanks Received: 3


RobWa View Post
I can do a little with TOS scripting, but Ninja I suck at. I'm not sure how to even add this to the build I have but will try. 👍

HTML Code:
[XmlIgnore]
		public Brush maxDeltaBidColor
		{ get; set; }
		
		[Browsable(false)]
		public string maxDeltaBidColorSerializable
		{
			get { return Serialize.BrushToString(maxDeltaBidColor); }
			set { maxDeltaBidColor = Serialize.StringToBrush(value); }
		}
		
		[XmlIgnore]
		public Brush maxDeltaAskColor
		{ get; set; }
		
		[Browsable(false)]
		public string maxDeltaAskColorSerializable
		{
			get { return Serialize.BrushToString(maxDeltaAskColor); }
			set { maxDeltaAskColor = Serialize.StringToBrush(value); }
		}
You need to add two new colors and brushes. Open up the script in ninja editor and compile it.

In the original script look for where the brushes and colors are set.

HTML Code:
maxDeltaBidColor 		= Brushes.Magenta;
maxDeltaAskColor 		= Brushes.DodgerBlue;


Follow me on X Reply With Quote
  #274 (permalink)
 MrTrader 
ITAJAI SC/BRAZIL
 
Experience: Intermediate
Platform: NinjaTrader
Broker: Clear Corretora
Trading: DOLFUT, WINFUT
Posts: 341 since Jun 2014
Thanks Given: 1,356
Thanks Received: 229


morpheus0 View Post
HTML Code:
public ConcurrentDictionary<double, RowItem> aggregateByTicks( NinjaScriptBase ninja, int size ) {

ConcurrentDictionary<double, RowItem> aggregatedRowItems = new ConcurrentDictionary<double, RowItem>();



double rowCount = this.rowItems.Count / size;



RowItem currentItem = null;



List< KeyValuePair<double, RowItem> > currentBatch = new List< KeyValuePair<double, RowItem> >();

 

var sorted = this.rowItems.OrderByDescending( x => x.Key );

 

var i=0;

var count = sorted.Count();

var itemsProcessed = 0;



foreach(KeyValuePair<double, RowItem> ri in sorted)

{  

++i;

currentBatch.Add( ri );



if( currentBatch.Count == size || i == count ) {

 

double closeAvg = ninja.Instrument.MasterInstrument.RoundToTickSize( currentBatch.Average( x=> x.Key ) );

double ask = currentBatch.Sum( x=> x.Value.ask ) ;

double bid = currentBatch.Sum( x=> x.Value.bid ) ;

double vol = currentBatch.Sum( x=> x.Value.vol );



currentBatch.OrderBy(x => x.Key);  

itemsProcessed += currentBatch.Count;



currentBatch.Clear();



aggregatedRowItems.GetOrAdd( closeAvg, new RowItem(vol, ask, bid ) ); 

}  

}

 



return aggregatedRowItems;

}


Here's some code to aggregate ticks - useful for NQ/YM -- a setting of 4 ticks per close should perform decently. Makes it so the text size doesnt get so small on these instruments.

I would like to give it a shot.. but where should I paste this snipet? Between lines X and Y maybe?
Thanks!


Reply With Quote
  #275 (permalink)
 morpheus0 
los angeles
 
Experience: Master
Platform: NinjaTrader
Broker: Rithmic
Trading: Futures
Frequency: Daily
Posts: 9 since Jun 2023
Thanks Given: 5
Thanks Received: 3


MrTrader View Post
I would like to give it a shot.. but where should I paste this snipet? Between lines X and Y maybe?
Thanks!

In BarData.cs you need to add the function aggregateByTicks;

I put it under line 200 addVol


THAN:

in FootPrintV2.cs:

private void drawFootPrint(ChartControl chartControl, ChartScale chartScale)

Around line 4012 ish where the main foreach is done replace it with this:


HTML Code:
var items = ticksPerRow > 1 ? currBarItem.aggregateByTicks(this, ticksPerRow) : currBarItem.rowItems;
				
foreach(KeyValuePair<double, NinjaTrader.NinjaScript.Indicators.Infinity.BarData.RowItem> ri in items)
{


Follow me on X Reply With Quote
Thanked by:
  #276 (permalink)
 thetradeengine 
Los Angeles
 
Experience: Beginner
Platform: TradingView
Trading: MNQ + MES
Posts: 4 since Feb 2021
Thanks Given: 3
Thanks Received: 1

Does anyone know why the per bar volume and per bar delta values of FootPrint V2 match the values of a volumetric chart of the same bar interval if the bars are time-based (minute/second), but on range/tick/volume bars both volume and delta differ?

It's also a reported issue on Ninja's own example of using a 1 tick data series in "BuySellVolumeOneTick"


Reply With Quote
  #277 (permalink)
 RobWa 
Seattle, WA
 
Platform: NinjaTrader8
Trading: Futures
Frequency: Daily
Duration: Minutes
Posts: 73 since May 2024
Thanks Given: 15
Thanks Received: 50

I'm digging a little more into this indicator and notice the settings for a candle outline. It looks like you can turn on an option to outline the candle with a color when it closes with a positive or negative delta. So, you can have a green candle with a red outline if it finishes up, but has a negative delta. Any chance that this information could be added to the bardata.cs at a simple 1 or -1 the help with an auto trading strategy? I just subscribed to Quagensia's no code strategy builder and I think I'd be able to use this to enter trades.
Capture7


Reply With Quote
  #278 (permalink)
 Raising Kane 
Denver Colorado
 
Experience: Intermediate
Platform: NT8
Trading: Futures
Posts: 3 since Dec 2022
Thanks Given: 0
Thanks Received: 0

Hi there,

So, I'm a bit perplexed. I downloaded the indicator and when I load the FPv2 and BarData on my chart I get nothing but plain chart. I've never had this issue come up with any other indicator. Has anyone else experienced this or know of a fix?


Reply With Quote
  #279 (permalink)
 Belltalks 
Chicago US
 
Experience: Intermediate
Platform: NinjaTrader
Trading: CL GC
Posts: 31 since May 2016
Thanks Given: 6
Thanks Received: 16

It could be that you have not tick replay activated.


Reply With Quote
  #280 (permalink)
 Raising Kane 
Denver Colorado
 
Experience: Intermediate
Platform: NT8
Trading: Futures
Posts: 3 since Dec 2022
Thanks Given: 0
Thanks Received: 0


Belltalks View Post
It could be that you have not tick replay activated.

I do have tick replay checked.


Reply With Quote




Last Updated on March 11, 2026


© 2026 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 - Downloads - Top
no new posts