[Help] Problem while creating multiple SMAs and trying to use it as source in Standard Deviation in Robot
            [Help] Problem while creating multiple SMAs and trying to use it as source in Standard Deviation in Robot
            
                 15 Oct 2023, 03:47
            
                    
Hi guys, I found a problem while creating multiple SMAs and trying to use it as source in standard deviation in robot it’s not possible to add up these SMAs, it says operator ‘+’ cannot be applied to operands of type ’SimpleMoving Average’ and ’SimpleMoving Average’, can anyone help me with the problem?
eg:
var sma1 = Indicators.SimpleMovingAverage(Bars.ClosePrices, 50);
var sma2 = Indicators.SimpleMovingAverage(Bars.ClosePrices, 100);
var sma3 = Indicators.SimpleMovingAverage(Bars.ClosePrices, 150);
var sma4 = Indicators.SimpleMovingAverage(Bars.ClosePrices, 200);
var sma_1234 = (((sma1+sma2)/2) + ((sma3+sma4)/2))/2;
var sd = Indicators.StandardDeviation(sma_1234.Result,50, MovingAverageType.Simple);
var sma_1234 = (((sma1+sma2)/2) + ((sma3+sma4)/2))/2 this is the part where it cannot do it in robot it has to be done it alone in an new indicator calculate and return a single result as output, but I am too new to code, could anyone please help with the indicator code? Much appreciated !
This is my SMA code:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using cAlgo.API;using cAlgo.API.Collections;using cAlgo.API.Indicators;using cAlgo.API.Internals;namespace cAlgo{    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AutoRescale = true, AccessRights = AccessRights.None)]    public class SMAsExample : Indicator    {        //SMA        [Parameter("SMA Source")]        public DataSeries SMASource { get; set; }                [Parameter(DefaultValue = 10)]        public int SMAPeriods10 { get; set; }        [Parameter(DefaultValue = 20)]        public int SMAPeriods20 { get; set; }        [Parameter(DefaultValue = 50)]        public int SMAPeriods50 { get; set; }        [Parameter(DefaultValue = 100)]        public int SMAPeriods100 { get; set; }        [Parameter(DefaultValue = 150)]        public int SMAPeriods150 { get; set; }        [Parameter(DefaultValue = 200)]        public int SMAPeriods200 { get; set; }                [Output("SMA10"             , LineColor = "White"           , PlotType = PlotType.Line  , Thickness = 1)]        public IndicatorDataSeries SMA10 { get; set; }                                                                                                                   [Output("SMA20"             , LineColor = "White"           , PlotType = PlotType.Line  , Thickness = 1)]        public IndicatorDataSeries SMA20 { get; set; }                                      [Output("SMA_1_line"        , LineColor = "Yellow"          , PlotType = PlotType.Line  , Thickness = 2)]        public IndicatorDataSeries SMA_1_line { get; set; }                                                                                                                   [Output("SMA_2_line"        , LineColor = "Orange"          , PlotType = PlotType.Line  , Thickness = 2)]        public IndicatorDataSeries SMA_2_line { get; set; }                                                                                                                   [Output("SMA_3_line"        , LineColor = "Red"             , PlotType = PlotType.Line  , Thickness = 2)]        public IndicatorDataSeries SMA_3_line { get; set; }                                                                                                                   [Output("SMA_4_line"        , LineColor = "Blue"            , PlotType = PlotType.Line  , Thickness = 2)]        public IndicatorDataSeries SMA_4_line { get; set; }                                                                                                                   [Output("SMA_12_line"            , LineColor = "Green"      , PlotType = PlotType.Line  , Thickness = 2)]        public IndicatorDataSeries SMA_12_line { get; set; }                                                                                                                  [Output("SMA_23_line"            , LineColor = "Purple"     , PlotType = PlotType.Line  , Thickness = 2)]        public IndicatorDataSeries SMA_23_line { get; set; }        [Output("SMA_1234_line"          , LineColor = "Cyan"       , PlotType = PlotType.Points, Thickness = 1)]        public IndicatorDataSeries SMA_1234_line { get; set; }                public SimpleMovingAverage _sma10           ;        public SimpleMovingAverage _sma20           ;        public SimpleMovingAverage _sma1            ;        public SimpleMovingAverage _sma2            ;        public SimpleMovingAverage _sma3            ;        public SimpleMovingAverage _sma4            ;        public IndicatorDataSeries _sma1234         ;                protected override void Initialize()        {            _sma10   = Indicators.SimpleMovingAverage(SMASource, SMAPeriods10)   ;            _sma20   = Indicators.SimpleMovingAverage(SMASource, SMAPeriods20)  ;            _sma1    = Indicators.SimpleMovingAverage(SMASource, SMAPeriods50)  ;            _sma2    = Indicators.SimpleMovingAverage(SMASource, SMAPeriods100)  ;            _sma3    = Indicators.SimpleMovingAverage(SMASource, SMAPeriods150) ;            _sma4    = Indicators.SimpleMovingAverage(SMASource, SMAPeriods200) ;        }        public override void Calculate(int index)        {            SMA10[index]            = _sma10.Result[index]  ;            SMA20[index]            = _sma20.Result[index]  ;            SMA_1_line[index]       = _sma1.Result[index]   ;            SMA_2_line[index]       = _sma2.Result[index]   ;            SMA_3_line[index]       = _sma3.Result[index]   ;            SMA_4_line[index]       = _sma4.Result[index]   ;                        // Calculate additional SMAs            SMA_12_line[index]    = (_sma1.Result[index]+_sma2.Result[index])/2;            SMA_23_line[index]    = (_sma3.Result[index]+_sma4.Result[index])/2;            SMA_1234_line[index]  = (((_sma1.Result[index]+_sma2.Result[index])/2) + ((_sma3.Result[index]+_sma4.Result[index])/2))/2;        }    }}
Please help, thanks in advanced!

PanagiotisChar
16 Oct 2023, 04:18
Hi there,
I don't see what the problem is. The indicator is working fine.
Best regards,
cTrader Team
@PanagiotisChar