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