Dukascopy Support Board
http://www.dukascopy.com/swiss/english/forex/jforex/forum/

Setting indicator parameters from a strategy using JForex-API.
http://www.dukascopy.com/swiss/english/forex/jforex/forum/viewtopic.php?f=65&t=57491
Page 1 of 1

Author:  Andrey_VV [ Thu 10 Dec, 2020, 13:59 ]
Post subject:  Setting indicator parameters from a strategy using JForex-API.

In my strategy, I add the CCI indicator to the chart. The documentation describes well the methods on how the input and output parameters can be configured, but I could not find information on how you can configure the parameters presented on the "Levels" and "Advanced" tabs:

Image

Image

Please tell me how to do this using JForex-API.

Thanks in advance for your reply.

Attachments:
ВопросПоПараметрам2.png [40.14 KiB]
Downloaded 386 times
ВопросПоПараметрам1.png [48.86 KiB]
Downloaded 384 times

Author:  Andrey_VV [ Wed 30 Dec, 2020, 17:31 ]
Post subject:  Re: Setting indicator parameters from a strategy using JForex-API.

Many thanks to Vadim Berezhnoj, who sent an example code in personal correspondence:
package jforex;

import java.awt.*;
import java.util.*;
import com.dukascopy.api.*;
import com.dukascopy.api.feed.*;
import com.dukascopy.api.feed.util.*;
import com.dukascopy.api.indicators.*;
import com.dukascopy.api.indicators.OutputParameterInfo.*;

public class AddIndicatorToChart implements IStrategy {
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;
   
    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();
        this.userInterface = context.getUserInterface();
       
        IFeedDescriptor feedDescriptor = new TimePeriodAggregationFeedDescriptor(Instrument.EURUSD, Period.ONE_MIN, OfferSide.BID, Filter.WEEKENDS);
        IChart chart = context.openChart(feedDescriptor);
       
        IIndicator indicator = indicators.getIndicator("CCI");
        IndicatorInfo indicatorInfo = indicator.getIndicatorInfo();
       
        indicatorInfo.setRecalculateOnNewCandleOnly(true);
       
        indicatorInfo.setDefaultLevelsInfo(new LevelInfo[] {
            new LevelInfo("High level", 100, DrawingStyle.DASH_LINE, Color.GRAY, 1, 1),
            new LevelInfo("Middle level", 0, DrawingStyle.DASH_LINE, Color.GRAY, 1, 1),
            new LevelInfo("Low level", -100, DrawingStyle.DASH_LINE, Color.GRAY, 1, 1)
        });
       
        chart.add(indicator, new Object[] {14}, Instrument.EURUSD, Period.TEN_MINS, OfferSide.ASK);
       
        context.stop();
    }

    public void onStop() throws JFException {
    }

    public void onAccount(IAccount account) throws JFException {
    }

    public void onMessage(IMessage message) throws JFException {
    }

    public void onTick(Instrument instrument, ITick tick) throws JFException {
    }
   
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
    }
}

as well as links to the source of information:
https://www.dukascopy.com/client/javado ... y-boolean-
https://www.dukascopy.com/client/javado ... velInfo:A-
https://www.dukascopy.com/client/javado ... OfferSide-

  Page 1 of 1