How can I write MA in RSI chart and set MaType ?

Created at 30 Mar 2019, 08:55
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!
IN

inky_morning

Joined 10.01.2019

How can I write MA in RSI chart and set MaType ?
30 Mar 2019, 08:55


Hi there, I apologize for my poor English.

I'm writting a bot with multi MA and 1 RSI , and , I need a single MA running calculate by RSI ,how to write it out?Thx a lot .

 

p.s. I want set diffrent type of MA in one bot , just like :

ma-price = EMA;

ma-RSI = SMA.

How to write this ?  


@inky_morning
Replies

PanagiotisCharalampous
02 Apr 2019, 11:27

Dear trader,

Thanks for posting in our forum. However your question is not clear. Do you mean that you want to pass the moving average as a source to the RSI?

Best Regards,

Panagiotis


@PanagiotisCharalampous

inky_morning
02 Apr 2019, 12:58 ( Updated at: 21 Dec 2023, 09:21 )

RE:

Panagiotis Charalampous said:

Dear trader,

Thanks for posting in our forum. However your question is not clear. Do you mean that you want to pass the moving average as a source to the RSI?

Best Regards,

Panagiotis

 

Dear Panagiotis,

Thanks a lot for your reply. I need to write my question again ... that webpage didn't save my text. So sorry for take so long time.

I'll show you what I need:

In this pic, the white MA based on price, the red one calculated by RSI. They both are MAs, but I need free to choose their MaType, like the white is EMA and the red is SMA, and I could change it freely.

I'm learning writing bot for several days, just a rookie. Here is my code :

using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;

namespace cAlgo.Robots
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class InkyMorning : Robot
    {

        #region Parameters

        [Parameter("Source")]
        public DataSeries Source { get; set; }

        [Parameter("MA Type in Price Chart", DefaultValue = MovingAverageType.Exponential)]
        public MovingAverageType MaType { get; set; }

        [Parameter("MA1 Period", DefaultValue = 5)]
        public int MA1Period { get; set; }

        [Parameter("MA2 Period", DefaultValue = 20)]
        public int MA2Period { get; set; }

        [Parameter("Volume", DefaultValue = 100, MinValue = 1)]
        public int Volume { get; set; }

        [Parameter("RSI Period", DefaultValue = 14)]
        public int RSIPeriod { get; set; }

        [Parameter("MA Type in RSI Chart", DefaultValue = MovingAverageType.Exponential)]
        public MovingAverageType MaType2 { get; set; }

        [Parameter("MA Period in RSI Chart", DefaultValue = 9)]
        public int MAR { get; set; }

        #endregion

        #region Private

        private MovingAverage MA1;
        private MovingAverage MA2;
        private MovingAverage MAR;
        private RelativeStrengthIndex RSI;
        private const string botName = "InkyMorning";

        #endregion


        #region cBot Events

        protected override void OnStart()
        {
            base.OnStart();
            MA1 = Indicators.MovingAverage(Source, MA1Period, MaType);
            MA2 = Indicators.MovingAverage(Source, MA2Period, MaType);
            RSI = Indicators.RelativeStrengthIndex(Source, RSIPeriod);
            MAR = Indicators.MovingAverage(RSI.Result, MAR, MaType2);
        }

        protected override void OnStop()
        {
            base.OnStop();
            closePositions();
        }

        protected override void OnBar()
        {
            // Put your core logic here
        }

        private void OnPositionClosed(PositionClosedEventArgs args)
        {

        }

        #endregion

        #region cBot Utils
        private int OpenedTrades
        {
            get { return Positions.FindAll(botName, Symbol).Count(); }
        }
        #endregion
    }
}

It's not finish yet... thanks again.

Best Regards,

Ziheng


@inky_morning

PanagiotisCharalampous
02 Apr 2019, 17:28

Hi Ziheng,

It seems you already do that in the cBot code. What additional help do you need?

Best Regards,

Panagiotis


@PanagiotisCharalampous

inky_morning
02 Apr 2019, 18:15

RE:

Panagiotis Charalampous said:

Hi Ziheng,

It seems you already do that in the cBot code. What additional help do you need?

Best Regards,

Panagiotis

Hi Panagiotis,

It doesn't work. I try to run the code, it stucks at MARs' lines,like parameter,private, or override.

Best Regards,

Ziheng


@inky_morning

inky_morning
02 Apr 2019, 18:30

RE:

Panagiotis Charalampous said:

Hi Ziheng,

It seems you already do that in the cBot code. What additional help do you need?

Best Regards,

Panagiotis

one more word, if I use VS edit this code, it tells "error CS0102/CS0229" on "MAR"s, I don't know how to translate the 2 errors into English...


@inky_morning

PanagiotisCharalampous
03 Apr 2019, 10:49

Hi Ziheng,

This is because you are using the MAR varuable name twice

Here

        [Parameter("MA Period in RSI Chart", DefaultValue = 9)]
        public int MAR { get; set; }

and here

  private MovingAverage MAR;

There are also other issues in the code like functions missing e.g. closePositions().

Best Regards,

Panagiotis


@PanagiotisCharalampous

inky_morning
15 Apr 2019, 10:13

RE:

Panagiotis Charalampous said:

Hi Ziheng,

This is because you are using the MAR varuable name twice

Here

        [Parameter("MA Period in RSI Chart", DefaultValue = 9)]
        public int MAR { get; set; }

and here

  private MovingAverage MAR;

There are also other issues in the code like functions missing e.g. closePositions().

Best Regards,

Panagiotis

Hi Panagiotis,

Thank you for your help, and say sorry to so long time no reply, because my baby was born these days, I must taking care of my wife and baby.

This problem is solved now, I'll finish the code first.

Thanks again and Best Regards,

Ziheng


@inky_morning