I am trying to import an indicator into a strategy.
The indicator that uses a large number of DataSeries, let say 5 Data Series ie (EURUSD,EURJPY, ect..)
I am currently adding every series in to the indicator paramaters like this.
( the constructor gets large, and would like to simplify it)
Strategy
private FXMom301bProduction FXMom; // Declare FXMom here
else if (State == State.DataLoaded)
{
AddDataSeries("EURUSD", Data.BarsPeriodType.Minute, 1); //BarsInProgress index = 1 | Closes[1][0]
AddDataSeries("EURGBP", Data.BarsPeriodType.Minute, 1); //BarsInProgress index = 2 | Closes[2][0]
AddDataSeries("EURCAD", Data.BarsPeriodType.Minute, 1); //BarsInProgress index = 3 | Closes[3][0]
FXMom = FXMom301bProduction(
Closes[1], // EURUSD_Close
Closes[2], // EURGBP_Close
Closes[3], // EURCAD_Close
)
}
Indicator
public class FXMom301bProduction : Indicator
{
[NinjaScriptProperty]
[Display(Name = "EURUSD_Close", GroupName = "Show_Index", Order = 1, Description = "...")]
public ISeries<double> EURUSD_Close
{ get; set; }
[NinjaScriptProperty]
[Display(Name = "EURGBP_Close", GroupName = "Show_Index", Order = 1, Description = "...")]
public ISeries<double> EURGBP_Close
{ get; set; }
[NinjaScriptProperty]
[Display(Name = "EURCAD_Close", GroupName = "Show_Index", Order = 1, Description = "...")]
public ISeries<double> EURCAD_Close
{ get; set; }
protected override void OnBarUpdate()
{
var EURUSD = EURUSD_Close[0];
var EURGBP = EURUSD_Close[0];
var EURCAD = EURUSD_Close[0];
}
I'd rather do this send the data to the indicator in an array or matrix.
Can this be done efficiently?
Whats the best method for achieving this?
Strategy
DataArray[1] = Closes[1][0]; // Store ISeries in a array. would i put this in the OnBarUpdate? or Dataloaded?
DataArray[2] = Closes[2][0];
DataArray[3] = Closes[3][0];
FXMom = FXMom301bProduction(DataArray[]) //send an array of data series (Close) to the indicator
Indicator
[NinjaScriptProperty]
[Display(Name = "Fx Data", GroupName = "Show_Index", Order = 1, Description = "...")]
public ISeries<double>[] Fx_Data
{ get; set; }
protected override void OnBarUpdate()
{
var EURUSD_Close = Fx_Data[1];
var EURGBP_Close = Fx_Data[2];
var EURCAD_Close = Fx_Data[3];
What is the ideal method of getting data into the indicator?
thanks.

Comment