Professional Documents
Culture Documents
Hurst Code
Hurst Code
//
// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
/// <summary>
///
/// </summary>
[Description("The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'")]
public class HurstEnvelope : Indicator
{
#region Variables
private int period
= 10;
private double offsetMultiplier = 1.5;
private DataSeries diff;
#endregion
/// <summary>
/// This method is used to configure the indicator and is called once
before any bar data is loaded.
/// </summary>
protected override void Initialize()
{
Add(new Plot(Color.Transparent, "Midline"));
Add(new Plot(Color.Gray, "Upper"));
Add(new Plot(Color.Gray, "Lower"));
Overlay = true;
PriceTypeSupported = false;
}
/// <summary>
/// Called on each bar update event (incoming tick).
/// </summary>
protected override void OnBarUpdate()
{
if (CurrentBar < Period)
return;
diff.Set(High[0] - Low[0]);
Midline.Set(middle);
Upper.Set(upper);
Lower.Set(lower);
#region Properties
/// <summary>
/// </summary>
[Description("Numbers of bars used for calculations")]
[Category("Parameters")]
public int Period
{
get { return period; }
set { period = Math.Max(1, value); }
}
/// <summary>
/// </summary>
[Description("How much to expand the upper and lower band from the
normal offset")]
[Category("Parameters")]
[Gui.Design.DisplayNameAttribute("Offset multiplier")]
public double OffsetMultiplier
{
get { return offsetMultiplier; }
set { offsetMultiplier = Math.Max(0.01, value); }
}
/// <summary>
/// </summary>
[Browsable(false)]
[XmlIgnore()]
public DataSeries Midline
{
get { return Values[0]; }
}
/// <summary>
/// </summary>
[Browsable(false)]
[XmlIgnore()]
public DataSeries Upper
{
get { return Values[1]; }
}
/// <summary>
/// </summary>
[Browsable(false)]
[XmlIgnore()]
public DataSeries Lower
{
get { return Values[2]; }
}
#endregion
}
}
/// <summary>
/// The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'
/// </summary>
/// <returns></returns>
public HurstEnvelope HurstEnvelope(double offsetMultiplier, int period)
{
return HurstEnvelope(Input, offsetMultiplier, period);
}
/// <summary>
/// The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'
/// </summary>
/// <returns></returns>
public HurstEnvelope HurstEnvelope(Data.IDataSeries input, double
offsetMultiplier, int period)
{
checkHurstEnvelope.OffsetMultiplier = offsetMultiplier;
offsetMultiplier = checkHurstEnvelope.OffsetMultiplier;
checkHurstEnvelope.Period = period;
period = checkHurstEnvelope.Period;
if (cacheHurstEnvelope != null)
for (int idx = 0; idx < cacheHurstEnvelope.Length; idx++)
if (Math.Abs(cacheHurstEnvelope[idx].OffsetMultiplier -
offsetMultiplier) <= double.Epsilon && cacheHurstEnvelope[idx].Period == period &&
cacheHurstEnvelope[idx].EqualsInput(input))
return cacheHurstEnvelope[idx];
return indicator;
}
}
}
// This namespace holds all market analyzer column definitions and is required. Do
not change it.
namespace NinjaTrader.MarketAnalyzer
{
public partial class Column : ColumnBase
{
/// <summary>
/// The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'
/// </summary>
/// <returns></returns>
[Gui.Design.WizardCondition("Indicator")]
public Indicator.HurstEnvelope HurstEnvelope(double offsetMultiplier, int
period)
{
return _indicator.HurstEnvelope(Input, offsetMultiplier, period);
}
/// <summary>
/// The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'
/// </summary>
/// <returns></returns>
public Indicator.HurstEnvelope HurstEnvelope(Data.IDataSeries input, double
offsetMultiplier, int period)
{
return _indicator.HurstEnvelope(input, offsetMultiplier, period);
}
}
}
// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
public partial class Strategy : StrategyBase
{
/// <summary>
/// The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'
/// </summary>
/// <returns></returns>
[Gui.Design.WizardCondition("Indicator")]
public Indicator.HurstEnvelope HurstEnvelope(double offsetMultiplier, int
period)
{
return _indicator.HurstEnvelope(Input, offsetMultiplier, period);
}
/// <summary>
/// The Hurst Envelope is described in J.M Hursts 'The Profit Magic of
Stock Transaction Timing'
/// </summary>
/// <returns></returns>
public Indicator.HurstEnvelope HurstEnvelope(Data.IDataSeries input, double
offsetMultiplier, int period)
{
if (InInitialize && input == null)
throw new ArgumentException("You only can access an indicator with
the default input/bar series from within the 'Initialize()' method");
}
}
#endregion