TimeSeriesMovingAverage and historic data problem

Created at 28 Apr 2018, 05:12
How’s your experience with the cTrader Platform?
Your feedback is crucial to cTrader's development. Please take a few seconds to share your opinion and help us improve your trading experience. Thanks!
MH

MHBB

Joined 30.10.2015

TimeSeriesMovingAverage and historic data problem
28 Apr 2018, 05:12


When using a TimeSeriesMovingAverage on an hourly dataseries, it returns Nan for several days until enough data is collected, however something like ExponentialMovingAverage works straight away

Does anyone know of a workaround for this issue?


Code example:

using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class NewcBot : Robot
    {
        public ExponentialMovingAverage ema;
        public TimeSeriesMovingAverage tsma;
        public RelativeStrengthIndex RSI;
        private MarketSeries time;

        private int min;

        public bool CalcTime()
        {
            bool result = false;
            if (min != Server.Time.Minute)
            {
                result = true;
                min = Server.Time.Minute;
            }
            return (result);
        }

        protected override void OnStart()
        {
            time = MarketData.GetSeries(Symbol, TimeFrame.Hour);

            RSI = Indicators.RelativeStrengthIndex(time.Close, 14);
            ema = Indicators.ExponentialMovingAverage(RSI.Result, 200);
            tsma = Indicators.TimeSeriesMovingAverage(RSI.Result, 200);

        }

        protected override void OnBar()
        {
            if (CalcTime())
            {
                Print("tsma: " + tsma.Result.Last(0));
                Print("ema: " + ema.Result.Last(0));
            }
        }

    }
}

 


@MHBB
Replies

PanagiotisCharalampous
07 May 2018, 11:49 ( Updated at: 29 Aug 2022, 08:36 )

Hi Simon,

There is no issue here, this is the way these averages are calculated. EMA allows you to calculate from the first value while TSMA does not.

Best Regards,

Panagiotis


@PanagiotisCharalampous

MHBB
07 May 2018, 14:29

RE:

Hi Panagiotis,

Because of the limit of data loaded through GetSeries, there isn't enough data to calculate the TSMA

In a forum post before Spotware said they would add the feature to select how much data to load, is this still in progress?

Example:

MarketData.GetSeries("MARKET", TimeFrame.Hour, 200)

or something like

MarketData.GetSeries("MARKET", TimeFrame.Hour, TimeSpan.OneMonth)

This feature would be very useful

Thanks, Simon


@MHBB

PanagiotisCharalampous
07 May 2018, 17:22

Hi Simon,

This feature is in our backlog, however we do not have a release date or release version yet.

Best Regards,

Panagiotis


@PanagiotisCharalampous