Announcement
Collapse
No announcement yet.
Partner 728x90
Collapse
NinjaTrader
How to gather last 4 values of Swing indicator
Collapse
X
-
I need the value and number of bars ago of the last 5 highs and lows of the swing indicator. I've tried to compile the code mentionned as fixed by PaulMohn in a strategy but without success (it seems it's for NT7), i've then adapted it to NT8 but still I'm unable to compile it. Can anyone help me ?
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
//This namespace holds Strategies in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Strategies
{
public class swing : Strategy
{
private Swing Swing1;
private int streng;
private int last1HighBar;
private int last1LowBar;
private int last2HighBar;
private int last2LowBar;
private int last3HighBar;
private int last3LowBar;
private int last4HighBar;
private int last4LowBar;
private int last5HighBar;
private int last5LowBar;
private double th5swingHighPrice;
private double th5swingLowPrice ;
private double th4swingHighPrice;
private double th4swingLowPrice ;
private double rd3swingHighPrice ;
private double rd3swingLowPrice;
private double nd2swingHighPrice ;
private double nd2swingLowPrice ;
private double st1swingHighPrice;
private double st1swingLowPrice ;
private double th5swingPrice ;
private double th4swingPrice;
private double rd3swingPrice;
private double nd2swingPrice;
private double st1swingPrice ;
private double NaN;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Enter the description for your new custom Strategy here.";
Name = "swing";
Calculate = Calculate.OnBarClose;
EntriesPerDirection = 1;
EntryHandling = EntryHandling.AllEntries;
IsExitOnSessionCloseStrategy = true;
ExitOnSessionCloseSeconds = 30;
IsFillLimitOnTouch = false;
MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
OrderFillResolution = OrderFillResolution.Standard;
Slippage = 0;
StartBehavior = StartBehavior.WaitUntilFlat;
TimeInForce = TimeInForce.Gtc;
TraceOrders = false;
RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
StopTargetHandling = StopTargetHandling.PerEntryExecution;
BarsRequiredToTrade = 20;
// Disable this property for performance gains in Strategy Analyzer optimizations
// See the Help Guide for additional information
IsInstantiatedOnEachOptimizationIteration = true;
streng = 5;
}
else if (State == State.Configure)
{
}
else if (State == State.DataLoaded)
{
Swing1 = Swing(Close, 5);
last1HighBar = Swing(streng).SwingHighBar(1,1,200);
last1LowBar = Swing(streng).SwingLowBar(1,1,200);
last2HighBar = Swing(streng).SwingHighBar(1,2,200);
last2LowBar = Swing(streng).SwingLowBar(1,2,200);
last3HighBar = Swing(streng).SwingHighBar(1,3,200);
last3LowBar = Swing(streng).SwingLowBar(1,3,200);
last4HighBar = Swing(streng).SwingHighBar(1,4,200);
last4LowBar = Swing(streng).SwingLowBar(1,4,200);
last5HighBar = Swing(streng).SwingHighBar(1,5,200);
last5LowBar = Swing(streng).SwingLowBar(1,5,200);
NAN = 1;
}
protected override void OnBarUpdate()
{
if (BarsInProgress != 0)
return;
if (CurrentBars[0] < 3)
return;
th5swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,5,200) )];
th5swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,5,200) )];
th4swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,4,200) )];
th4swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,4,200) )];
rd3swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,3,200) )];
rd3swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,3,200) )];
nd2swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,2,200) )];
nd2swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,2,200) )];
st1swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,1,200) )];
st1swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,1,200) )];
th5swingPrice = ( last3HighBar() < last3LowBar() ) ? rd3swingHighPrice :
( last3LowBar() < last3HighBar() ) ? rd3swingLowPrice : NaN;
th4swingPrice = ( last2HighBar() > last2LowBar() ) ? nd2swingHighPrice :
( last2LowBar() > last2HighBar() ) ? nd2swingLowPrice : NaN;
rd3swingPrice = ( last2HighBar() < last2LowBar() ) ? nd2swingHighPrice :
( last2LowBar() < last2HighBar() ) ? nd2swingLowPrice : NaN;
nd2swingPrice = ( lastHighBar() > lastLowBar() ) ? st1swingHighPrice :
( lastLowBar() > lastHighBar() ) ? st1swingLowPrice : NaN;
st1swingPrice = ( last1HighBar() < last1LowBar() ) ? st1swingHighPrice :
( last1LowBar() < last1HighBar() ) ? st1swingLowPrice : NaN;
Print("Swing(strength).SwingLowBar(1,5,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,5 ,200)) );
Print("Swing(strength).SwingHighBar(1,5,200): "+Convert.ToString(Swing1(strength).SwingHighB ar(1 ,5,200)) );
Print("Swing(strength).SwingLowBar(1,4,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,4 ,200)) );
Print("Swing(strength).SwingHighBar(1,4,200): "+Convert.ToString(Swing1(strength).SwingHighB ar(1 ,4,200) ));
Print("Swing(strength).SwingLowBar(1,3,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,3 ,200) ));
Print("Swing(strength).SwingHighBar(1,3,200): "+Convert.ToString(Swing(strength).SwingHighBa r(1, 3,200) ));
Print("Swing(strength).SwingLowBar(1,2,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,2 ,200) ));
Print("Swing(strength).SwingHighBar(1,2,200): "+Convert.ToString(Swing1(strength).SwingHighB ar(1 ,2,200) ));
Print("Swing(strength).SwingLowBar(1,1,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,1 ,200) ));
Print("Swing(strength).SwingHighBar(1,1,200): "+Convert.ToString(Swing(strength).SwingHighBa r(1, 1,200) ));
Print("th5swingPrice: " +Convert.ToString(th5swingPrice ));
Print("th4swingPrice: " +Convert.ToString(th4swingPrice ));
Print("rd3swingPrice: " +Convert.ToString(rd3swingPrice ));
Print("nd2swingPrice: " +Convert.ToString(nd2swingPrice ));
Print("st1swingPrice: " +Convert.ToString(st1swingPrice ));
Print("th5swingPrice: " +Convert.ToString(th5swingPrice ));
Print("th4swingPrice: " +Convert.ToString(th4swingPrice ));
Print("rd3swingPrice: " +Convert.ToString(rd3swingPrice ));
Print("nd2swingPrice: " +Convert.ToString(nd2swingPrice ));
Print("st1swingPrice: " +Convert.ToString(st1swingPrice ));
}
}
}
Comment
-
Hello bluesoul40,
If you are getting an error we would need to know what error to assist with that. I would suggest just making a new script and use the sample from the help guide as a starting point since we know that compiles. After doing that you can replicate that as many times as you need.
Comment
-
i've updated the strategy as some variables were not declared:
namespace NinjaTrader.NinjaScript.Strategies
{
public class swing : Strategy
{
private Swing Swing1;
private int streng;
private int last1HighBar;
private int last1LowBar;
private int last2HighBar;
private int last2LowBar;
private int last3HighBar;
private int last3LowBar;
private int last4HighBar;
private int last4LowBar;
private int last5HighBar;
private int last5LowBar;
private double th5swingHighPrice;
private double th5swingLowPrice ;
private double th4swingHighPrice;
private double th4swingLowPrice ;
private double rd3swingHighPrice ;
private double rd3swingLowPrice;
private double nd2swingHighPrice ;
private double nd2swingLowPrice ;
private double st1swingHighPrice;
private double st1swingLowPrice ;
private double th5swingPrice ;
private double th4swingPrice;
private double rd3swingPrice;
private double nd2swingPrice;
private double st1swingPrice ;
private double NaN;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Enter the description for your new custom Strategy here.";
Name = "swing";
Calculate = Calculate.OnBarClose;
EntriesPerDirection = 1;
EntryHandling = EntryHandling.AllEntries;
IsExitOnSessionCloseStrategy = true;
ExitOnSessionCloseSeconds = 30;
IsFillLimitOnTouch = false;
MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
OrderFillResolution = OrderFillResolution.Standard;
Slippage = 0;
StartBehavior = StartBehavior.WaitUntilFlat;
TimeInForce = TimeInForce.Gtc;
TraceOrders = false;
RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
StopTargetHandling = StopTargetHandling.PerEntryExecution;
BarsRequiredToTrade = 20;
// Disable this property for performance gains in Strategy Analyzer optimizations
// See the Help Guide for additional information
IsInstantiatedOnEachOptimizationIteration = true;
streng = 5;
NAN = 1;
th5swingHighPrice = 1;
th5swingLowPrice = 1;
th4swingHighPrice = 1;
th4swingLowPrice = 1;
rd3swingHighPrice = 1;
rd3swingLowPrice = 1;
nd2swingHighPrice = 1;
nd2swingLowPrice = 1;
st1swingHighPrice = 1;
st1swingLowPrice = 1;
th5swingPrice = 1;
th4swingPrice = 1;
rd3swingPrice = 1;
nd2swingPrice = 1;
}
else if (State == State.Configure)
{
}
else if (State == State.DataLoaded)
{
Swing1 = Swing(Close, 5);
last1HighBar = Swing1(streng).SwingHighBar(1,1,200);
last1LowBar = Swing1(streng).SwingLowBar(1,1,200);
last2HighBar = Swing1(streng).SwingHighBar(1,2,200);
last2LowBar = Swing1(streng).SwingLowBar(1,2,200);
last3HighBar = Swing1(streng).SwingHighBar(1,3,200);
last3LowBar = Swing1(streng).SwingLowBar(1,3,200);
last4HighBar = Swing1(streng).SwingHighBar(1,4,200);
last4LowBar = Swing1(streng).SwingLowBar(1,4,200);
last5HighBar = Swing1(streng).SwingHighBar(1,5,200);
last5LowBar = Swing1(streng).SwingLowBar(1,5,200);
}
protected override void OnBarUpdate()
{
if (BarsInProgress != 0)
return;
if (CurrentBars[0] < 3)
return;
th5swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,5,200) )];
th5swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,5,200) )];
th4swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,4,200) )];
th4swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,4,200) )];
rd3swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,3,200) )];
rd3swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,3,200) )];
nd2swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,2,200) )];
nd2swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,2,200) )];
st1swingHighPrice = High[Math.Max(0, Swing(strength).SwingHighBar(1,1,200) )];
st1swingLowPrice = Low[Math.Max(0, Swing(strength).SwingLowBar(1,1,200) )];
th5swingPrice = ( last3HighBar() < last3LowBar() ) ? rd3swingHighPrice :
( last3LowBar() < last3HighBar() ) ? rd3swingLowPrice : NaN;
th4swingPrice = ( last2HighBar() > last2LowBar() ) ? nd2swingHighPrice :
( last2LowBar() > last2HighBar() ) ? nd2swingLowPrice : NaN;
rd3swingPrice = ( last2HighBar() < last2LowBar() ) ? nd2swingHighPrice :
( last2LowBar() < last2HighBar() ) ? nd2swingLowPrice : NaN;
nd2swingPrice = ( lastHighBar() > lastLowBar() ) ? st1swingHighPrice :
( lastLowBar() > lastHighBar() ) ? st1swingLowPrice : NaN;
st1swingPrice = ( last1HighBar() < last1LowBar() ) ? st1swingHighPrice :
( last1LowBar() < last1HighBar() ) ? st1swingLowPrice : NaN;
Print("Swing(strength).SwingLowBar(1,5,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,5 ,200)) );
Print("Swing(strength).SwingHighBar(1,5,200): "+Convert.ToString(Swing1(strength).SwingHighB ar(1 ,5,200)) );
Print("Swing(strength).SwingLowBar(1,4,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,4 ,200)) );
Print("Swing(strength).SwingHighBar(1,4,200): "+Convert.ToString(Swing1(strength).SwingHighB ar(1 ,4,200) ));
Print("Swing(strength).SwingLowBar(1,3,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,3 ,200) ));
Print("Swing(strength).SwingHighBar(1,3,200): "+Convert.ToString(Swing(strength).SwingHighBa r(1, 3,200) ));
Print("Swing(strength).SwingLowBar(1,2,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,2 ,200) ));
Print("Swing(strength).SwingHighBar(1,2,200): "+Convert.ToString(Swing1(strength).SwingHighB ar(1 ,2,200) ));
Print("Swing(strength).SwingLowBar(1,1,200): " +Convert.ToString(Swing1(strength).SwingLowBar(1,1 ,200) ));
Print("Swing(strength).SwingHighBar(1,1,200): "+Convert.ToString(Swing(strength).SwingHighBa r(1, 1,200) ));
Print("th5swingPrice: " +Convert.ToString(th5swingPrice ));
Print("th4swingPrice: " +Convert.ToString(th4swingPrice ));
Print("rd3swingPrice: " +Convert.ToString(rd3swingPrice ));
Print("nd2swingPrice: " +Convert.ToString(nd2swingPrice ));
Print("st1swingPrice: " +Convert.ToString(st1swingPrice ));
Print("th5swingPrice: " +Convert.ToString(th5swingPrice ));
Print("th4swingPrice: " +Convert.ToString(th4swingPrice ));
Print("rd3swingPrice: " +Convert.ToString(rd3swingPrice ));
Print("nd2swingPrice: " +Convert.ToString(nd2swingPrice ));
Print("st1swingPrice: " +Convert.ToString(st1swingPrice ));
}
}
}
Comment
-
Hello bluesoul40,
The errors you have shown for unexpected character generally come from copying and pasting from other sources. I would still suggest the same thing here to make a new script and then use the help guide sample as a starting point. The file you are using now has some form of incorrect formatting or an incorrect character somewhere in the document.
Comment
-
Here is the information I was looking for from this post https://forum.ninjatrader.com/forum/...w-values/page2
It took me a while to get it
High[Math.Max(0, Swing(5).SwingHighBar(0, 1, 200))] // this is the high price of the most recent swing high
Swing(5).SwingHighBar(0, 1, 200) // this is the bar number of the most recent swing high
Low[Math.Max(0, Swing(5).SwingLowBar(0, 1, 200))] // this is the low price of the most recent swing lowLast edited by bluesoul40; 04-14-2025, 11:41 AM.
Comment
Latest Posts
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by NullPointStrategies, Today, 05:17 AM
|
0 responses
50 views
0 likes
|
Last Post
|
||
|
Started by argusthome, 03-08-2026, 10:06 AM
|
0 responses
126 views
0 likes
|
Last Post
by argusthome
03-08-2026, 10:06 AM
|
||
|
Started by NabilKhattabi, 03-06-2026, 11:18 AM
|
0 responses
69 views
0 likes
|
Last Post
|
||
|
Started by Deep42, 03-06-2026, 12:28 AM
|
0 responses
42 views
0 likes
|
Last Post
by Deep42
03-06-2026, 12:28 AM
|
||
|
Started by TheRealMorford, 03-05-2026, 06:15 PM
|
0 responses
46 views
0 likes
|
Last Post
|

Comment