Dark Theme
Light Theme
Trading Articles
Article Categories
Article Tools
Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to
register in order to view the content of the threads and start contributing to our community.
It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
Need help fixing this error
Updated January 16, 2023
trending_up
725 views
thumb_up
1 thanks given
group
3 followers
forum
5 posts
attach_file
0 attachments
Need help fixing this error
January 15th, 2023, 10:13 PM
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]);
}
}
}
}
Can you help answer these questions from other members on NexusFi?
Best Threads (Most Thanked) in the last 7 days on NexusFi
January 16th, 2023, 04:01 AM
Posts: 3,765 since Jun 2009
Thanks Given: 3,825
Thanks Received: 4,629
@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)
January 16th, 2023, 11:05 AM
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
January 16th, 2023, 11:24 AM
Bologna Italy
Experience: Advanced
Platform: nt8
Broker: NinjaTrader
Trading: futures
Posts: 42 since Jun 2022
Thanks Given: 11
Thanks Received: 38
duckensm
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]);
}
}
}
}
January 16th, 2023, 02:55 PM
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
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]);
}
}
}
}
January 16th, 2023, 03:38 PM
Bologna Italy
Experience: Advanced
Platform: nt8
Broker: NinjaTrader
Trading: futures
Posts: 42 since Jun 2022
Thanks Given: 11
Thanks Received: 38
duckensm
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
}
}
Last Updated on January 16, 2023