NexusFi: Find Your Edge


Home Menu

 





Help w/ Keltner from TradeStation to NT7


Discussion in NinjaTrader

Updated
      Top Posters
    1. looks_one bluemele with 9 posts (0 thanks)
    2. looks_two Fat Tails with 3 posts (2 thanks)
    3. looks_3 trendisyourfriend with 2 posts (1 thanks)
    4. looks_4 vegasfoster with 1 posts (0 thanks)
    1. trending_up 7,303 views
    2. thumb_up 3 thanks given
    3. group 1 followers
    1. forum 15 posts
    2. attach_file 2 attachments




 
Search this Thread

Help w/ Keltner from TradeStation to NT7

  #1 (permalink)
 
bluemele's Avatar
 bluemele 
Honolulu, Hawaii
 
Experience: Intermediate
Platform: NinjaTrader
Broker: ATC/TT, AMP/Zen-Fire, AMP/CQG
Trading: TF
Posts: 2,543 since Jun 2010
Thanks Given: 3,803
Thanks Received: 2,842

Hi all,

Can someone help me put this into NT7? I have used this Keltner for over 1 year and it is VERY useful to my technique. It would take me weeks if not over a month to do this myself. It is pretty useful and we could share it with the community.

One thing though is that I don't use the MA's (except the keltner settings).

 
Code
inputs: 
	
	Mid_Channel_PriceType 			( 1) , 
 	Mid_Channel_SimpleOrExpAvg 		( 2) ,
	Mid_Channel_Length_Day			( 52) , 
	Mid_Channel_Length_ID			( 52) , 

	True_or_Price_Range 			( 1) ,
	ATR_APR_SimpleOrExpRange 		( 2) ,

	TR_or_PR_Length_Day				( 52) ,
	TR_or_PR_Length_ID				( 52) ,

	Upper_Factor 					( 3.5) ,
	Lower_Factor 					( 3.5) ,

	PiercePercent 					( .33) , 

	MA_Fast_Type					( 2		) ,		
	MA_Fast_Length_Day				( 13	) ,
	MA_Fast_Length_ID				( 13	) ,

	MA_Slow_Type					( 2		) ,
	MA_Slow_Length_Day				( 34) ,
	MA_Slow_Length_ID				( 34) ,

	Chart_Color_MA_Fast				( rgb (130,130,130)) ,
	Chart_Color_MA_Slow				( rgb (130,130,130)) ,

	Chart_Color_LKC					( rgb (0,255,0)) ,
	Chart_Color_MKC					( rgb(255,0,255)) ,
	Chart_Color_UKC					( rgb (0,255,0)) ,

	BearishColor  					( rgb (130,130,130)) ,	
	BullishColor 					( rgb (130,130,130)) ,
	CautionColor  					( rgb (130,130,130)) ,

	Round_Control  					( 2) ,

	AlertsOn						( false	) ,
	Display_KeltnerChannels 		( true 	) ,
	Display_MA_Fast					( false) ,
	Display_MA_Slow 				( false) ,
	Display_Signals					( false) ,

	InputEdits 						( false) ,

	Graph_Delay 					( 0 	) ,
	Displace_MAF					( 0 	) ,
	Displace_MAS					( 0 	) ,
	Displace_LKC					( 0 	) ,
	Displace_MKC					( 0) ,
	Displace_UKC					( 0 	) ,

	DisplayAdjustment				( 1) ,

	CommentaryTable 				( false) ,
	dFormat					  		( "YYYYMMDD") , 
	SepChar							( "/" 	) ;

variables : 
	
	RadarScreen						( false	) , 
	Chart							( false ) ,
	ChartorRadarScreen				( 0 	) ,
	LBOC							( false	) ,	

	double Average_Price_Range		( 0.00	) ,
	double Price					( 0.00	) ,
	double Price_Range				( 0.00	) ,
	Price_Range_Smooth				( 0.00	) ,
		
	double Average_True_Range		( 0.00	) ,
	TR_or_PR_Length					( 21	) ,
	double True_High				( 0.00 	) ,
	double True_Low					( 0.00	) ,
	double True_Range				( 0.00	) ,
	True_Range_Smooth				( 0.00	) ,

	double Upper_Channel 			( 1.00 	) ,			
	double Mid_Channel				( 0.50	) , 
	double Lower_Channel 			( 1.00 	) , 

	Mid_Channel_Length				( 21	) ,
	Mid_Channel_Smooth				( 0.00	) ,

	double Upper_Width 				( 1.00 	) ,
	double Lower_Width 				( 1.00 	) ,

	Lower_Lower						( 0		) ,
	Upper_Upper						( 0		) ,

	double MA_Fast					( 0.00	) ,
	MA_Fast_Length					( 13	) ,
	MA_Fast_Smooth					( 0.00	) ,

	double MA_Slow					( 0.00	) ,
	MA_Slow_Length					( 34	) ,
	MA_Slow_Smooth					( 0.00	) ,

	DirectionPredict				( "Neutral"	) ,

	KCA_Day							( "" 	) ,
	KCA_Date						( ""	) ,
	KCA_Time						( ""	) ,

 	tYear  							( "" 	) ,
 	tMonth 							( "" 	) ,
 	tDay   							( "" 	) ,

	Symbol_Name						( ""	) ,
	s								( ""	) ,

	Plot_Close_OverUKC				( 0.00	) ,
	Plot_Close_OverLKC				( 0.00	) ,
	Plot_Close_UnderUKC				( 0.00	) ,
	Plot_Close_UnderLKC				( 0.00	) ,
	Plot_$Predict					( ""	) ,

	Color_Close_OverUKC				( rgb (   0 ,   0 ,   0 ) ) ,
	Color_Close_OverLKC				( rgb (   0 ,   0 ,   0 ) ) ,
	Color_Close_UnderUKC			( rgb (   0 ,   0 ,   0 ) ) ,
	Color_Close_UnderLKC			( rgb (   0 ,   0 ,   0 ) ) ,
	Color_LowerChannel				( rgb (   0 ,   0 ,   0 ) ) ,
	Color_MiddleChannel				( rgb (   0 ,   0 ,   0 ) ) ,
	Color_UpperChannel				( rgb (   0 ,   0 ,   0 ) ) ,
	Color_$Predict					( rgb (   0 ,   0 ,   0 ) ) ,

	BuildKCAll			( "tachyonv Keltner Channels All " + 
						"Ver. 4.3 Build 23 February 5, 2006" ) ;

#BeginCmtry ;
Array :
	string HTML_str []  ( "" ) ;
#End ;

{
******************************************************************
*	H 0. Start up "housekeeping" routines
******************************************************************
}
{	______________________________________________________________
	|	H 1. Input edits
	|_____________________________________________________________
}

if  currentbar = 1 and InputEdits then
	begin

		if	Mid_Channel_PriceType  <> 1 and
			Mid_Channel_PriceType  <> 2 and
			Mid_Channel_PriceType  <> 3 and
			Mid_Channel_PriceType  <> 4 and
			Mid_Channel_PriceType  <> 5 then
				raiseruntimeerror 
			( "Mid_Channel_PriceType  input value wrong" ) ;

		if	Mid_Channel_SimpleOrExpAvg  <> 1 and
			Mid_Channel_SimpleOrExpAvg  <> 2 then
				raiseruntimeerror 
			( "Mid_Channel_SimpleOrExpAvg  input value wrong" ) ;

		if	Mid_Channel_Length_Day < 2 or 
			Mid_Channel_Length_Day > 200 then
				raiseruntimeerror 
			( "Mid_Channel_Length_Day input value wrong" ) ;

		if	Mid_Channel_Length_ID < 2 or 
			Mid_Channel_Length_ID > 200 then
				raiseruntimeerror 
			( "Mid_Channel_Length_ID input value wrong" ) ;

		if	True_or_Price_Range <> 1 and			
			True_or_Price_Range <> 2 then
				raiseruntimeerror 
			( "True_or_Price_Range input value wrong" ) ;

		if	ATR_APR_SimpleOrExpRange <> 1 and 
			ATR_APR_SimpleOrExpRange <> 2 then
				raiseruntimeerror 
			( "ATR_APR_SimpleOrExpRange input value wrong" ) ;

		if	TR_or_PR_Length_Day	 < 2 or 
			TR_or_PR_Length_Day	 > 200 then
				raiseruntimeerror 
			( "TR_or_PR_Length_Day	 input value wrong" ) ;

		if	TR_or_PR_Length_Day	 < 2 or 
			TR_or_PR_Length_Day	 > 200 then
				raiseruntimeerror 
			( "TR_or_PR_Length_Day	 input value wrong" ) ;

		if	Upper_Factor <= 0  or
			Upper_Factor >= 10.0 then
				raiseruntimeerror 
			( "Upper_Factor input value wrong" ) ;

		if	Lower_Factor <= 0  or
			Lower_Factor >= 10.0 then
				raiseruntimeerror 
			( "Lower_Factor input value wrong" ) ;

		if  MA_Fast_Type <> 1 and MA_Fast_Type <> 2 then
				raiseruntimeerror 
			( "MA_Fast_Type input value wrong" ) ;

		if  MA_Fast_Length_Day <= 0 or 
			MA_Fast_Length_Day > 200 or
			MA_Fast_Length_Day >= MA_Slow_Length_Day then
				raiseruntimeerror 
			( "MA_Fast_Length_Day input value wrong" ) ;

		if  MA_Fast_Length_ID <= 0 or 
			MA_Fast_Length_ID > 200 or
			MA_Fast_Length_ID >= MA_Slow_Length_Day then
				raiseruntimeerror 
			( "MA_Fast_Length_ID input value wrong" ) ;

		if  MA_Slow_Type <> 1 and MA_Slow_Type <> 2 then
				raiseruntimeerror 
			( "MA_Slow_Type input value wrong" ) ;

		if  MA_Slow_Length_Day <= 0 or 
			MA_Slow_Length_Day > 200 or
			MA_Slow_Length_Day <= MA_Fast_Length_Day then
				raiseruntimeerror 
			( "MA_Slow_Length_Day input value wrong" ) ;

		if  MA_Slow_Length_Day <= 0 or 
			MA_Slow_Length_Day > 200 or
			MA_Slow_Length_Day <= MA_Fast_Length_Day then
				raiseruntimeerror 
			( "MA_Slow_Length_Day input value wrong" ) ;

		if  PiercePercent < 0.00 or
			PiercePercent >= 1.00 then
				RaiseRunTimeError 
			( "PiercePercent input value wrong" ) ;

		if  Round_Control  > 6 or 
			Round_Control  < 0 then
				RaiseRunTimeError 
			( "Round_Control  input wrong (0-6)" ) ;

		if	Graph_Delay < 0 or Graph_Delay > 5 then
				raiseruntimeerror 
			( "Graph_Delay input value wrong" ) ;

		if	Displace_MAF < ( - 5 ) or Displace_MAF > 5 then
				raiseruntimeerror 
			( "Displace_MAF input value wrong" ) ;

		if	Displace_MAS < ( - 5 ) or Displace_MAS > 5 then
				raiseruntimeerror 
			( "Displace_MAS input value wrong" ) ;

		if	Displace_LKC < ( - 5 ) or Displace_LKC > 5 then
				raiseruntimeerror 
			( "Displace_LKC input value wrong" ) ;

		if	Displace_MKC < ( - 5 ) or Displace_MKC > 5 then
				raiseruntimeerror 
			( "Displace_MKC input value wrong" ) ;

		if	Displace_UKC < ( - 5 ) or Displace_UKC > 5 then
				raiseruntimeerror 
			( "Displace_UKC input value wrong" ) ;

		if	DisplayAdjustment <= 0 or 
			DisplayAdjustment >= 10.00 then
				raiseruntimeerror 
			( "DisplayAdjustment input value wrong" ) ;

		if  dFormat <> "DDMMYYYY" and
			dFormat <> "MMDDYYYY" and
			dFormat <> "YYYYMMDD" then
				RaiseRunTimeError 
			( "dFormat input value wrong" ) ; 

	end ;
{
	______________________________________________________________
	|	H 2. Resets variable each pass. 
	|_____________________________________________________________
}

	DirectionPredict = "Neutral" ;

{
	______________________________________________________________
	|	H 3. Determines if this indicator is running in a 
	|	RadarScreen table or in a chart. 
	|_____________________________________________________________
}

if  currentbar = 1 then
	begin
	
		ChartorRadarScreen = getappinfo ( aiapplicationtype ) ;

		if  ChartorRadarScreen = 1 then
			Chart = true

		else
			Chart = false ;
		
		if  ChartorRadarScreen = 2 then
			RadarScreen = true

		else
			RadarScreen = false ;

		if  Chart = false and RadarScreen = false then 
			raiseruntimeerror
		( "This indicator runs only in charts or RadarScreen" ) ;

	end ;

	if  RadarScreen then
		LBOC =	date = juliantodate ( lastcalcjdate ) and 
		time = 100 * Mod 
		( IntPortion ( LastCalcMMTime / 60 ) , 24 ) + 
		( LastCalcMMTime - 
		60 * IntPortion ( LastCalcMMTime / 60 ) ) ;

{	______________________________________________________________
	|   H 4. One time set up - intraday or day interval variables.   
	|_____________________________________________________________
} 

	if  currentbar = 1 and ( bartype = 0 or bartype = 1 ) then
		begin
		
			TR_or_PR_Length = TR_or_PR_Length_ID ;
			Mid_Channel_Length = Mid_Channel_Length_ID ;
			MA_Fast_Length = MA_Fast_Length_ID ;
			MA_Slow_Length = MA_Slow_Length_ID ;

		end 

	else
	if  currentbar = 1 and bartype > 1 then
		begin
		
			TR_or_PR_Length = TR_or_PR_Length_Day ;
			Mid_Channel_Length = Mid_Channel_Length_Day ;
			MA_Fast_Length = MA_Fast_Length_Day ;
			MA_Slow_Length = MA_Slow_Length_Day ;

		end ;

{
******************************************************************
*	KC 0. Keltner Channel Indicator
******************************************************************
}
{
	______________________________________________________________
	|	KC 1. Average True Range , True Range and 
	|	Price Range
	|_____________________________________________________________
}

	if  True_Or_Price_Range = 1 and currentbar > 1 then
		begin
		
			if  close [ 1 ] > high then 
				True_High = close [ 1 ]
		    	
			else
				True_High = high ;
		
			if  close [ 1 ] < low then 
				True_Low = close [ 1 ] 
		
			else
				True_Low = low ;
		
			True_Range = True_High - True_Low ;		
		
			if  ATR_APR_SimpleOrExpRange = 2 then
				Average_True_Range = round 				
					( Average_True_Range [ 1 ] + 
					True_Range_Smooth *
					( True_Range - Average_True_Range [ 1 ] ) ,
					Round_Control ) ;

		end ;

		if  True_Or_Price_Range = 1 and
			currentbar >= TR_or_PR_Length and
			ATR_APR_SimpleOrExpRange = 1 then
				Average_True_Range = round
 	    			( averagefc2 ( True_Range , 
					TR_or_PR_Length ) , Round_Control ) 

		else
		if  True_Or_Price_Range = 1 and
			currentbar < TR_or_PR_Length and
			ATR_APR_SimpleOrExpRange = 1 then
			Average_True_Range = True_Range ; 

	if  True_Or_Price_Range = 1 and currentbar = 1 then
		begin
		
 			True_Range = high - low ;   	

			if  ATR_APR_SimpleOrExpRange = 2 then
				begin
							
					Average_True_Range = True_Range ;
					True_Range_Smooth = round 
						( 2 / ( TR_or_PR_Length + 1 ) , 
						Round_Control ) ;
		
				end
		
			else
			if 	ATR_APR_SimpleOrExpRange = 1 then
				Average_True_Range = True_Range ;

		end ;
		
	if  True_Or_Price_Range = 2 and currentbar > 1 and 
		ATR_APR_SimpleOrExpRange = 2 then
		Average_Price_Range = round 				
			( Average_Price_Range [ 1 ] + Price_Range_Smooth *
				( Price_Range - Average_Price_Range [ 1 ] ) ,
				Round_Control ) ;

	if  True_Or_Price_Range = 2 and 
		currentbar >= TR_or_PR_Length and
		ATR_APR_SimpleOrExpRange = 1 then
		Average_Price_Range = round
 	    	( averagefc2 ( Price_Range , TR_or_PR_Length ) ,
				Round_Control )
 
	else							
	if  True_Or_Price_Range = 2 and 
		currentbar < TR_or_PR_Length and
		ATR_APR_SimpleOrExpRange = 1 then
		Average_Price_Range = high - low ;

	if  True_Or_Price_Range = 2 and currentbar = 1 then
		begin

			Price_Range = high - low ;
			Average_Price_Range = Price_Range ;		

		end ;

{
	______________________________________________________________
	|	KC 2. Determines which calculation of Price to use for 
	|	calculating the Middle Keltner Channel.
	|_____________________________________________________________
}

	if  Mid_Channel_PriceType  = 1 then
		Price = close

	else 
	if  Mid_Channel_PriceType  = 2 then
		Price = round ( ( open + close ) * 0.5 , 
			Round_Control  )

	else 
	if  Mid_Channel_PriceType  = 3 then
		Price = round ( ( high + low ) * 0.5 , 
			Round_Control  )

	else 
	if  Mid_Channel_PriceType  = 4 then
		Price = round ( ( high + low + close ) * 0.333 , 
			Round_Control  ) 

	else 
	if  Mid_Channel_PriceType  = 5 then
		Price = round ( ( open + low + high + close ) * 0.25 , 
			Round_Control  ) ;

{
	______________________________________________________________
	|	KC 3. Calculates the Middle Keltner Channel.
	|_____________________________________________________________
}

	if  Mid_Channel_SimpleOrExpAvg = 2 and currentbar > 1 then
		Mid_Channel = round ( Mid_Channel [ 1 ] + 
			Mid_Channel_Smooth * ( Price - Mid_Channel [ 1 ] ) , 
			Round_Control ) ;

		
	if  Mid_Channel_SimpleOrExpAvg = 1 and 
		currentbar >= Mid_Channel_Length then
		Mid_Channel = round ( averagefc2 
			( Price, Mid_Channel_Length ) , 
			Round_Control ) 

	else
	if  Mid_Channel_SimpleOrExpAvg = 1 and 
		currentbar < Mid_Channel_Length then
		Mid_Channel = Price ;

	if  Mid_Channel_SimpleOrExpAvg = 2 and currentbar = 1 then
		begin
					
			Mid_Channel = Price ;
			Mid_Channel_Smooth = round 
				( 2 / ( Mid_Channel_Length + 1 ) , 
				Round_Control ) ;

		end ;

{
	______________________________________________________________
	|	KC 4. Calculates the distance above and below the Middle 
	|	Keltner Channel, for the Upper and Lower Keltner Channels.
	|_____________________________________________________________
}

	if  True_or_Price_Range = 1 then
		begin
			
			Upper_Width = round ( Average_True_Range * 
				Upper_Factor , Round_Control ) ;
			Lower_Width = round ( Average_True_Range * 
				Lower_Factor , Round_Control ) ;

		end 

	else 
	if  True_or_Price_Range = 2 then
		begin
		
			Upper_Width = round ( Average_Price_Range * 
				Upper_Factor , Round_Control ) ;
			Lower_Width = round ( Average_Price_Range * 
				Lower_Factor , Round_Control ) ;

		end ;

{
	______________________________________________________________
	|	KC 5. Calculates the Upper and Lower Keltner Channels.
	|_____________________________________________________________
}

	Upper_Channel = Mid_Channel + Upper_Width ;
	Lower_Channel = Mid_Channel - Lower_Width ;

{
	______________________________________________________________
	|	KC 7. Alerts if candlestick price penetrates Keltner 
	|	Channel by the PricePercent or more at close. This is 
	|	helpful if seeking reversals and breakouts/breakdowns.
	|_____________________________________________________________
}

if 	currentbar > Graph_Delay * maxlist 
		( TR_or_PR_Length , Mid_Channel_Length ) then 
	begin		
		
	if  (  absvalue ( close - open) > 0 ) and 	
		(( absvalue ( close - Upper_Channel ) ) / 
			absvalue ( close - open ) > PiercePercent ) and
		(  close - open ) >= 0 and (  close > Upper_Channel ) and
		   close crosses over Upper_Channel then
		begin
			
			if  AlertsOn then
				alert ( "Price closed over Upper KC" ) ;

			DirectionPredict = "Caution" ;

			if  Chart and Display_Signals then
				begin
					
					Plot_Close_OverUKC = 
						high + DisplayAdjustment ;
					Color_Close_OverUKC = CautionColor ;

				end ;
				
			if  Radarscreen and LBOC then
				begin
					
					Color_UpperChannel = CautionColor ;
					Color_Close_OverUKC = CautionColor ;
					Color_$Predict = CautionColor ;
					Plot_Close_OverUKC = Close ;
					Plot_$Predict = DirectionPredict ;

				end ;

		end ;
 
	if  (  absvalue ( close - open) > 0 ) and 	
		(( absvalue ( close - Upper_Channel ) ) / 
			absvalue ( close - open ) > PiercePercent ) and
		(  close - open ) <= 0 and (  close < Upper_Channel ) and
		   close crosses under Upper_Channel then
		begin
			
			if  AlertsOn then
				alert ( "Price closed under Upper KC" ) ;

			DirectionPredict = "Bearish" ;

			if  Chart and Display_Signals then
				begin 
					
					Plot_Close_UnderUKC = 
						high + DisplayAdjustment ;
					Color_Close_UnderUKC = BearishColor ;

				end ;

			if  RadarScreen and barstatus ( 1 ) = 2 and LBOC then
				begin
					
					Color_UpperChannel = BearishColor ;
					Color_Close_UnderUKC = BearishColor ;
					Color_$Predict = BearishColor ;
					Plot_Close_UnderUKC = Close ;
					Plot_$Predict = DirectionPredict ;

				end ;

		end ;
			
	if  ( absvalue ( close - open) > 0 ) and
		( absvalue ( close - Lower_Channel ) ) / 
			absvalue ( close - open ) > PiercePercent and
		( close - open ) <= 0 and ( close < Lower_Channel ) and
		close crosses under Lower_Channel then	
		begin
			
			if  AlertsOn then
				alert ( "Price closed under Lower KC" ) ; 

			DirectionPredict = "Caution" ;

			if  Chart and Display_Signals and 
				low - DisplayAdjustment > 0 then
				begin
						
					Plot_Close_UnderLKC = low - DisplayAdjustment ;
					Color_Close_UnderLKC = CautionColor ;

				end ;
				
			if  RadarScreen and barstatus ( 1 ) = 2 and LBOC then
				begin
					
					Color_LowerChannel = CautionColor ;
					Color_Close_UnderLKC = CautionColor ;
					Color_$Predict = CautionColor ;
					Plot_Close_UnderLKC = Close ;
					Plot_$Predict = DirectionPredict ;

				end ;

		end ;

	if  ( absvalue ( close - open) > 0 ) and
		( absvalue ( close - Lower_Channel ) ) / 
			absvalue ( close - open ) > PiercePercent and
		( close - open ) >= 0 and ( close > Lower_Channel ) and
		close crosses above Lower_Channel then	
		begin
			
			if  AlertsOn then
				alert ( "Price closed over Lower KC" ) ;

	 	    DirectionPredict = "Bullish" ;

			if  Chart and Display_Signals and
				low - DisplayAdjustment > 0 then
				begin
						
					Plot_Close_OverLKC = 
						low - DisplayAdjustment ;
					Color_Close_OverLKC = BullishColor ;

				end ;

			if  RadarScreen and barstatus ( 1 ) = 2 and LBOC then
				begin
					
					Color_LowerChannel = BullishColor ;
					Color_Close_OverLKC = BullishColor ;
					Color_$Predict = BullishColor ;
					Plot_Close_OverLKC = Close ;
					Plot_$Predict = DirectionPredict ;
					
				end ;	
		
		end ;

	end ;

{	______________________________________________________________
	|	I02. Indicator: Moving averages, fast and slow
	|_____________________________________________________________
}

	if  MA_Fast_Type = 2 and currentbar > 1 then
		MA_Fast = round 
			( MA_Fast [ 1 ] + MA_Fast_Smooth * 
				( close - MA_Fast [ 1 ] ) , Round_Control ) ;	
	
	if  MA_Fast_Type = 1 and currentbar >= MA_Fast_Length then
		MA_Fast = round ( kc_averagefc 
			( close , MA_Fast_Length ) , 
			Round_Control ) 

	else
	if  MA_Fast_Type = 1 and currentbar < MA_Fast_Length then
		MA_Fast = round ( ( high + low ) * 0.5 , 
			Round_Control ) ;
 
	if  MA_Fast_Type = 2 and currentbar = 1 then
		begin
		
			MA_Fast = round ( ( high + low ) * 0.5 ,
				Round_Control ) ;
			MA_Fast_Smooth = 2 / ( MA_Fast_Length + 1 ) ;

		end ;

	if  MA_Slow_Type = 2 and currentbar > 1 then
		MA_Slow = round 
			( MA_Slow [ 1 ] + MA_Slow_Smooth * 
				( close - MA_Slow [ 1 ] ) , Round_Control ) ;
	
	if  MA_Slow_Type = 1 and currentbar >= MA_Slow_Length then
		MA_Slow = round ( kc_averagefc ( close , 
			MA_Slow_Length ) , Round_Control )

	else
	if  MA_Slow_Type = 1 and currentbar < MA_Slow_Length then
		MA_Slow = round ( ( high + low ) * 0.5 , 
			Round_Control ) ;

	if  MA_Slow_Type = 2 and currentbar = 1 then
		begin
		
			MA_Slow = round ( ( high + low ) * 0.5 , 
				Round_Control ) ;
			MA_Slow_Smooth = 2 / ( MA_Slow_Length + 1 ) ;

		end ;

{	______________________________________________________________
	|  	RS 0 RadarScreen plots
	|_____________________________________________________________
}

if  RadarScreen and LBOC then
begin
	
{	______________________________________________________________
	|  	RS I RadarScreen indicator plots
	|_____________________________________________________________
}
		if Lower_Channel > 0 then
			begin
			
				plot21 ( Lower_Channel , "Lower KC" , 
					Color_LowerChannel ) ; 

			 end ;

		if Upper_Channel > 0 then
			begin
			
				plot25 ( Upper_Channel , "Upper KC" , 
					Color_UpperChannel ) ; 

			 end ;

{	______________________________________________________________
	|  	RS A RadarScreen alert plots
	|_____________________________________________________________
}

		if  Plot_$Predict <> "" then
			begin
				
				plot1 ( Plot_$Predict, "$ Predict" , 
					Color_$Predict ) ;
				Color_$Predict = rgb (   0 ,   0 ,   0 ) ;
				Plot_$Predict = "" ;

			end ;

		if  Plot_Close_OverUKC > 0 then
     		begin
			
				plot4 ( Plot_Close_OverUKC , "Close>UKC" , 
					Color_Close_OverUKC ) ;
				Color_Close_OverUKC = rgb (   0 ,   0 ,   0 ) ;
				Plot_Close_OverUKC = 0 ;

			end ;

		if  Plot_Close_OverLKC > 0 then
     		begin
			
				plot7 ( Close , "Close>LKC" , 
					Color_Close_OverLKC ) ;
				Color_Close_OverLKC = rgb (   0 ,   0 ,   0 ) ;
				Plot_Close_OverLKC = 0 ;

			end ;

		if  Plot_Close_UnderUKC > 0 then
     		begin
			
				plot12 ( Close , "Close<UKC" , Color_Close_UnderUKC ) ;
				Color_Close_UnderUKC = rgb (   0 ,   0 ,   0 ) ;
				Plot_Close_UnderUKC = 0 ;

			end ;

		if  Plot_Close_UnderLKC > 0 then
     		begin
			
				plot15 ( Close , "Close<LKC" , Color_Close_UnderLKC ) ;
				Color_Close_UnderLKC = rgb (   0 ,   0 ,   0 ) ;
				Plot_Close_UnderLKC = 0 ;

			end ;

	end ;

{	______________________________________________________________
	|  	CP 0 Chart plots
	|_____________________________________________________________
}

if  Chart and currentbar > 5 and currentbar > 
		Graph_Delay * maxlist ( MA_Fast_Length , MA_Slow_Length , 
		TR_or_PR_Length , Mid_Channel_Length ) then
begin

{	______________________________________________________________
	|  	CP 1 Plots the indicators on charts
	|_____________________________________________________________
}

	if  Display_KeltnerChannels and Lower_Channel > 0 then
		plot60 [ Displace_LKC ] ( Lower_Channel , 
			"LowerChannel" , Chart_Color_LKC ) ;

	if  Display_KeltnerChannels and Mid_Channel > 0 then
		plot61 [ Displace_MKC ] ( Mid_Channel , 
			"Mid_Channel" , Chart_Color_MKC ) ;

	if  Display_KeltnerChannels and Upper_Channel > 0 then
		plot62 [ Displace_UKC ] ( Upper_Channel , 
			"UpperChannel" , Chart_Color_UKC ) ;

	if  Display_MA_Fast and MA_Fast > 0 then
		plot70 [ Displace_MAF ] ( MA_Fast , 
			"MA Fast" , Chart_Color_MA_Fast ) ;

	if  Display_MA_Slow and MA_Slow > 0 then
		plot71 [ Displace_MAS ] ( MA_Slow , 
			"MA Slow" , Chart_Color_MA_Slow ) ;

{	______________________________________________________________
	|  	CP 1 Plots the alerts on charts
	|_____________________________________________________________
}

	if  Display_Signals and Plot_Close_OverUKC > 0 then
		begin
			
			plot80 ( Plot_Close_OverUKC , "KC_Alert" , 
				Color_Close_OverUKC ) ;
			Plot_Close_OverUKC = 0 ; 
			Color_Close_OverUKC = rgb (   0 ,   0 ,   0 ) ;

		end 

	else
	if  Display_Signals and Plot_Close_UnderUKC > 0 then
		begin
			
			plot80 ( Plot_Close_UnderUKC , "KC_Alert" , 
				Color_Close_UnderUKC ) ;
			Plot_Close_UnderUKC = 0 ; 
			Color_Close_UnderUKC = rgb (   0 ,   0 ,   0 ) ;
	
		end

	else
	if  Display_Signals and Plot_Close_UnderLKC > 0 then
		begin
			
			plot80 ( Plot_Close_UnderLKC , "KC_Alert" , 
				Color_Close_UnderLKC ) ;
			Plot_Close_UnderLKC = 0 ; 
			Color_Close_UnderLKC = rgb (   0 ,   0 ,   0 ) ;
	
		end

	else
	if  Display_Signals and Plot_Close_OverLKC > 0 then
		begin
			
			plot80 ( Plot_Close_OverLKC , "KC_Alert" , 
				Color_Close_OverLKC ) ;
			Plot_Close_OverLKC = 0 ; 
			Color_Close_OverLKC = rgb (   0 ,   0 ,   0 ) ;

	end ;

end ;

{
******************************************************************
*	C 0. Commentary window display
******************************************************************
}

if  currentbar = 1 and CommentaryTable then
	begin
	
		Array_SetMaxIndex ( HTML_str , 1 ) ;
		Symbol_Name = getsymbolname ;

	end ;

#BeginCmtry ;
if AtCommentaryBar and CommentaryTable then
begin

	if  date <> date [ 1 ] then
		begin

			tYear  = numtostr ( year       ( date ) + 1900 , 0 ) ;
			tMonth = numtostr ( month      ( date ) , 0 ) ;
			tDay   = numtostr ( dayofmonth ( date ) , 0 ) ;
			 
			if  strlen ( tMonth ) = 1 then
			 	tMonth = "0" + tMonth ;
			 
			if  strlen ( tDay ) = 1 then
			 	tDay = "0" + tDay ;
			 
			if  dFormat = "YYYYMMDD" then
			 	KCA_Date =  tYear + SepChar + tMonth + 
					SepChar + tDay
		
			else
			if  dFormat = "MMDDYYYY" then
				KCA_Date =  tMonth + SepChar + tDay + 
					SepChar + tYear
		
			else
			if  dFormat = "DDMMYYYY" then
			 	KCA_Date =  tDay + SepChar + tMonth + 
					SepChar + tYear
		
			else
			if  dFormat = "YYMMDD" then
			 	KCA_Date = rightstr ( tYear, 2 ) + 
					SepChar + tMonth + SepChar + tDay 
			else
			if  dFormat = "MMDDYY" then
			 	KCA_Date = tMonth + SepChar + tDay + 
					SepChar + rightstr ( tYear , 2 )
		
			else
			if  dFormat = "DDMMYY" then
			 	KCA_Date = tDay + SepChar + tMonth + 
					SepChar + rightstr ( tYear , 2 )
		
			else
			 	raiseruntimeerror 
					( "Input to dFormat is incorrect" ) ;		
		
			KCA_Day = formatdate ( "ddd" , 
				eldatetodatetime ( date )) ;

		end ;

	if  time <> time [ 1 ] or date <> date [ 1 ] then
		KCA_Time = formattime ( "hh:mm" ,
			eltimetodatetime ( time ) ) ;

	if  bartype = 0 then
		s = "Tick Interval"
	else 
	if  bartype = 1 then
		s = "Intraday Interval"
	else 
	if  bartype = 2 then
		s = "Day Interval"
	else 
	if  bartype = 3 then
		s = "Week Interval"
	else 
	if  bartype = 4 then
		s = "Month Interval"
	else 
	if  bartype = 5 then
		s = "Point and Figure"
	else 
	if  bartype > 5 or bartype < 0 then
		s = "Unknown Interval" ;

	if  Chart then
		s = s + " - Chart"
	else 
	if  RadarScreen then
		s = s + " - RadarScreen" ;

		s = "<font color='black'> <b> " +
			Symbol_Name + " - " + KCA_Time + ", " +
				KCA_Day + ", " + KCA_Date + " - " +
				s + "</b></font>" ;

	commentary ( "<font size='+2'>" + s + "</font>" ) ;

	if  HTML_str [ 1 ] = "" then begin
		Array_SetMaxIndex ( HTML_str , 6 ) ;

		HTML_str [ 1 ] = { TblBorderColor } "#6699CC"  ;
		HTML_str [ 2 ] = { THBGColor } "#BEC8D1"  ; 
		HTML_str [ 3 ] = { TblStyle }
				"style='{ text-align: left;" +
				"font-family: Verdana; " + 
				"font-weight: bold; " +
				"font-size: 11px;" + 
				"color: #404040; " +
				"background-color: #fafafa;" +
				"border: 1px " + 
				HTML_str[ 1 ] + " ; " +
				"border-collapse: collapse; " +
				"border-spacing: 0px; }'"  ;

		HTML_str [ 4 ] = { THStyle }
			"style= '{ text-align: center; " +
			"border-bottom: 2px " + HTML_str[ 1 ]+"; " +
			"border-left: 2px "+HTML_str[ 1 ]+"; " +
			"background-color: "+HTML_str[ 2 ]+"; " + " }'" ;
		HTML_str [ 5 ] = { Cell1Style }
			"style= '{ color= #0000ff; }'" ;
		HTML_str [ 6 ] = { Cell2Style }
			"style= '{	text-align: right; }'" ;
	end ;

	commentary ( "<TABLE cellpadding=2 border=1 " + 
		HTML_str [ 3 ] + ">" ) ;

	commentary ( "<TR>" +
		"<TH " + HTML_str [ 4 ] + ">Data</>" +
		"<TH " + HTML_str [ 4 ] + ">Value</>" + "</TR>" ) ;

	commentary ( "<TR>" +
		"<TD " + HTML_str [ 5 ] + ">Upper Channel" + "</>" +
		"<TD " + HTML_str [ 6 ] + ">$" + 
			 NumToStr ( Upper_Channel , 2 ) + "</></TR>" ) ;

	commentary ( "<TR>" +
		"<TD " + HTML_str [ 5 ] + ">Mid Channel" + "</>" +
		 "<TD " + HTML_str [ 6 ] + ">$" + 
			 NumToStr ( Mid_Channel , 2 ) + "</></TR>" ) ;

	commentary ( "<TR>" +
		"<TD " + HTML_str [ 5 ] + ">Lower Channel" + "</>" +
		"<TD " + HTML_str [ 6 ] + ">$" + 
			 NumToStr ( Lower_Channel , 2 ) + "</></TR>" ) ;

	commentary ( "<TR>" +
		"<TD " + HTML_str [ 5 ] + ">Upper Width" + "</>" +
		"<TD " + HTML_str [ 6 ] + ">$" + 
			 NumToStr ( Upper_Width , 2 ) + "</></TR>" ) ;

	commentary ( "<TR>" +
		"<TD " + HTML_str [ 5 ] + ">Lower Width" + "</>" +
		"<TD " + HTML_str [ 6 ] + ">$" + 
		 	NumToStr ( Lower_Width , 2 ) + "</></TR>" ) ;

	commentary ( "<TR>" +
		"<TD " + HTML_str [ 5 ] + ">Price" + "</>" +
		"<TD " + HTML_str [ 6 ] + ">$" + 
		 	NumToStr ( Price , 2 ) + "</></TR>" ) ;

Visit my NexusFi Trade Journal Started this thread Reply With Quote

Can you help answer these questions
from other members on NexusFi?
How to apply profiles
Traders Hideout
ZombieSqueeze
Platforms and Indicators
NT7 Indicator Script Troubleshooting - Camarilla Pivots
NinjaTrader
Better Renko Gaps
The Elite Circle
Exit Strategy
NinjaTrader
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Just another trading journal: PA, Wyckoff & Trends
34 thanks
Tao te Trade: way of the WLD
24 thanks
My NQ Trading Journal
14 thanks
Vinny E-Mini & Algobox Review TRADE ROOM
13 thanks
GFIs1 1 DAX trade per day journal
11 thanks
  #3 (permalink)
 
bluemele's Avatar
 bluemele 
Honolulu, Hawaii
 
Experience: Intermediate
Platform: NinjaTrader
Broker: ATC/TT, AMP/Zen-Fire, AMP/CQG
Trading: TF
Posts: 2,543 since Jun 2010
Thanks Given: 3,803
Thanks Received: 2,842


 
Code
	if 	True_or_Price_Range = 1 then
		commentary ( "<TR>" +
			"<TD " + HTML_str [ 5 ] + 
				">Average True Range" + "</>" +
			"<TD " + HTML_str [ 6 ] + ">$" + 
				 NumToStr ( Average_True_Range , 2 ) + 
				 "</></TR>" )

	else
	if 	True_or_Price_Range = 2 then
		commentary ( "<TR>" +
			"<TD " + HTML_str [ 5 ] + 
				">Average Price Range" + "</>" +
			"<TD " + HTML_str [ 6 ] + ">$" + 
				 NumToStr ( Average_Price_Range , 2 ) + 
				 "</></TR>" ) ;

	if  DirectionPredict = "Bullish" then
		commentary ( "<TR>" +
		 "<TD><font color='green'> <b>" + "Direction Predict" +
		 	"</>"  +
		 "<TD><font color='green'> <b>" + DirectionPredict + 
		 	"</b></font></></TR>" ) 

	else
	if  DirectionPredict = "Bearish" then
		commentary ( "<TR>" +
		 "<TD><font color='red'> <b>" + "Direction Predict" + 
		 	"</>"  +
		 "<TD><font color='red'> <b>" + DirectionPredict + 
		 	"</b></font></></TR>" ) 
	
	else
	if  DirectionPredict = "Caution" then
		commentary ( "<TR>" +
		 "<TD><font color='orange'> <b>" + "Direction Predict" +
		 	"</>"  +
		 "<TD><font color='orange'> <b>" + DirectionPredict + 
		 	"</b></font></></TR>" ) 

	else
	if  DirectionPredict = "Neutral" then
		commentary ( "<TR>" +
		 "<TD><font color='gray'> <b>" + "Direction Predict" + 
		 	"</>"  +
		 "<TD><font color='gray'> <b>" + DirectionPredict + 
		 	"</b></font></></TR>" ) ;

	commentary ( "</TABLE>" ) ;
	commentary ( BuildKCAll ) ;

end ;

#end ;

if  RadarScreen then
	value99 = ticks ;

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #4 (permalink)
 vegasfoster 
las vegas
 
Experience: Intermediate
Platform: Sierra Chart
Broker: Velocity/IB
Trading: 6E
Posts: 1,145 since Feb 2010
Thanks Given: 304
Thanks Received: 844

what does it do?

Reply With Quote
  #5 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102


vegasfoster View Post
what does it do?


We cannot try to decipher hundred lines of code. If you show us a chart, we might be able to put this up in a few minutes. The code actually looks like two keltner channels.

A keltner channel is very simple:

- a moving average (which Type, SMA, EMA, exotic, which period?)

- some bands (based on simple range or average true range, bandperiod?)

- smoothing (do you want some smoothing added to the bands)

- alerts (any alerts required?)

So we would need a chart and a small description, how you use it.

Reply With Quote
  #6 (permalink)
 
trendisyourfriend's Avatar
 trendisyourfriend 
Quebec Canada
Market Wizard
 
Experience: Intermediate
Platform: NinjaTrader
Broker: AMP/CQG
Trading: ES, NQ, YM
Frequency: Daily
Duration: Minutes
Posts: 4,527 since Oct 2009
Thanks Given: 4,175
Thanks Received: 6,020


Fat Tails View Post
We cannot try to decipher hundred lines of code. If you show us a chart, we might be able to put this up in a few minutes. The code actually looks like two keltner channels.

A keltner channel is very simple:

- a moving average (which Type, SMA, EMA, exotic, which period?)

- some bands (based on simple range or average true range, bandperiod?)

- smoothing (do you want some smoothing added to the bands)

- alerts (any alerts required?)

So we would need a chart and a small description, how you use it.

YouTube - Keltner Channel

Reply With Quote
  #7 (permalink)
 
bluemele's Avatar
 bluemele 
Honolulu, Hawaii
 
Experience: Intermediate
Platform: NinjaTrader
Broker: ATC/TT, AMP/Zen-Fire, AMP/CQG
Trading: TF
Posts: 2,543 since Jun 2010
Thanks Given: 3,803
Thanks Received: 2,842


Fat Tails View Post
We cannot try to decipher hundred lines of code. If you show us a chart, we might be able to put this up in a few minutes. The code actually looks like two keltner channels.

A keltner channel is very simple:

- a moving average (which Type, SMA, EMA, exotic, which period?)

- some bands (based on simple range or average true range, bandperiod?)

- smoothing (do you want some smoothing added to the bands)

- alerts (any alerts required?)

So we would need a chart and a small description, how you use it.

It is utilized like Bollinger Bands, but the calculation is a bit different.

Here are some photos of it in my trading:

https://nexusfi.com/attachments/23528d1287515418

https://nexusfi.com/attachments/23617d1287594507

Basically on the smaller timeframes you use it for when it exceeds the Keltner Channel you then expect it to retrace. Like I used it on the 144 mainly and if it exceeds the Keltner or just touches it then it is a good chance it will float back towards the center or opposite side of the band. It really is just a visual ATR indicator.

It is used in conjunction with many indicators and for some reason the one that is default with NinjaTrader is VERY much different than the one I used in TradeStation which was custom built.

The code doesn't seem overwhelming, but I know very little to nothing about C#, so I figured this would be an easy feat for good coders. If it were MQL, I would have little issues, but I need help on this one, otherwise I will end up spending a month for this guy.

Thanks in advance for any assistance and for even looking at it.

PS- I don't need anything but the center band and the 2 outside bands. The alerts, MA's etc.. Don't need em'

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #8 (permalink)
 
bluemele's Avatar
 bluemele 
Honolulu, Hawaii
 
Experience: Intermediate
Platform: NinjaTrader
Broker: ATC/TT, AMP/Zen-Fire, AMP/CQG
Trading: TF
Posts: 2,543 since Jun 2010
Thanks Given: 3,803
Thanks Received: 2,842

Ok, so here is a perfect example of how they are different. I don't know if my settings are correct, but for TS they are the default and for NT they are 2,52

I hope this explains on the differences between the default keltner in Ninja and this one.

Attached Thumbnails
Click image for larger version

Name:	1.jpg
Views:	279
Size:	269.6 KB
ID:	25415  
Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #9 (permalink)
 
bluemele's Avatar
 bluemele 
Honolulu, Hawaii
 
Experience: Intermediate
Platform: NinjaTrader
Broker: ATC/TT, AMP/Zen-Fire, AMP/CQG
Trading: TF
Posts: 2,543 since Jun 2010
Thanks Given: 3,803
Thanks Received: 2,842

I am also trying to get tickcounter2 to work like the view from my TradeStation account.

However, when I select 'Float_with_Price', it actually puts it next to price on the right. I want it to be next to the bar like in Tradestation.

How would I change this code to be off the current tick price in the bar?

 
Code
case DisplayLocation.Float_with_price:
						x = bounds.X + bounds.Width - ChartControl.BarMarginRight + 5;
						y = (int)(((bounds.Y + bounds.Height) - ((Close[0] - min) / ChartControl.MaxMinusMin(max, min)) * bounds.Height) - textHeight*0.4);
						if(ChartControl.BarMarginRight < textWidth-12)
						graphics.DrawString("Increase chart Properties - Right side margin", TextFont, textBrush, bounds.X + bounds.Width - noTickTextWidth, bounds.Y + bounds.Height - noTickTextHeight, stringFormat);
						break;

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #10 (permalink)
 
bluemele's Avatar
 bluemele 
Honolulu, Hawaii
 
Experience: Intermediate
Platform: NinjaTrader
Broker: ATC/TT, AMP/Zen-Fire, AMP/CQG
Trading: TF
Posts: 2,543 since Jun 2010
Thanks Given: 3,803
Thanks Received: 2,842


Here is the code for the Tradestation ticker which is quite nice and it glows red when the bar is about to close.

 
Code
// ================================================== 
// PZT TICK COUNTDOWN Indicator (Version 2.0)  
// ================================================== 
 
inputs:  
   tickThreshold(20),		 
   normalColor(yellow),
   thresholdColor(red),
   horizOffset(0);

variables:
   setPosition( 0 ),
   tickReg( 0 ),
   txtStr( "" ),
   txtID( -1 ),
   horizontalLocation(-2),
   txtPos( 0 );

if BarType = 0 then begin 
   setPosition = Close;
   if BarNumber = 1 then begin 
      txtID = text_new(date,time,close,"Start"); 
      if horizontalLocation = 0 then text_SetStyle(txtID,1,2) 
      else text_SetStyle(txtID,1,2); 
      text_SetColor(txtID,normalColor); 
   end; 
   if time <> time[1] or tickReg <= 0 then begin  
      tickReg = BarInterval; 
      if horizontalLocation <= 0 then begin 
	   text_SetStyle(txtID,0,1); 
	   Text_SetLocation( TxtID,Date,Calctime( Time, -horizontalLocation),setPosition ) ; 
      end  
      else begin 
	   text_SetStyle(txtID,1,2); 
	   txtPos = setPosition; 
	   text_SetLocation(txtID,date[horizontalLocation],time[horizontalLocation],setPosition); 
      end; 
   end; 
   tickReg = tickReg - ticks; 
   TxtStr = "< "+NumToStr(tickReg,0); 
   if tickReg >= 10 then begin
   	horizontalLocation = -3-horizOffset;
   end;
   if tickReg >= 100 then begin
   	horizontalLocation = -4-horizOffset;
   end;

   text_SetString(txtID,TxtStr); 
   if horizontalLocation <= 0 then begin 
      if close < open then begin 
	   text_SetStyle(txtID,1,2);			 
	   Text_SetLocation( TxtID,Date,Calctime( Time, -horizontalLocation),setPosition); 
      end  
      else begin 
	   text_SetStyle(txtID,1,2);			 
	   Text_SetLocation( TxtID,Date,Calctime( Time, -horizontalLocation),setPosition); 
      end; 
   end; 
   if tickReg > tickThreshold then text_SetColor(txtID,normalColor) 
   else text_SetColor(txtID,thresholdColor); 
end;

Visit my NexusFi Trade Journal Started this thread Reply With Quote




Last Updated on November 8, 2010


© 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