NexusFi: Find Your Edge


Home Menu

 





Need help fixing this error


Discussion in NinjaTrader

Updated
    1. trending_up 3,077 views
    2. thumb_up 1 thanks given
    3. group 3 followers
    1. forum 5 posts
    2. attach_file 0 attachments




 
Search this Thread
  #1 (permalink)
 duckensm 
New York New york
 
Experience: Intermediate
Platform: NinjaTrader
Trading: Futures
Posts: 39 since Jul 2022
Thanks Given: 7
Thanks Received: 5

the error is " NinjaTrader.NinjaScript.Strayegies.MyEmaCrossgpt.Initialize():no suitable method found to override" the error is on line 39 on the code

#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion


namespace NinjaTrader.NinjaScript.Strategies
{
public class MyEmaCrossgpt : Strategy
{
private EMA ema9;
private EMA ema21;
private ATR atr;
private int atrPeriod = 14;
private double atrMultiplier = 2.0;
private double target1 = 2.0;
private double target2 = 4.0;
private double stop = 1.0;

protected override void Initialize()
{
ema9 = EMA(9);
ema21 = EMA(21);
atr = ATR(atrPeriod);
CalculateOnBarClose = true;
}

protected override void OnBarUpdate()
{
if (CurrentBar < Math.Max(atrPeriod, Math.Max(ema9.Period, ema21.Period)))
return;

if (CrossAbove(ema9, ema21, 1)
&& atr[0] > atrMultiplier * atr[1])
{
EnterLong(1, "Long");
SetProfitTarget(CalculationMode.Ticks, target1);
SetProfitTarget(CalculationMode.Ticks, target2);
SetStopLoss(CalculationMode.Ticks, stop, false);
SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
}
else if (CrossBelow(ema9, ema21, 1)
&& atr[0] > atrMultiplier * atr[1])
{
EnterShort(1, "Short");
SetProfitTarget(CalculationMode.Ticks, target1);
SetProfitTarget(CalculationMode.Ticks, target2);
SetStopLoss(CalculationMode.Ticks, stop, false);
SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
}
}
}
}


Started this thread Reply With Quote

Can you help answer these questions
from other members on NexusFi?
Weekend Update: First Qatari LNG Transit Attempted -- IR …
Traders Hideout
March Jobs Report Update: 178K Beat vs 59K Expected, Wag …
Traders Hideout
Iran Ceasefire Surges to 19.5% on US 15-Point Plan -- 82 …
Prediction Markets & Event Contracts
Iran Airspace Collapses 18 Points to 15.5% While Hormuz …
Prediction Markets & Event Contracts
Eurex Eyes Prediction Markets -- Europes Biggest Derivat …
Prediction Markets & Event Contracts
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Sober Journey With S&P
21 thanks
2026 Jlab journal
10 thanks
Algo automated / semi-automated trading anyone?
6 thanks
Lady Vols Primer: Trading Volatility Journal
6 thanks
2026 Fire Horse
5 thanks
  #2 (permalink)
 
sam028's Avatar
 sam028 
Site Moderator
 
Posts: 3,756 since Jun 2009
Thanks Given: 3,825
Thanks Received: 4,632

@duckensm, it looks like you're using NinjaTrader 7 code in NinjaTrader 8.
To initialize your indicators it's more like this:

protected override void OnStateChange() {
if (State == State.SetDefaults) {
// stuff
Calculate = Calculate.OnBarClose;
}
else if (State == State.DataLoaded) {
ema9 = EMA(9);
ema21 = EMA(21);
atr = ATR(atrPeriod);
}
}


Success requires no deodorant! (Sun Tzu)
Follow me on X Reply With Quote
Thanked by:
  #3 (permalink)
 duckensm 
New York New york
 
Experience: Intermediate
Platform: NinjaTrader
Trading: Futures
Posts: 39 since Jul 2022
Thanks Given: 7
Thanks Received: 5


Thank you for your help, but now I error No Overload for Method SetStopLoss takes 3 arguments, the is on line 62 and 71


Started this thread Reply With Quote
  #4 (permalink)
 BERN Algos 
Bologna Italy
 
Experience: Advanced
Platform: nt8
Broker: NinjaTrader
Trading: futures
Posts: 58 since Jun 2022
Thanks Given: 12
Thanks Received: 54


duckensm View Post
Thank you for your help, but now I error No Overload for Method SetStopLoss takes 3 arguments, the is on line 62 and 71



 
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion


namespace NinjaTrader.NinjaScript.Strategies
{
public class MyEmaCrossgpt : Strategy
{
	private EMA ema9;
	private EMA ema21;
	private ATR atr;
	private int atrPeriod = 14;
	private double atrMultiplier = 2.0;
	private double target1 = 2.0;
	private double target2 = 4.0;
	private double stop = 1.0;

	protected override void OnStateChange()
	{
		if (State == State.DataLoaded)
		{	
			ema9 = EMA(9);
			ema21 = EMA(21);
			atr = ATR(atrPeriod);
			Calculate									= Calculate.OnBarClose;
		}
	}

		protected override void OnBarUpdate()
		{
			if (CurrentBar < Math.Max(atrPeriod, Math.Max(ema9.Period, ema21.Period)))
			return;

			if (CrossAbove(ema9, ema21, 1)
			&& atr[0] > atrMultiplier * atr[1])
			{
				EnterLong(1, "Long");
				SetProfitTarget(CalculationMode.Ticks, target1);
				SetProfitTarget(CalculationMode.Ticks, target2);
				SetStopLoss(CalculationMode.Ticks, stop);
				SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
			}
			else if (CrossBelow(ema9, ema21, 1)
			&& atr[0] > atrMultiplier * atr[1])
			{
				EnterShort(1, "Short");
				SetProfitTarget(CalculationMode.Ticks, target1);
				SetProfitTarget(CalculationMode.Ticks, target2);
				SetStopLoss(CalculationMode.Ticks, stop);
				SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
			}
		}
	}
}


Reply With Quote
  #5 (permalink)
 duckensm 
New York New york
 
Experience: Intermediate
Platform: NinjaTrader
Trading: Futures
Posts: 39 since Jul 2022
Thanks Given: 7
Thanks Received: 5

I was able to fix the code with chatgpt, but I don't know how to add variable so I can access setting for EMA, ATR, Targets and trailing Stop


BERN Algos View Post
 
Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion


namespace NinjaTrader.NinjaScript.Strategies
{
public class MyEmaCrossgpt : Strategy
{
	private EMA ema9;
	private EMA ema21;
	private ATR atr;
	private int atrPeriod = 14;
	private double atrMultiplier = 2.0;
	private double target1 = 2.0;
	private double target2 = 4.0;
	private double stop = 1.0;

	protected override void OnStateChange()
	{
		if (State == State.DataLoaded)
		{	
			ema9 = EMA(9);
			ema21 = EMA(21);
			atr = ATR(atrPeriod);
			Calculate									= Calculate.OnBarClose;
		}
	}

		protected override void OnBarUpdate()
		{
			if (CurrentBar < Math.Max(atrPeriod, Math.Max(ema9.Period, ema21.Period)))
			return;

			if (CrossAbove(ema9, ema21, 1)
			&& atr[0] > atrMultiplier * atr[1])
			{
				EnterLong(1, "Long");
				SetProfitTarget(CalculationMode.Ticks, target1);
				SetProfitTarget(CalculationMode.Ticks, target2);
				SetStopLoss(CalculationMode.Ticks, stop);
				SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
			}
			else if (CrossBelow(ema9, ema21, 1)
			&& atr[0] > atrMultiplier * atr[1])
			{
				EnterShort(1, "Short");
				SetProfitTarget(CalculationMode.Ticks, target1);
				SetProfitTarget(CalculationMode.Ticks, target2);
				SetStopLoss(CalculationMode.Ticks, stop);
				SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
			}
		}
	}
}


Started this thread Reply With Quote
  #6 (permalink)
 BERN Algos 
Bologna Italy
 
Experience: Advanced
Platform: nt8
Broker: NinjaTrader
Trading: futures
Posts: 58 since Jun 2022
Thanks Given: 12
Thanks Received: 54


duckensm View Post
I was able to fix the code with chatgpt, but I don't know how to add variable so I can access setting for EMA, ATR, Targets and trailing Stop

Now is your turn. There are tons of examples on line. You may also play with Strategy Builder and study generated code.

 
Code
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion


namespace NinjaTrader.NinjaScript.Strategies
{
	public class MyEmaCrossgpt : Strategy
	{
		private EMA ema9;
		private EMA ema21;
		private ATR atr;
		private int atrPeriod = 14;
		private double atrMultiplier = 2.0;
		private double target1 = 2.0;
		private double target2 = 4.0;
		private double stop = 1.0;

		protected override void OnStateChange()
		{
			if (State == State.SetDefaults)
			{
				Period1					= 9;
				Period2					= 21;
			}
			if (State == State.DataLoaded)
			{	
				ema9 = EMA(Period1);
				ema21 = EMA(Period2);
				atr = ATR(atrPeriod);
				Calculate	= Calculate.OnBarClose;
			}
		}

		protected override void OnBarUpdate()
		{
			if (CurrentBar < Math.Max(atrPeriod, Math.Max(ema9.Period, ema21.Period)))
			return;

			if (CrossAbove(ema9, ema21, 1)
			&& (atr[0] > atrMultiplier * atr[1]))
			{
				EnterLong(1, "Long");
				SetProfitTarget(CalculationMode.Ticks, target1);
				SetProfitTarget(CalculationMode.Ticks, target2);
				SetStopLoss(CalculationMode.Ticks, stop);
				SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
			}
			else if (CrossBelow(ema9, ema21, 1)
			&& (atr[0] > atrMultiplier * atr[1]))
			{
				EnterShort(1, "Short");
				SetProfitTarget(CalculationMode.Ticks, target1);
				SetProfitTarget(CalculationMode.Ticks, target2);
				SetStopLoss(CalculationMode.Ticks, stop);
				SetTrailStop(CalculationMode.Ticks, atrMultiplier * ATR(atrPeriod)[0]);
			}
		}
			
		#region Properties
		
		[NinjaScriptProperty]
		[Range(1, 50)]
		[Display(Name="Period1", Order=1, GroupName="Parameters")]
		public int Period1
		{ get; set; }
		
		[NinjaScriptProperty]
		[Range(1, 50)]
		[Display(Name="Period2", Order=2, GroupName="Parameters")]
		public int Period2
		{ get; set; }
			
		#endregion
		
		
	}
}


Reply With Quote




Last Updated on January 16, 2023


© 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