I have developed a multi-instrument indicator to show me the relative strength of a basket of currencies.
The first version of the indicator that I created on just 4 JPY pairs works.
The second version, with almost identical code, I created for 7 pairs on the EUR DOES NOT.
JPY version works.
EUR version does not.
SAME CODE!
Verified that I have data from my provider to the indicator, so that is not the issue.
This is driving me nuts!
JPY CODE
public class RelativeStrengthJPY : Indicator { #region Variables // Wizard generated variables // User defined variables (add any user defined variables below) #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.FromKnownColor(KnownColor.Cyan), PlotStyle.Line, "FifteenMinute")); Add(new Plot(Color.FromKnownColor(KnownColor.MediumBlue), PlotStyle.Line, "OneHour")); Add(new Line(Color.FromKnownColor(KnownColor.Green), 75, "OverBought")); Add(new Line(Color.FromKnownColor(KnownColor.Red), 25, "OverSold")); Overlay = false; //Fifteen minute time period Add("$USDJPY",PeriodType.Minute, 15); //bars array 1 Add("$GBPJPY",PeriodType.Minute, 15); //bars array 2 Add("$CHFJPY",PeriodType.Minute, 15); //bars array 3 Add("$EURJPY",PeriodType.Minute, 15); //bars array 4 Add("$AUDJPY",PeriodType.Minute, 15); //bars array 5 //60 minute period Add("$USDJPY",PeriodType.Minute, 60); //bars array 6 Add("$GBPJPY",PeriodType.Minute, 60); //bars array 7 Add("$CHFJPY",PeriodType.Minute, 60); //bars array 8 Add("$EURJPY",PeriodType.Minute, 60); //bars array 9 Add("$AUDJPY",PeriodType.Minute, 60); //bars array 10 } /// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() { // Use this method for calculating your indicator values. Assign a value to each // plot below by replacing 'Close[0]' with your own formula. double hourly_strength; double fifteen_minute_strength; if (CurrentBar < 3) return; fifteen_minute_strength = 100 - ( ( RSI(BarsArray[1],2,1)[0] + RSI(BarsArray[2],2,1)[0] +RSI(BarsArray[3],2,1)[0] + RSI(BarsArray[4],2,1)[0] + RSI(BarsArray[5],2,1)[0]) / 5); hourly_strength = 100 - ( ( RSI(BarsArray[6],2,1)[0] + RSI(BarsArray[7],2,1)[0] +RSI(BarsArray[8],2,1)[0] + RSI(BarsArray[9],2,1)[0] + RSI(BarsArray[10],2,1)[0] )/ 5); OneHour.Set(hourly_strength); FifteenMinute.Set(fifteen_minute_strength); }
EUR CODE
public class RelativeStrengthEUR : Indicator { #region Variables // Wizard generated variables // User defined variables (add any user defined variables below) double hourly_strength; double fifteen_minute_strength; #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.FromKnownColor(KnownColor.Cyan), PlotStyle.Line, "FifteenMinute")); Add(new Plot(Color.FromKnownColor(KnownColor.MediumBlue), PlotStyle.Line, "OneHour")); Add(new Line(Color.FromKnownColor(KnownColor.Green), 75, "OverBought")); Add(new Line(Color.FromKnownColor(KnownColor.Red), 25, "OverSold")); Overlay = false; //Fifteen minute time period Add("$EURUSD",PeriodType.Minute, 15); //bars array 1 Add("$EURJPY",PeriodType.Minute, 15); //bars array 2 Add("$EURGBP",PeriodType.Minute, 15); //bars array 3 Add("$EURCHF",PeriodType.Minute, 15); //bars array 4 Add("$EURAUD",PeriodType.Minute, 15); //bars array 5 Add("$EURNZD",PeriodType.Minute, 15); //bars array 6 Add("$EURCAD",PeriodType.Minute, 15); //bars array 7 //One hour time period Add("$EURUSD",PeriodType.Minute, 60); //bars array 8 Add("$EURJPY",PeriodType.Minute, 60); //bars array 9 Add("$EURGBP",PeriodType.Minute, 60); //bars array 10 Add("$EURCHF",PeriodType.Minute, 60); //bars array 11 Add("$EURAUD",PeriodType.Minute, 60); //bars array 12 Add("$EURNZD",PeriodType.Minute, 60); //bars array 13 Add("$EURCAD",PeriodType.Minute, 60); //bars array 14 } /// <summary> /// Called on each bar update event (incoming tick) /// </summary> protected override void OnBarUpdate() { // Use this method for calculating your indicator values. Assign a value to each // plot below by replacing 'Close[0]' with your own formula. if(CurrentBar < 3) return; //15 Min RSI fifteen_minute_strength = (RSI(BarsArray[1],2,1)[0] + RSI(BarsArray[2],2,1)[0] + RSI(BarsArray[3],2,1)[0] + RSI(BarsArray[4],2,1)[0] + RSI(BarsArray[5],2,1)[0] + RSI(BarsArray[6],2,1)[0] + RSI(BarsArray[7],2,1)[0])/7; //1H RSI hourly_strength = (RSI(BarsArray[8],2,1)[0] + RSI(BarsArray[9],2,1)[0] + RSI(BarsArray[10],2,1)[0] + RSI(BarsArray[11],2,1)[0] + RSI(BarsArray[12],2,1)[0] + RSI(BarsArray[13],2,1)[0] + RSI(BarsArray[14],2,1)[0])/7; FifteenMinute.Set(fifteen_minute_strength); OneHour.Set(hourly_strength); }
Comment