Optimization additional timeframe as parameter to optimize
Optimization additional timeframe as parameter to optimize
03 Aug 2022, 16:35
Hi,
I'm quite new in programming and have problem how to set additional timeframe from moving average as optimatization parameter? I found some symillar topics on forum but don't find solution.
Below some code:
[Parameter("MA v1 ", Group = "SMA")]
public TimeFrame Timeframev1 { get; set; }
[Parameter("Period MA v1 ", DefaultValue = 20, MinValue = 1, MaxValue = 100, Group = "SMA")]
public int Smav1 { get; set; }
private MarketSeries FloweRv1;
private MovingAverage ma1 { get; set; }
FloweRv1 = MarketData.GetSeries(Timeframev1);
ma1 = Indicators.MovingAverage(FloweRv1.Close, Smav1, MAType1);
Could you please advise how to do it?
Thank you.
Replies
baton.carat_0g
04 Aug 2022, 09:03
( Updated at: 21 Dec 2023, 09:22 )
Hi,
Screen below. How to set timeframe MA v1 as parameter for optimization?
@baton.carat_0g
paolo.panicali
04 Aug 2022, 10:47
( Updated at: 21 Dec 2023, 09:22 )
Hi this is a possible solution
// Custom Timeframe MA
using System;
using cAlgo.API;
using cAlgo.API.Internals;
using cAlgo.API.Indicators;
using cAlgo.Indicators;
namespace cAlgo
{
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class MA_MultiTimeframe : Indicator
{
public enum TimeFrame_Custom
{
Daily,
One_Hour
}
[Parameter("TimeFrameCode", DefaultValue = TimeFrame_Custom.Daily)]
public TimeFrame_Custom TimeFrameCode { get; set; }
[Parameter("Fast MA period", DefaultValue = 5)]
public int Fast_Ma_Period { get; set; }
[Parameter("MA Type", DefaultValue = MovingAverageType.Simple)]
public MovingAverageType MaType { get; set; }
[Output("FastMA_Value", LineColor = "Red")]
public IndicatorDataSeries FastMA_Value { get; set; }
private TimeFrame MyTimeFrame;
private Bars CustomTFSeries;
private MovingAverage Fast_MA, Slow_MA;
protected override void Initialize()
{
switch (TimeFrameCode)
{
case TimeFrame_Custom.Daily:
MyTimeFrame = TimeFrame.Daily;
break;
case TimeFrame_Custom.One_Hour:
MyTimeFrame = TimeFrame.Hour;
break;
}
CustomTFSeries = MarketData.GetBars(MyTimeFrame);
Fast_MA = Indicators.MovingAverage(CustomTFSeries.ClosePrices, Fast_Ma_Period, MaType);
}
public override void Calculate(int index)
{
var CustomIndex = CustomTFSeries.OpenTimes.GetIndexByTime(Bars[index].OpenTime);
FastMA_Value[index] = Fast_MA.Result[CustomIndex - 1];
}
}
}
bye
@paolo.panicali
PanagiotisCharalampous
04 Aug 2022, 10:48
Hi again,
At the moment it is not possible to optimize timeframe fields. We will add this option in an upcoming update.
Best Regards,
Panagiotis
Join us on Telegram and Facebook
@PanagiotisCharalampous
baton.carat_0g
06 Aug 2022, 10:52
( Updated at: 21 Dec 2023, 09:22 )
RE: Hi this is a possible solution
paolo.panicali said:
// Custom Timeframe MA
using System;
using cAlgo.API;
using cAlgo.API.Internals;
using cAlgo.API.Indicators;
using cAlgo.Indicators;
namespace cAlgo
{
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class MA_MultiTimeframe : Indicator
{
public enum TimeFrame_Custom
{
Daily,
One_Hour
}
[Parameter("TimeFrameCode", DefaultValue = TimeFrame_Custom.Daily)]
public TimeFrame_Custom TimeFrameCode { get; set; }
[Parameter("Fast MA period", DefaultValue = 5)]
public int Fast_Ma_Period { get; set; }
[Parameter("MA Type", DefaultValue = MovingAverageType.Simple)]
public MovingAverageType MaType { get; set; }
[Output("FastMA_Value", LineColor = "Red")]
public IndicatorDataSeries FastMA_Value { get; set; }
private TimeFrame MyTimeFrame;
private Bars CustomTFSeries;
private MovingAverage Fast_MA, Slow_MA;
protected override void Initialize()
{
switch (TimeFrameCode)
{
case TimeFrame_Custom.Daily:
MyTimeFrame = TimeFrame.Daily;
break;
case TimeFrame_Custom.One_Hour:
MyTimeFrame = TimeFrame.Hour;
break;
}
CustomTFSeries = MarketData.GetBars(MyTimeFrame);
Fast_MA = Indicators.MovingAverage(CustomTFSeries.ClosePrices, Fast_Ma_Period, MaType);
}
public override void Calculate(int index)
{
var CustomIndex = CustomTFSeries.OpenTimes.GetIndexByTime(Bars[index].OpenTime);
FastMA_Value[index] = Fast_MA.Result[CustomIndex - 1];
}
}
}
bye
Hi Paolo,
Thanks a lot! It working great :D
@baton.carat_0g
PanagiotisCharalampous
04 Aug 2022, 08:47
Hi there,
I am not sure what the problem is here. Can you elaborate a bit more?
Best Regards,
Panagiotis
Join us on Telegram and Facebook
@PanagiotisCharalampous