NexusFi: Find Your Edge


Home Menu

 





Could you help me with this plot???


Discussion in NinjaTrader

Updated
    1. trending_up 3,354 views
    2. thumb_up 1 thanks given
    3. group 1 followers
    1. forum 2 posts
    2. attach_file 1 attachments




 
Search this Thread

Could you help me with this plot???

  #1 (permalink)
 andaluz 
cadiz
 
Experience: Beginner
Platform: NinjaTrader
Broker: interactive brokers
Trading: stocks
Posts: 4 since Nov 2009
Thanks Given: 2
Thanks Received: 1

Hi, everyone!

I would like to plot when rsi crosses 40 line, but I'm failing in something and I don't know where is failing. Could you help me?

I paste:
 
Code
                            
public class _Alerts_MiRSI Indicator
    
{
        
#region Variables
        
private DataSeries                    avgUp;
        private 
DataSeries                    avgDown;
        private 
DataSeries                    down;
        private 
int                                period    14;
        private 
int                                smooth    3;
        private 
DataSeries                    up;
        
#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.Green"MiRSI"));
            
Add(new Plot(Color.Orange"Avg"));

            
Add(new Line(System.Drawing.Color.DarkViolet20"Lower20"));
            
Add(new Line(System.Drawing.Color.DarkViolet80"Upper80"));
            
Add(new Line(System.Drawing.Color.Red60"Lower60"));
            
Add(new Line(System.Drawing.Color.Red40"Upper40"));
            
Add(new Line(System.Drawing.Color.Blue50"Upper50"));
            
            
Add(new Plot(Color.FromKnownColor(KnownColor.Orange), PlotStyle.Line"Alarma"));
            

            
avgUp                = new DataSeries(this);
            
avgDown                = new DataSeries(this);
            
down                = new DataSeries(this);
            
up                    = new DataSeries(this);

            
PriceTypeSupported    true;
        }

        
/// <summary>
        /// Calculates the indicator value(s) at the current index.
        /// </summary>
        
protected override void OnBarUpdate()
        {
            if (
CurrentBar == 0)
            {
                
down.Set(0);
                
up.Set(0);
                return;
            }

            
down.Set(Math.Max(Input[1] - Input[0], 0));
            
up.Set(Math.Max(Input[0] - Input[1], 0));

            if ((
CurrentBar 1) < Period
            {
                if ((
CurrentBar 1) == (Period 1))
                    
Avg.Set(50);
                return;
            }

            if ((
CurrentBar 1) == Period
            {
                
// First averages 
                
avgDown.Set(SMA(downPeriod)[0]);
                
avgUp.Set(SMA(upPeriod)[0]);
            }  
            else 
            {
                
// Rest of averages are smoothed
                
avgDown.Set((avgDown[1] * (Period 1) + down[0]) / Period);
                
avgUp.Set((avgUp[1] * (Period 1) + up[0]) / Period);
            }

            
double rs      avgUp[0] / (avgDown[0] == avgDown[0]);
            
double rsi      100 - (100 / (rs));
            
double rsiAvg = (2.0 / (Smooth)) * rsi + (- (2.0 / (Smooth))) * Avg[1];

            
Avg.Set(rsiAvg);
            
Value.Set(rsi);
            
            
Alarma.Set(rsi[1] < Upper40[1]&&rsi[0] > Upper40[0] ? 0);
        }

        
#region Properties
        /// <summary>
        /// </summary>
        
[Browsable(false)]
        [
XmlIgnore()]
        public 
DataSeries Avg
        
{
            
get { return Values[1]; }
        }

        
/// <summary>
        /// </summary>
        
[Browsable(false)]
        [
XmlIgnore()]
        public 
DataSeries Default
        {
            
get { return Values[0]; }
        }
        
        
/// <summary>
        /// </summary>
        
[Description("Numbers of bars used for calculations")]
        [
Category("Parameters")]
        public 
int Period
        
{
            
get { return period; }
            
set period Math.Max(2value); }
        }

        
/// <summary>
        /// </summary>
        
[Description("Number of bars for smoothing")]
        [
Category("Parameters")]
        public 
int Smooth
        
{
            
get { return smooth; }
            
set smooth Math.Max(1value); }
        }
        
        
            
            
        
        
        
#endregion
    
}
}

#region NinjaScript generated code. Neither change nor remove.
// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    public 
partial class Indicator IndicatorBase
    
{
        private 
_Alerts_MiRSI[] cache_Alerts_MiRSI null;

        private static 
_Alerts_MiRSI check_Alerts_MiRSI = new _Alerts_MiRSI();

        
/// <summary>
        /// The MiRSI (Relative Strength Index) is a price-following oscillator that ranges between 0 and 100.
        /// </summary>
        /// <returns></returns>
        
public _Alerts_MiRSI _Alerts_MiRSI(int periodint smooth)
        {
            return 
_Alerts_MiRSI(Inputperiodsmooth);
        }

        
/// <summary>
        /// The MiRSI (Relative Strength Index) is a price-following oscillator that ranges between 0 and 100.
        /// </summary>
        /// <returns></returns>
        
public _Alerts_MiRSI _Alerts_MiRSI(Data.IDataSeries inputint periodint smooth)
        {
            
check_Alerts_MiRSI.Period period;
            
period check_Alerts_MiRSI.Period;
            
check_Alerts_MiRSI.Smooth smooth;
            
smooth check_Alerts_MiRSI.Smooth;

            if (
cache_Alerts_MiRSI != null)
                for (
int idx 0idx cache_Alerts_MiRSI.Lengthidx++)
                    if (
cache_Alerts_MiRSI[idx].Period == period && cache_Alerts_MiRSI[idx].Smooth == smooth && cache_Alerts_MiRSI[idx].EqualsInput(input))
                        return 
cache_Alerts_MiRSI[idx];

            
_Alerts_MiRSI indicator = new _Alerts_MiRSI();
            
indicator.BarsRequired BarsRequired;
            
indicator.CalculateOnBarClose CalculateOnBarClose;
            
indicator.Input input;
            
indicator.Period period;
            
indicator.Smooth smooth;
            
indicator.SetUp();

            
_Alerts_MiRSI[] tmp = new _Alerts_MiRSI[cache_Alerts_MiRSI == null cache_Alerts_MiRSI.Length 1];
            if (
cache_Alerts_MiRSI != null)
                
cache_Alerts_MiRSI.CopyTo(tmp0);
            
tmp[tmp.Length 1] = indicator;
            
cache_Alerts_MiRSI tmp;
            
Indicators.Add(indicator);

            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 MiRSI (Relative Strength Index) is a price-following oscillator that ranges between 0 and 100.
        /// </summary>
        /// <returns></returns>
        
[Gui.Design.WizardCondition("Indicator")]
        public 
Indicator._Alerts_MiRSI _Alerts_MiRSI(int periodint smooth)
        {
            return 
_indicator._Alerts_MiRSI(Inputperiodsmooth);
        }

        
/// <summary>
        /// The MiRSI (Relative Strength Index) is a price-following oscillator that ranges between 0 and 100.
        /// </summary>
        /// <returns></returns>
        
public Indicator._Alerts_MiRSI _Alerts_MiRSI(Data.IDataSeries inputint periodint smooth)
        {
            return 
_indicator._Alerts_MiRSI(inputperiodsmooth);
        }

    }
}

// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
    public 
partial class Strategy StrategyBase
    
{
        
/// <summary>
        /// The MiRSI (Relative Strength Index) is a price-following oscillator that ranges between 0 and 100.
        /// </summary>
        /// <returns></returns>
        
[Gui.Design.WizardCondition("Indicator")]
        public 
Indicator._Alerts_MiRSI _Alerts_MiRSI(int periodint smooth)
        {
            return 
_indicator._Alerts_MiRSI(Inputperiodsmooth);
        }

        
/// <summary>
        /// The MiRSI (Relative Strength Index) is a price-following oscillator that ranges between 0 and 100.
        /// </summary>
        /// <returns></returns>
        
public Indicator._Alerts_MiRSI _Alerts_MiRSI(Data.IDataSeries inputint periodint smooth)
        {
            if (
InInitialize && input == null)
                throw new 
ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");

            return 
_indicator._Alerts_MiRSI(inputperiodsmooth);
        }

    }
}
#endregion 
Thank you in advance
Greetings from Spain, andaluz.

Attached Files
Elite Membership required to download: AlertsMiRSi.cs
Started this thread Reply With Quote

Can you help answer these questions
from other members on NexusFi?
How to apply profiles
Traders Hideout
NT7 Indicator Script Troubleshooting - Camarilla Pivots
NinjaTrader
Exit Strategy
NinjaTrader
Pivot Indicator like the old SwingTemp by Big Mike
NinjaTrader
REcommedations for programming help
Sierra Chart
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Spoo-nalysis ES e-mini futures S&P 500
29 thanks
Tao te Trade: way of the WLD
24 thanks
Just another trading journal: PA, Wyckoff & Trends
24 thanks
Bigger Wins or Fewer Losses?
21 thanks
GFIs1 1 DAX trade per day journal
17 thanks
  #3 (permalink)
 
Fat Tails's Avatar
 Fat Tails 
Berlin, Europe
Market Wizard
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
Posts: 9,888 since Mar 2010
Thanks Given: 4,242
Thanks Received: 27,102


(1) You used Alarma.Set, but you have not defined any DataSeries for it. Actually Alarma[] only takes the values 0 or 1, so you would need to define a BoolSeries under properties:

public BoolSeries Alarma
{
get{return values[2];}
}

(2) Also you have not defined any DataSeries Upper40[]. If you add a new line, this does not create a dataseries, if you add a new plot, you would need to declare the dataseries under properties....

(3) There is no dataseries rsi[], but you have called this dataseries Default, so you need to use Default!

The code for line 102 should therefore read

Alarma.Set(Default[1] < 40 && Default[0] > 40);

which sets a Boolean value to Alarma....

Have not checked this, but you should be able to work it out...

Reply With Quote
Thanked by:




Last Updated on May 30, 2010


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts