OnBar event and ticks volume

Created at 09 Feb 2019, 18:56
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!
ER

erisoftdevelop

Joined 09.02.2019

OnBar event and ticks volume
09 Feb 2019, 18:56


Hello Ctrader Coders

I am thinking to build a Robot that makes operation based:

0- Timeframe h1.

1- Candle close.

2- Volume of Ticks.

As Image below.

Our moderator of this forum propose this code to get the event candle event onBar. That is fine I got it.

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)]
    public class NewcBot : Robot
    {
        [Parameter(DefaultValue = 0.0)]
        public double Parameter { get; set; }
 
        protected override void OnStart()
        {
            // Put your initialization logic here
        }
 
        protected override void OnTick()
        {
            // Put your core logic here
        }
 
        protected override void OnStop()
        {
            // Put your deinitialization logic here
        }

         protected override void OnBar()
        {
            // Ticks summarized goes here.
        }
    }
}

I have two questions.

1- OnBar event triggers when a new Bar comes to the chart or when a latest bar closes?

2-  How I can get the volume of ticks as number like the provided example of the chart(Tick Bar Up) in a proggramatic way.?

I really appreciate every help provided.


@erisoftdevelop
Replies

PanagiotisCharalampous
11 Feb 2019, 10:22

Hi erisoftdevelop,

Thanks for posting in our forum. Regarding your questions

1) As soon as a new Bar comes to the chart.

2) You can use  MarketSeries.TickVolume. See below an example 

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 NewcBot : Robot
    {
        [Parameter(DefaultValue = 0.0)]
        public double Parameter { get; set; }

        protected override void OnStart()
        {
            // Put your initialization logic here
        }

        protected override void OnBar()
        {
            Print(MarketSeries.TickVolume.Last(1));
        }

        protected override void OnStop()
        {
            // Put your deinitialization logic here
        }
    }
}

Best Regards,

Panagiotis


@PanagiotisCharalampous

erisoftdevelop
12 Feb 2019, 17:31

Thanks Panagiotis Charalampous

Can you answer me a couple of questions please:

1- How can i get the data Open, High, Low, Close,Tick Volume for the 10bars before the current bar?

2- Is there any way to get the count of the ticks realtime of the current bar?

3- How to get the data Open, High, Low, Close, Tick Volume using Date and Time(Example get the Data of the bar Yesterday 10:15am)?

 

Thanks in advance for the answers. And you do a great job.

 

Erick Alfaro


@erisoftdevelop

PanagiotisCharalampous
13 Feb 2019, 09:53

Hi Erick,

1. Through Market Series. An example for let's say close price is MarketSeries.Close.Last(10)

2. Use MarketSeries.TickVolume.LastValue

3. An example to get the close price for 24 hours before MarketSeries.Close[MarketSeries.OpenTime.GetIndexByTime(Server.Time.AddDays(-1))];

Best Regards,

Panagiotis


@PanagiotisCharalampous