#region Using declarations
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Indicator;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Strategy;
#endregion
// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
/// <summary>
/// Enter the description of your strategy here
/// </summary>
[Description("Enter the description of your strategy here")]
public class FTRUniversal : Strategy
{
#region Variables
private UniversalMovingAverage matype = UniversalMovingAverage.SMA;
private int period = 14;
#endregion
/// <summary>
/// This method is used to configure the strategy and is called once before any strategy method is called.
/// </summary>
protected override void Initialize()
{
CalculateOnBarClose = true;
}
/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
switch (matype)
{
case _UniversalMovingAverageEnums.UniversalMovingAverage.HMA:
{
//set stop loss based on HMA value
SetStopLoss(HMA(20));
}
}
}
#region Properties
// Creates the user definable parameter for the moving average type.
[Description("Choose a Moving Average type.")]
[Category("Parameters")]
public UniversalMovingAverage MAType
{
get { return matype; }
set { matype = value; }
}
[Description("Numbers of bars used for calculations")]
[Category("Parameters")]
public int Period
{
get { return period; }
set { period = Math.Max(1, value); }
}
#endregion
}
}
namespace _UniversalMovingAverageEnums
{
public enum UniversalMovingAverage
{
EMA,
HMA,
SMA,
WMA
}
}
Announcement
Collapse
No announcement yet.
Partner 728x90
Collapse
NinjaTrader
Enum Declarations
Collapse
X
-
I've deleted the sample reference indicator which had the same name in the global namespace and added the changes but still have some compile errors.
Code:
-
Hello brucelevy,
Thanks for your reply.
Please use the HMA overload that includes the bars ago reference:
SetStopLoss(HMA(20)[0]);
Additionally, you need to call UniversalMovingAverage from the _UniversalMovingAverageEnums namespace where it resides like so:
public _UniversalMovingAverageEnums.UniversalMovingAverag e matype = _UniversalMovingAverageEnums.UniversalMovingAverag e.SMA;
the same in your case:
case _UniversalMovingAverageEnums.UniversalMovingAverag e.HMA:
{
SetStopLoss(HMA(20)[0]);
break;
}
You will need to include the break after all necessary actions are executed so that control can be transferred outside of the switch statement or to another case label.
Please let me know if I may be of any further assistance.Alan S.NinjaTrader Customer Service
Comment
Latest Posts
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by Geovanny Suaza, 02-11-2026, 06:32 PM
|
0 responses
578 views
0 likes
|
Last Post
|
||
|
Started by Geovanny Suaza, 02-11-2026, 05:51 PM
|
0 responses
334 views
1 like
|
Last Post
|
||
|
Started by Mindset, 02-09-2026, 11:44 AM
|
0 responses
101 views
0 likes
|
Last Post
by Mindset
02-09-2026, 11:44 AM
|
||
|
Started by Geovanny Suaza, 02-02-2026, 12:30 PM
|
0 responses
554 views
1 like
|
Last Post
|
||
|
Started by RFrosty, 01-28-2026, 06:49 PM
|
0 responses
551 views
1 like
|
Last Post
by RFrosty
01-28-2026, 06:49 PM
|

Comment