Category Other  Published on 16/06/2019

Hour Area

Description

Follow my cTrader Telegram group at https://t.me/cTraderCommunity; it's a new community but it will grow fast, plus everyone can talk about cTrader indicators and algorithm without restrictions, though it is not allowed to spam commercial indicators to sell them.

This indicator colors the area between the selected hourspan.

Useful for scalpers and to highlight trading sessions or other parts of the day.

Comment and share your toughts about this algo, it would be much appreciated.


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

namespace cAlgo
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.CentralEuropeStandardTime, AccessRights = AccessRights.None)]
    public class HourArea : Indicator
    {
        [Parameter("Start Hour", DefaultValue = 9)]
        public int hour1 { get; set; }
        [Parameter("Start Minute", DefaultValue = 0)]
        public int min1 { get; set; }
        [Parameter("End Hour", DefaultValue = 18)]
        public int hour2 { get; set; }
        [Parameter("End Minute", DefaultValue = 0)]
        public int min2 { get; set; }

        [Parameter("Color", DefaultValue = "Gray")]
        public string col { get; set; }
        [Parameter("Transparency %", DefaultValue = 25)]
        public int trsp { get; set; }

        private bool draw = false;
        private int thc;

        protected override void Initialize()
        {
            trsp = trsp > 100 ? 100 : trsp < 0 ? 0 : trsp;
            hour1 = hour1 > 23 ? 23 : hour1 < 0 ? 0 : hour1;
            hour2 = hour2 > 23 ? 23 : hour2 < 0 ? 0 : hour2;
            min1 = min1 > 59 ? 59 : min1 < 0 ? 0 : min1;
            min2 = min2 > 59 ? 59 : min2 < 0 ? 0 : min2;
            Thickness();
            Chart.ZoomChanged += OnChartZoomChanged;
        }

        void OnChartZoomChanged(ChartZoomEventArgs obj)
        {
            Thickness();
            for (int i = 0; i < Chart.BarsTotal; i++)
            {
                Chart.RemoveObject("_hour" + i);
                Calculate(i);
            }
        }

        public override void Calculate(int index)
        {
            DateTime dt = MarketSeries.OpenTime[index];
            if (dt.Hour == hour1 && dt.Minute == min1)
                draw = true;
            if (dt.Hour == hour2 && dt.Minute == min2)
                draw = false;
            Color color = Color.FromName(col);
            Color alphaColor = Color.FromArgb((int)(trsp * 2.55), color.R, color.G, color.B);
            if (draw)
                Chart.DrawVerticalLine("_hour" + index, index, alphaColor, thc);
        }

        private void Thickness()
        {
            if (Chart.Zoom == 0)
            {
                thc = 1;
            }
            if (Chart.Zoom == 1)
            {
                thc = 2;
            }
            if (Chart.Zoom == 2)
            {
                thc = 4;
            }
            if (Chart.Zoom == 3)
            {
                thc = 8;
            }
            if (Chart.Zoom == 4)
            {
                thc = 16;
            }
            if (Chart.Zoom == 5)
            {
                thc = 32;
            }
            return;
        }
    }
}


CY
cysecsbin.01

Joined on 10.11.2018 Blocked

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: HourArea.algo
  • Rating: 0
  • Installs: 1867
  • Modified: 13/10/2021 09:54
Comments
Log in to add a comment.
VE
venomdoli4 · 1 year ago

Such a good game get free vbucks now try to play this game.