I would like to change the parameters of indicator from strategy, so that the indicator was draw with the specified parameters on the chart.
I wrote the code below and it seems that it should work correctly:
package jforex;
import java.util.*;
import com.dukascopy.api.*;
import com.dukascopy.api.indicators.*;
public class SetOptInputParametersSamlpe implements IStrategy {
private IEngine engine;
private IConsole console;
private IHistory history;
private IContext context;
private IIndicators indicators;
@Configurable("Instrument:") public Instrument instrumentThis = Instrument.EURUSD;
@Configurable(value="Period:") public Period periodThis = Period.TEN_SECS;
int SMAPeriod = 10;
public void onStart(IContext context) throws JFException {
this.engine = context.getEngine();
this.console = context.getConsole();
this.history = context.getHistory();
this.context = context;
this.indicators = context.getIndicators();
}
public void onAccount(IAccount account) throws JFException {
}
public void onMessage(IMessage message) throws JFException {
}
public void onStop() throws JFException {
}
public void onTick(Instrument instrument, ITick tick) throws JFException {
}
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
if(instrument == instrumentThis && period==periodThis){
SMAPeriod++;
if(SMAPeriod >300) SMAPeriod=10;
IChart chart = context.getChart(instrument);
if (chart != null){
java.util.List<IIndicator> ind = chart.getIndicators();
for(IIndicator i : ind){
console.getOut().println(i.getIndicatorInfo().getName() );
if(i.getIndicatorInfo().getName().equals("SMA")){
i.setOptInputParameter(0, SMAPeriod);
console.getOut().println("Set SMAPeriod: "+ SMAPeriod);
}
}
}
}
}
}
but I get an indicator error:
Quote:
07:54:42 Error in indicator: java.lang.ArrayIndexOutOfBoundsException: 1 @ com.dukascopy.api.impl.ct.calculate(Unknown Source)
or
Quote:
08:02:39 Error in indicator: calculate() method of indicator [SMA] returned less values than expected. Requested from-to [0]-[29], input array size [30], returned first calculated index [0], number of calculated values [0], lookback [29], lookforward [0], expected number of elements is [1]
Please help...