Creating Standard Deviation with SMA as source in cBot Robot

Created at 06 Sep 2023, 13:39
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!
JXTA's avatar

JXTA

Joined 23.08.2023

Creating Standard Deviation with SMA as source in cBot Robot
06 Sep 2023, 13:39


Hi, is there any chance we could calculate standard deviation with SMA result in cBot ? Appreciate if anyone could me help solving it ! I want to make SMA50 as the source of Standard Deviation I can do it in the indicator but I dont know how to do it in cBot this is the indicator code

this is the indicator code

///
protected override void Initialize()
        {
            _standardDeviation = Indicators.StandardDeviation(SMA50, 50, MovingAverageType.Simple);
        }
public override void Calculate(int index)
        {
            // Calculate SMAbands
            var SMA50dev = 2*_standardDeviation.Result[index];
        }
///

how can I make this in robot?


@JXTA
Replies

PanagiotisChar
07 Sep 2023, 06:06

Here you go

        var sma = Indicators.SimpleMovingAverage(Bars.ClosePrices, 50);
        var sd = Indicators.StandardDeviation(sma.Result,50, MovingAverageType.Simple);


@PanagiotisChar

JXTA
08 Sep 2023, 06:26

RE: Creating Standard Deviation with SMA as source in cBot Robot

PanagiotisChar said: 

Here you go

        var sma = Indicators.SimpleMovingAverage(Bars.ClosePrices, 50);
        var sd = Indicators.StandardDeviation(sma.Result,50, MovingAverageType.Simple);

Thanks Panagiotis, I found another problem while creating multiple SMAs and trying to use it as source in standard deviation 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 you 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);


@JXTA

PanagiotisChar
08 Sep 2023, 06:32

var sma_1234 = (((sma1+sma2)/2) + ((sma3+sma4)/2))/2

You cannot do this, this is not pinescript :) You need to create a new indicator that will do this and return a single result as output


@PanagiotisChar