Can't set timeframe parameter for this indicator
Can't set timeframe parameter for this indicator
28 Feb 2016, 16:48
Hi, having problems with this code.
I need to be able to select the timeframe for this indicator.
When I do reference the parameter no trades are made at all.
using System; using System.Linq; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Internals; using cAlgo.Indicators; namespace cAlgo.Indicators { [Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, ScalePrecision = 0)] [Levels(0, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 80, 90, 100, 200, 300)] public class PipsATRIndicator : Indicator { #region Indicator parameters [Parameter("Atr TimeFrame")] public TimeFrame AtrTimeFrame { get; set; } [Parameter("ATR Period", DefaultValue = 20)] public int AtrPeriod { get; set; } [Parameter("ATR MAType")] public MovingAverageType AtrMaType { get; set; } [Output("Pips ATR", Color = Colors.SteelBlue)] public IndicatorDataSeries Result { get; set; } #endregion private AverageTrueRange atr; protected override void Initialize() { atr = Indicators.AverageTrueRange(MarketData.GetSeries(AtrTimeFrame), AtrPeriod, AtrMaType); } public override void Calculate(int index) { Result[index] = atr.Result[index] / Symbol.PipSize; } } }
When I set the following in cBot no trades are made.
[Parameter()]
public TimeFrame AtrTimeFrame{ get; set; }
The indicator is working with the following in onstart()
pipsATR = Indicators.GetIndicator<PipsATRIndicator>(TimeFrame, AtrPeriod, AtrMaType);
But when I set it to
pipsATR = Indicators.GetIndicator<PipsATRIndicator>(AtrTimeFrame, AtrPeriod, AtrMaType);
Positions don't open.
I'm sure its simple, but I just cant seem to get it to work.
Thanks for any advice
Replies
ColossusFX
06 Mar 2016, 17:41
Thanks for the help.
It works, but optimization went from 2hrs to 12hrs!
Thanks again
@ColossusFX
croucrou
29 Feb 2016, 20:31
RE:
I think you have defined "TimeFrame" as a type of "AtrTimeFrame" and not as a value.
Default parameter seems to be the actual value. Try to set its default parameter as e.g. "TimeFrame.Hour" and see if that works.
@croucrou