Dukascopy
 
 
Wiki JStore Search Login

Attention! Read the forum rules carefully before posting a topic.

    Try to find an answer in Wiki before asking a question.
    Submit programming questions in this forum only.
    Off topics are strictly forbidden.

Any topics which do not satisfy these rules will be deleted.

KAMA Indicator on Renko Chart
 Post subject: KAMA Indicator on Renko Chart Post rating: 0   New post Posted: Fri 15 May, 2015, 04:21 
User avatar

User rating: 1
Joined: Sun 09 Feb, 2014, 14:42
Posts: 15
Location: Indonesia, Bandung
Hello Support,

I have problem with Kama indicator on Renko Chart.
There is difference between chart result and strategy result for Kama Indicator.
But for Sma Indicator, strategy result generate same result as chart.
Can you help me?

Thank you.
package jforex.strategies.sdk;

import java.util.*;

import com.dukascopy.api.*;
import com.dukascopy.api.IIndicators.AppliedPrice;
import com.dukascopy.api.feed.IFeedDescriptor;
import com.dukascopy.api.feed.IFeedListener;
import com.dukascopy.api.feed.IRenkoBar;
import com.dukascopy.api.feed.IRenkoBarFeedListener;
import com.dukascopy.api.feed.util.RenkoFeedDescriptor;
import com.dukascopy.api.IEngine.*;

import com.dukascopy.api.DataType;
import com.dukascopy.api.IBar;
import com.dukascopy.api.IChart;
import com.dukascopy.api.IConsole;
import com.dukascopy.api.IContext;
import com.dukascopy.api.IHistory;
import com.dukascopy.api.IIndicators;
import com.dukascopy.api.IMessage;
import com.dukascopy.api.IStrategy;
import com.dukascopy.api.ITick;
import com.dukascopy.api.ITimedData;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import com.dukascopy.api.OfferSide;
import com.dukascopy.api.Period;
import com.dukascopy.api.feed.IFeedDescriptor;

public class KAMATEST implements IStrategy, IFeedListener {

    private IFeedDescriptor feedDescriptor = new RenkoFeedDescriptor(Instrument.EURUSD, PriceRange.valueOf(20), OfferSide.BID, IFeedDescriptor.DEFAULT_BASE_PERIOD);
   
    public Instrument selectedInstrument = feedDescriptor.getInstrument();
   
    private IAccount account;
    private IEngine engine;
    private IConsole console;
    private IHistory history;
    private IContext context;
    private IIndicators indicators;
    private IUserInterface userInterface;
    private String User;
    private IOrder order = null;
   
    private double Volume;
    private double [] kama1 = new double [3];
    private double [] sma = new double [3];

    @Override
    public void onStart(IContext context) throws JFException {
       
        this.engine = context.getEngine();
        console = context.getConsole();
        history = context.getHistory();
        this.context = context;
        indicators = context.getIndicators();
        this.userInterface = context.getUserInterface();
       
        context.setSubscribedInstruments(java.util.Collections.singleton(feedDescriptor.getInstrument()), true);
        if(feedDescriptor.getDataType() == DataType.TICKS){
            console.getWarn().println("The strategy can't trade according to the tick feed!");
            context.stop();
        }
        context.subscribeToFeed(feedDescriptor, this);
       
       
    }

    @Override
    public void onFeedData(IFeedDescriptor feedDescriptor, ITimedData feedData) {

    try {
       
        IBar prevBar = history.getRenkoBar(selectedInstrument, feedDescriptor.getOfferSide(), feedDescriptor.getPriceRange(), 1);
       
        if (Volume != prevBar.getVolume()) {
           
            Object[] smaObjectsFeed = indicators.calculateIndicator(feedDescriptor, new OfferSide[]{feedDescriptor.getOfferSide()}, "SMA",
                    new AppliedPrice[]{AppliedPrice.CLOSE}, new Object[]{30}, 3, prevBar.getTime(), 0 );
            sma =  (double[]) smaObjectsFeed[0];
            console.getOut().println("sma[0]: " + sma[0] + " sma[1]: " + sma[1] + " sma[2]: " + sma[2]);
           
            Object[] kama1ObjectsFeed = indicators.calculateIndicator(feedDescriptor, new OfferSide[]{feedDescriptor.getOfferSide()}, "KAMA",
                    new AppliedPrice[]{AppliedPrice.CLOSE}, new Object[]{30,2,30}, 3, prevBar.getTime(),0);
            kama1 =  (double[]) kama1ObjectsFeed[0];
            console.getOut().println("kama1[0]:   " + kama1[0] + " kama1[1]:   " + kama1[1] + " kama1[2]:   " + kama1[2]);
           
            Volume = prevBar.getVolume();
        }
       
    } catch (Exception e) {
            console.getErr().println(e);
            e.printStackTrace();
        }

    }

    @Override
    public void onStop() throws JFException {}
   
    @Override
    public void onMessage(IMessage message) throws JFException {}



    @Override
    public void onTick(Instrument instrument, ITick tick) throws JFException {}

    @Override
    public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {}

    @Override
    public void onAccount(IAccount account) throws JFException {}

}


Image


 
 Post subject: Re: KAMA Indicator on Renko Chart Post rating: 0   New post Posted: Tue 19 May, 2015, 18:49 
User avatar

User rating: 164
Joined: Mon 08 Oct, 2012, 10:35
Posts: 676
Location: NetherlandsNetherlands
Hi,

Probably the filters on the chart and the one in the strategy are different.
This wiki page gives you a list of things to check when you want to compare indicator results.


 
 Post subject: Re: KAMA Indicator on Renko Chart Post rating: 0   New post Posted: Wed 20 May, 2015, 10:24 
User avatar

User rating:
Joined: Fri 31 Aug, 2007, 09:17
Posts: 6139
The result of KAMA depends on the number of input and output values. Therefore in order for chart to match strategy outputs more values (for instance 400) should be calculated.


 
 Post subject: Re: KAMA Indicator on Renko Chart Post rating: 0   New post Posted: Wed 20 May, 2015, 15:10 
User avatar

User rating: 1
Joined: Sun 09 Feb, 2014, 14:42
Posts: 15
Location: Indonesia, Bandung
Thank you Tcsabina. I try to change time filter but for renko chart the indicator result (on chart) does not change maybe because renko is price based chart. I try to change time filter in time based chart. The chart change and that makes indicator result change too. Thank you for your advise.

Thank you Support. I try to change 'numberOfBarsBefore' to 400 and the strategy result generate same result as chart.
    private double [] kama1 = new double [400];

            Object[] kama1ObjectsFeed = indicators.calculateIndicator(feedDescriptor, new OfferSide[]{feedDescriptor.getOfferSide()}, "KAMA",
                    new AppliedPrice[]{AppliedPrice.CLOSE}, new Object[]{30,2,30}, 400, prevBar.getTime(),0);
            kama1 =  (double[]) kama1ObjectsFeed[0];
            console.getOut().println("kama1[397]:   " + kama1[397] + " kama1[398]:   " + kama1[398] + " kama1[399]:   " + kama1[399]);


Thank you Tcsabina and Support.


 

Jump to:  

  © 1998-2025 Dukascopy® Bank SA
On-line Currency forex trading with Swiss Forex Broker - ECN Forex Brokerage,
Managed Forex Accounts, introducing forex brokers, Currency Forex Data Feed and News
Currency Forex Trading Platform provided on-line by Dukascopy.com