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);
                    }
                }
            }
        }
    }
}