[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