Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

'NinjaTrader.Indicator' is a 'namespace' but is used like a 'type'

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    'NinjaTrader.Indicator' is a 'namespace' but is used like a 'type'

    I am puzzled over this error. Once I overcome it I can resolve further coding errors that may show up.

    I am translating into Ninjatrader7 an open source indicator designed for NT8. I usually convert the other way around but I need this one also for NT7 during the upgrade transition.

    At Line 35 at the 'Indicator' inheritance of the class definition I am getting
    'NinjaTrader.Indicator' is a 'namespace' but is used like a 'type' at the class definition ( and later in the cache code says The type or namespace name 'AuHoltEMA' could not be found (are you missing a using directive or an assembly reference?)

    Can someone see what the problem is?
    Thank you!
    G

    Code:
    #region Using declarations
    using System;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.ComponentModel;
    using System.Xml.Serialization;
    using NinjaTrader.Data;
    using NinjaTrader.Gui.Chart;
    #endregion
    
    //This namespace holds Indicators in this folder and is required. Do not change it.
    namespace NinjaTrader.Indicators
    {
    /// <summary>
    /// Exponential Moving Average.
    /// </summary>
    [Description("")]
    public class AuHoltEMA : Indicator
    {
    #region Variables
    private int period = 89;
    private int trendPeriod = 144;
    private double alpha = 0.0; // Default setting for Alpha
    private double gamma = 0.0; // Default setting for Gamma
    //private DataSeries trend;
    
    private bool showPaintBars = true;
    private Brush upColor = Brushes.Lime;
    private Brush neutralColor = Brushes.Tan;
    private Brush downColor = Brushes.Red;
    private int opacity = 4;
    private int alphaBarClr = 0;
    private bool showPlot = true;
    
    #endregion
    
    protected override void Initialize()
    {
    Description = @"http://www2.gsu.edu/~dscthw/8110/Chapter8.pdf";
    Name = "AuHoltEMA";
    Calculate = Calculate.OnBarClose;
    IsOverlay = true;
    DisplayInDataBox = true;
    DrawOnPricePanel = true;
    DrawHorizontalGridLines = true;
    DrawVerticalGridLines = true;
    PaintPriceMarkers = true;
    ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right;
    //Disable this property if your indicator requires custom values that cumulate with each new market data event.
    //See Help Guide for additional information.
    IsSuspendedWhileInactive = true;
    
    ShowTransparentPlotsInDataBox = true;
    
    AddPlot(new Stroke(Brushes.DodgerBlue, 2), PlotStyle.Line, "HoltEMA");
    AddPlot(new Stroke() { Brush = Brushes.Transparent, Width = 1, DashStyleHelper = DashStyleHelper.Solid }, PlotStyle.Dot, "HoltEMATrend");
    
    
    Trend = new DataSeries(this);
    }
    
    protected override void OnBarUpdate()
    {
    double alpha = 2.0 / (1 + Period);
    double gamma = 2.0 / (1 + TrendPeriod);
    
    //OnStartup
    if (CurrentBar < 1)
    {
    alphaBarClr = 25 * opacity;
    
    if (showPlot)
    Plots[0].Brush = Brushes.Gray;
    else
    Plots[0].Brush = Brushes.Transparent;
    
    HoltEMA[0] = Input[0];
    Trend[0] = 0.0;
    return;
    }
    else
    {
    double holt = alpha * Input[0] + (1 - alpha) * (HoltEMA[1] + Trend[1]);
    HoltEMA[0] = holt;
    Trend[0] = gamma * (holt - HoltEMA[1]) + (1 - gamma) * Trend[1];
    }
    
    if (CurrentBar > 1)
    {
    HoltEMATrend[0] = 0;
    if (HoltEMA[0] > HoltEMA[1])
    HoltEMATrend[0] = 1;
    else if (HoltEMA[0] < HoltEMA[1])
    HoltEMATrend[0] = -1;
    
    if (showPlot)
    {
    if (HoltEMATrend[0] == 1)
    PlotBrushes[0][0] = upColor;
    else if (HoltEMATrend[0] == -1)
    PlotBrushes[0][0] = downColor;
    else if (HoltEMATrend[0] == 0)
    PlotBrushes[0][0] = neutralColor;
    }
    
    if (showPaintBars)
    {
    if (HoltEMATrend[0] == 1)
    {
    BarBrushes[0] = upColor;
    CandleOutlineBrushes[0] = upColor;
    }
    else if (HoltEMATrend[0] == -1)
    {
    BarBrushes[0] = downColor;
    CandleOutlineBrushes[0] = downColor;
    }
    else
    {
    BarBrushes[0] = neutralColor;
    CandleOutlineBrushes[0] = neutralColor;
    }
    
    if (Close[0] > Open[0])
    {
    byte g = ((Color)BarBrushes[0].GetValue(SolidColorBrush.ColorProperty)).G;
    byte r = ((Color)BarBrushes[0].GetValue(SolidColorBrush.ColorProperty)).R;
    byte b = ((Color)BarBrushes[0].GetValue(SolidColorBrush.ColorProperty)).B;
    
    BarBrushes[0] = new SolidColorBrush(Color.FromArgb((byte)alphaBarClr, r, g, b));
    }
    }
    }
    
    }
    
    #region Properties
    //[Browsable(false)]
    //[XmlIgnore]
    //public Series<double> HoltEMA
    //{
    // get { return Values[0]; }
    //}
    //
    //[Browsable(false)]
    //[XmlIgnore]
    //public Series<double> HoltEMATrend
    //{
    // get { return Values[1]; }
    //}
    //
    //[Browsable(false)]
    //[XmlIgnore]
    //public Series<double> Trend
    //{
    // get { return trend; }
    //}
    //}
    
    [Browsable(false)] [XmlIgnore()] public DataSeries HoltEMA { get; protected set; } //MP- Added
    [Browsable(false)] [XmlIgnore()] public DataSeries HoltEMATrend { get; protected set; } //MP- Added
    [Browsable(false)] [XmlIgnore()] public DataSeries Trend { get; protected set; } //MP- Added
    
    //[NinjaScriptProperty]
    //[Display(Name = "Period", Description = "Period", Order = 0, GroupName = "Gen. Parameters")]
    [Category("Parameters")]
    public int Period
    {
    get { return period; }
    set { period = period = Math.Max(1, value); }
    }
    
    //[NinjaScriptProperty]
    //[Display(Name = "Trend Period", Description = "Trend Period", Order = 1, GroupName = "Gen. Parameters")]
    [Category("Parameters")]
    public int TrendPeriod
    {
    get { return trendPeriod; }
    set { trendPeriod = Math.Max(1, value); }
    }
    
    //[Display(Name = "Show PaintBars", Description = "Show paint bars on price panel", Order = 2, GroupName = "Gen. Parameters")]
    [Category("Plot Colors")]
    public bool ShowPaintBars
    {
    get { return showPaintBars; }
    set { showPaintBars = value; }
    }
    
    [XmlIgnore]
    //[Display(Name = "Average Chop Mode", Description = "Select color for neutral average", Order = 0, GroupName = "Plot Colors")]
    [Category("Plot Colors")]
    public Brush NeutralColor
    {
    get { return neutralColor; }
    set { neutralColor = value; }
    }
    
    [Browsable(false)]
    public string NeutralColorSerialize
    {
    get { return Serialize.BrushToString(neutralColor); }
    set { neutralColor = Serialize.StringToBrush(value); }
    }
    
    [XmlIgnore]
    //[Display(Name = "Average Falling", Description = "Select color for falling average", Order = 1, GroupName = "Plot Colors")]
    [Category("Plot Colors")]
    public Brush DownColor
    {
    get { return downColor; }
    set { downColor = value; }
    }
    
    [Browsable(false)]
    public string DownColorSerialize
    {
    get { return Serialize.BrushToString(downColor); }
    set { downColor = Serialize.StringToBrush(value); }
    }
    
    [XmlIgnore]
    //[Display(Name = "Average Rising", Description = "Select color for rising average", Order = 2, GroupName = "Plot Colors")]
    [Category("Plot Colors")]
    public Brush UpColor
    {
    get { return upColor; }
    set { upColor = value; }
    }
    
    [Browsable(false)]
    public string UpColorSerialize
    {
    get { return Serialize.BrushToString(upColor); }
    set { upColor = Serialize.StringToBrush(value); }
    }
    
    //[Display(Name = "Upclose Opacity", Description = "When paint bars are activated, this parameter sets the opacity of the upclose bars", Order = 3, GroupName = "Plot Colors")]
    [Category("Plot Colors")]
    public int Opacity
    {
    get { return opacity; }
    set { opacity = value; }
    }
    
    //[Display(Name = "Show Plot", Description = "Show plot of the Zero-Lagging Heiken-Ashi TEMA", Order = 4, GroupName = "Plot Colors")]
    [Category("Plot Colors")]
    public bool ShowPlot
    {
    get { return showPlot; }
    set { showPlot = value; }
    }
    
    #endregion
    }
    }
    Last edited by giogio1; 08-06-2022, 05:26 PM.

    #2
    Hello giogio1,

    Did you create a new indicator in NinjaTrader 8, and then copy just the logic and variables from the NinjaTrader 7 script?

    This does appear to have the correct namespace.

    If you are not creating the indicator in NinjaTrader 8, and then copying over the logic, do this instead.

    Below is a link to a forum post on porting scripts.


    Chelsea B.NinjaTrader Customer Service

    Comment


      #3
      I found the error, this is NT7, I wrote
      namespace NinjaTrader.Indicators
      instead of
      namespace NinjaTrader.Indicator

      Thank you for the answer.
      G

      Comment

      Latest Posts

      Collapse

      Topics Statistics Last Post
      Started by fx.practic, 10-15-2013, 12:53 AM
      5 responses
      5,404 views
      0 likes
      Last Post Bidder
      by Bidder
       
      Started by Shai Samuel, 07-02-2022, 02:46 PM
      4 responses
      95 views
      0 likes
      Last Post Bidder
      by Bidder
       
      Started by DJ888, Yesterday, 10:57 PM
      0 responses
      7 views
      0 likes
      Last Post DJ888
      by DJ888
       
      Started by MacDad, 02-25-2024, 11:48 PM
      7 responses
      159 views
      0 likes
      Last Post loganjarosz123  
      Started by Belfortbucks, Yesterday, 09:29 PM
      0 responses
      8 views
      0 likes
      Last Post Belfortbucks  
      Working...
      X