Category Trend  Published on 22/07/2024

Luc Kill zones StdDev - ICT Indicator

Description

This indicator can be used to plot KillSessions zones on the graph and also to plot the Asia,CBDR,FLOUT zone with standard extension deviations.


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, AccessRights = AccessRights.None)]
    public class KillSessions : Indicator
    {

        [Parameter("# max lines", DefaultValue=10, MinValue=0)]
        public int maxLines { get; set; }

        [Parameter("Show NewYork", DefaultValue=true)]
        public bool showNY { get; set; }
        [Parameter("Show Londre", DefaultValue=true)]
        public bool showLondre { get; set; }
        [Parameter("Show Londre Close", DefaultValue=true)]
        public bool showLondreC { get; set; }
        [Parameter("Show Asia", DefaultValue=true)]
        public bool showASIA { get; set; }
        [Parameter("Show CBDR", DefaultValue = true)]
        public bool showCBDR { get; set; }
        [Parameter("CBDR take wicks", DefaultValue = true)]
        public bool cbdrTakeWicks { get; set; }
        [Parameter("Show FLOUT", DefaultValue = true)]
        public bool showFLOUT { get; set; }
        [Parameter("Font size", DefaultValue = 8)]
        public int fontSize { get; set; }
        [Parameter("Show OpenRange",DefaultValue = false)]
        public bool showOpenRange { get; set;}
        [Parameter("Line Thickness", DefaultValue = 2, Group = "Line")]
        public int thickness { get; set; }
        [Parameter("Style", Group = "Line", DefaultValue = LineStyle.Dots)]
        public LineStyle lineStyle { get; set; }
        [Parameter("Color", DefaultValue = "#84CD9C0D", Group = "Line")]
        public Color lineColor { get; set; }
        
        [Parameter("Show CBDR Std", DefaultValue=true, Group="CBDR,ASIA,FLOUT")]
        public bool showCBDRStd { get; set; }
        [Parameter("Show ASIA Std", DefaultValue=true, Group="CBDR,ASIA,FLOUT")]
        public bool showASIAStd { get; set; }
        [Parameter("Show FLOUT Std", DefaultValue=true, Group="CBDR,ASIA,FLOUT")]
        public bool showFLOUTStd { get; set; }
        [Parameter("Auto SD", DefaultValue = true, Group="CBDR,ASIA,FLOUT")]
        public bool autoSD { get; set; }
        [Parameter("SD Count", DefaultValue = 4, MinValue=0, Group="CBDR,ASIA,FLOUT")]
        public int sdCount { get; set; }
        [Parameter("Line Style", Group = "CBDR,ASIA,FLOUT", DefaultValue = LineStyle.DotsRare)]
        public LineStyle lineSD { get; set; }
        [Parameter("Color", DefaultValue = "#84CD9C0D", Group = "CBDR,ASIA,FLOUT")]
        public Color lineColorSD { get; set; }
        [Parameter("Line Thickness", DefaultValue = 1, Group = "CBDR,ASIA,FLOUT")]
        public int thicknessSD { get; set; }
        [Parameter("Max zones", DefaultValue = 1, Group = "CBDR,ASIA,FLOUT", MinValue = 1)]
        public int maxZonesStd { get; set; }
        
        [Parameter("Liste", Group = "Indices", DefaultValue = "NAS100,AUS200,E35,EUSTX50,FRA40,HK50,JPN225,UK100,US30,US500,NETH25,CHINAH,CA60,GER40,US2000")]
        public string indicesList { get; set; }

        [Output("Main")]
        public IndicatorDataSeries Result { get; set; }
        
        private Bars minute;
        private bool isIndice = false;

        protected override void Initialize()
        {
            if (indicesList.Contains(Symbol.Name.Split(".")[0])) isIndice = true;
            if (Symbol.Name.StartsWith("X")) isIndice = true;
            
            minute = MarketData.GetBars(TimeFrame.Minute);
            
        }

        public enum CurrentAuto {
            CBDR,
            ASIA,
            FLOUT,
            none
        }
        
        public static bool Between(DateTime input, DateTime date1, DateTime date2)
        {
            return (input >= date1 && input < date2);
        }
        
        private int lastIndex=-1, startNy=-1, startASIA=-1, startLondre=-1, startLondreC=-1, cptASIA=0, cptNy=-1, cptLondre=-1, cptLondreC=-1, cptOpRan;
        private int startCBDR=-1, cptCBDR=-1, startFLOUT=-1, cptFLOUT=-1;
        private double maxNy=-1, minNy=-1, maxASIA=-1, minASIA=-1, maxLondre=-1, minLondre=-1, maxLondreC=-1, minLondreC=-1, maxNYOpen=-1, minNYOpen=-1;
        private double maxCBDR=-1, minCBDR=-1, maxFLOUT=-1, minFLOUT=-1;
        private int lastDay = -1, idxNYInd9h30=-1;
        
        public override void Calculate(int index)
        {
            if (lastIndex == index || index < 2) return;
            lastIndex = index;
            index -= 1; // bougie d'avant qui est terminée

            var barLocalDateTime = Bars[index].OpenTime.Add(Application.UserTimeOffset);
            var day = barLocalDateTime.Day;
            if (lastDay == -1 || Math.Abs(lastDay - day)>1) // weekend
            {
                lastDay = day;
            }
            day %= maxZonesStd;
                       
            // Open Range pour les indices
            if (showOpenRange && isIndice && showNY && (TimeFrame < TimeFrame.Hour || TimeFrame < TimeFrame.HeikinHour))
            {
                if (idxNYInd9h30==-1 && Between(new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,9,30,0), barLocalDateTime, Bars[index+1].OpenTime.Add(Application.UserTimeOffset)))
                {
                    idxNYInd9h30 = index;
                    maxNYOpen=-1;
                    minNYOpen=-1;
                    cptOpRan++;
                    if (maxLines != 0) cptOpRan %= maxLines;
                }
                    
                if (idxNYInd9h30 != -1)
                {
                    if (maxNYOpen==-1 || maxNYOpen < Bars[index].High) maxNYOpen = Bars[index].High;
                    if (minNYOpen==-1 || minNYOpen > Bars[index].Low) minNYOpen = Bars[index].Low;
                
                    var lbl = Chart.DrawText("Txt_ind9h30_"+cptOpRan, "Open Range", idxNYInd9h30, maxNYOpen, lineColor);
                    lbl.FontSize = fontSize;
                    lbl.VerticalAlignment = VerticalAlignment.Top;
                    lbl.HorizontalAlignment = HorizontalAlignment.Right;
                    
                    Chart.DrawTrendLine("maxind9h30_"+cptOpRan, idxNYInd9h30, maxNYOpen, index, maxNYOpen, lineColor, thickness, lineStyle);
                    Chart.DrawTrendLine("minind9h30_"+cptOpRan, idxNYInd9h30, minNYOpen, index, minNYOpen, lineColor, thickness, lineStyle);
                    // verticales
                    Chart.DrawTrendLine("leftind9h301_"+cptOpRan, idxNYInd9h30, maxNYOpen, idxNYInd9h30, Bars[idxNYInd9h30].High, lineColor, thickness, lineStyle);
                    Chart.DrawTrendLine("leftind9h302_"+cptOpRan, idxNYInd9h30, Bars[idxNYInd9h30].Low, idxNYInd9h30, minNYOpen, lineColor, thickness, lineStyle);
                    
                    Chart.DrawTrendLine("rightind9h301_"+cptOpRan, index, maxNYOpen, index, Bars[index].High, lineColor, thickness, lineStyle);
                    Chart.DrawTrendLine("rightind9h302_"+cptOpRan, index, Bars[index].Low, index, minNYOpen, lineColor, thickness, lineStyle);
                               
                    if (Between(new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,11,0,0), Bars[index+1].OpenTime.Add(Application.UserTimeOffset),Bars[index+2].OpenTime.Add(Application.UserTimeOffset)))
                    {
                        idxNYInd9h30 = -1;
                    }
                }
                
            }

            // NY AM
            if (showNY && (!isIndice && Between(barLocalDateTime, new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,7,30,0), new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,10,0,0)) && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2) ||
                isIndice && Between(barLocalDateTime, new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,8,30,0), new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,11,0,0)) && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2)))
            {
                if (maxNy==-1 || maxNy < Bars[index].High) maxNy = Bars[index].High;
                if (minNy==-1 || minNy > Bars[index].Low) minNy = Bars[index].Low;
                if (startNy == -1) 
                {
                    startNy = index;
                    cptNy++;
                    if (maxLines != 0) cptNy %= maxLines;
                }

                var lbl = Chart.DrawText("Txt_NyAM_" + cptNy, "NY AM", startNy, maxNy, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine("maxNyAM_" + cptNy, startNy, maxNy, index, maxNy, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("minNyAM_" + cptNy, startNy, minNy, index, minNy, lineColor, thickness, lineStyle);
                // verticales
                Chart.DrawTrendLine("leftNyAM1_" + cptNy, startNy, maxNy, startNy, Bars[startNy].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("leftNyAM2_" + cptNy, startNy, Bars[startNy].Low, startNy, minNy, lineColor, thickness, lineStyle);
                
                Chart.DrawTrendLine("rightNyAM1_" + cptNy, index, maxNy, index, Bars[index].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("rightNyAM2_" + cptNy, index, Bars[index].Low, index, minNy, lineColor, thickness, lineStyle);
            }
            else            
            // NY PM
            if (isIndice && showNY && Between(barLocalDateTime, new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,13,30,0), new DateTime(barLocalDateTime.Year,barLocalDateTime.Month,barLocalDateTime.Day,16,0,0)) && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
            {
                if (maxNy==-1 || maxNy < Bars[index].High) maxNy = Bars[index].High;
                if (minNy==-1 || minNy > Bars[index].Low) minNy = Bars[index].Low;
                if (startNy == -1) 
                {
                    startNy = index;
                    cptNy++;
                    if (maxLines != 0) cptNy %= maxLines;
                }

                var lbl = Chart.DrawText("Txt_NyPM_" + cptNy, "NY PM", startNy, maxNy, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine("maxNyPM_" + cptNy, startNy, maxNy, index, maxNy, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("minNyPM_" + cptNy, startNy, minNy, index, minNy, lineColor, thickness, lineStyle);
                // verticales
                Chart.DrawTrendLine("leftNyPM1_" + cptNy, startNy, maxNy, startNy, Bars[startNy].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("leftNyPM2_" + cptNy, startNy, Bars[startNy].Low, startNy, minNy, lineColor, thickness, lineStyle);
                
                Chart.DrawTrendLine("rightNyPM1_" + cptNy, index, maxNy, index, Bars[index].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("rightNyPM2_" + cptNy, index, Bars[index].Low, index, minNy, lineColor, thickness, lineStyle);
            }
            else{
                maxNy = -1;
                minNy = -1;
                startNy = -1;
            }

            if (barLocalDateTime.Hour >= 16 && barLocalDateTime.Hour <= 24-1 && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
            {
                // CBDR
                if (!isIndice && barLocalDateTime.Hour >= 16 && barLocalDateTime.Hour <= 21-1 && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
                {
                    if (cbdrTakeWicks)
                        if (maxCBDR==-1 || maxCBDR < Bars[index].High) maxCBDR = Bars[index].High;
                        if (minCBDR==-1 || minCBDR > Bars[index].Low) minCBDR = Bars[index].Low;
                    else
                    {
                        if (maxCBDR==-1 || maxCBDR < Math.Max(Bars[index].Open,Bars[index].Close)) maxCBDR = Math.Max(Bars[index].Open,Bars[index].Close);
                        if (minCBDR==-1 || minCBDR > Math.Min(Bars[index].Open,Bars[index].Close)) minCBDR = Math.Min(Bars[index].Open,Bars[index].Close);
                    }
                    if (startCBDR == -1) 
                    {
                        startCBDR = index;
                        cptCBDR++;
                        if (maxLines != 0) cptCBDR %= maxZonesStd;
                    }
                }
                
                // FLOUT
                if (!isIndice && barLocalDateTime.Hour >= 16 && barLocalDateTime.Hour <= 24-1 && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
                {
                    if (maxFLOUT==-1 || maxFLOUT < Bars[index].High) maxFLOUT = Bars[index].High;
                    if (minFLOUT==-1 || minFLOUT > Bars[index].Low) minFLOUT = Bars[index].Low;
                    if (startFLOUT == -1) 
                    {
                        startFLOUT = index;
                        cptFLOUT++;
                        if (maxLines != 0) cptFLOUT %= maxZonesStd;
                    }
                }
    
                // Asie
                if (barLocalDateTime.Hour >= 20 && barLocalDateTime.Hour <= 24-1 && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
                {
                    if (maxASIA==-1 || maxASIA < Bars[index].High) maxASIA = Bars[index].High;
                    if (minASIA == -1 || minASIA > Bars[index].Low) minASIA = Bars[index].Low;
                    if (startASIA == -1) 
                    {
                        startASIA = index;
                        cptASIA++;
                        if (maxLines != 0) cptASIA %= maxZonesStd;
                    }
                }
            }
            else
            {
                startASIA = -1;
                startCBDR = -1;
                startFLOUT = -1;
                maxASIA=-1;
                minASIA=-1;
                maxCBDR=-1;
                minCBDR=-1;
                maxFLOUT=-1;
                minFLOUT=-1;
            }
            
            // auto SD
            var _currentAuto = CurrentAuto.none;
            if (autoSD && !isIndice) {
                var factor = Symbol.TickSize*10;
                if (Symbol.Digits == 2) 
                {
                    factor = Symbol.PipSize*10;
                }
                
                if (maxCBDR-minCBDR > 15*factor && maxCBDR-minCBDR <= 30*factor) // pas plus que 40, pas de meche, idéalement 20 à 30
                    _currentAuto = CurrentAuto.CBDR;
                else
                if (maxASIA-minASIA >= 20*factor && maxASIA-minASIA <= 30*factor) // doit être en 20 et 30
                    _currentAuto = CurrentAuto.ASIA;
                else
                if (maxCBDR-minCBDR > 15*factor && maxCBDR-minCBDR <= 40*factor) // pas plus que 40, pas de meche, idéalement 20 à 30
                    _currentAuto = CurrentAuto.CBDR;
                else
                    _currentAuto = CurrentAuto.FLOUT;
            }
            
            
            if (startCBDR >= 0 && (_currentAuto == CurrentAuto.none && showCBDR || _currentAuto == CurrentAuto.CBDR) && barLocalDateTime.Hour <= 21-1)
            {
                var id = autoSD ? "AUTOSD"+day : "CBDR"+cptCBDR;
                var lbl = Chart.DrawText(id, "CBDR", startCBDR, maxCBDR, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine(id+"up", startCBDR, maxCBDR, index, maxCBDR, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine(id+"down", startCBDR, minCBDR, index, minCBDR, lineColor, thickness, lineStyle);

                if (showCBDRStd)
                {
                    var diff = maxCBDR - minCBDR;
                    for (int i=1; i<= sdCount; i++)
                    {
                        Chart.DrawTrendLine(id+"up"+i, startCBDR, maxCBDR+i*diff, index, maxCBDR+i*diff, lineColorSD, thicknessSD, lineSD);
                        Chart.DrawTrendLine(id+"down"+i, startCBDR, minCBDR-i*diff, index, minCBDR-i*diff, lineColorSD, thicknessSD, lineSD);
                    }
                }
            }
            
            if (startASIA >= 0 && (showASIA || _currentAuto == CurrentAuto.ASIA))
            {
                var id = _currentAuto == CurrentAuto.ASIA? "AUTOSD"+day: "ASIA"+cptFLOUT;
                if (isIndice) id="ASIA"+startASIA;
                var lbl = Chart.DrawText(id, "Asie", startASIA, maxASIA, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine(id+"up", startASIA, maxASIA, index, maxASIA, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine(id+"down", startASIA, minASIA, index, minASIA, lineColor, thickness, lineStyle);
                if (true)
                {
                    Chart.DrawTrendLine(id+"upleft", startASIA, maxASIA, startASIA, minASIA, lineColor, thickness, lineStyle);
                    Chart.DrawTrendLine(id+"upright", index, maxASIA, index, minASIA, lineColor, thickness, lineStyle);
                }

                if (!isIndice && showASIAStd && (_currentAuto == CurrentAuto.ASIA || _currentAuto == CurrentAuto.none))
                {
                    var diff = maxASIA - minASIA;
                    for (int i=1; i<= sdCount; i++)
                    {
                        Chart.DrawTrendLine(id+"up"+i, startASIA, maxASIA+i*diff, index, maxASIA+i*diff, lineColorSD, thicknessSD, lineSD);
                        Chart.DrawTrendLine(id+"down"+i, startASIA, minASIA-i*diff, index, minASIA-i*diff, lineColorSD, thicknessSD, lineSD);
                    }
                }
            }
            
            if (startFLOUT >= 0 && (_currentAuto == CurrentAuto.none && showFLOUT || _currentAuto == CurrentAuto.FLOUT))
            {
                var id = autoSD ? "AUTOSD"+day : "FLOUT"+cptFLOUT;
                var lbl = Chart.DrawText(id, "FLOUT ", startFLOUT, maxFLOUT, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine(id+"up", startFLOUT, maxFLOUT, index, maxFLOUT, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine(id+"down", startFLOUT, minFLOUT, index, minFLOUT, lineColor, thickness, lineStyle);

                if (showFLOUTStd)
                {
                    var diff = maxFLOUT - minFLOUT;
                    for (int i=1; i<= sdCount; i++)
                    {
                        Chart.DrawTrendLine(id+"up"+i, startFLOUT, maxFLOUT+0.5*i*diff, index, maxFLOUT+0.5*i*diff, lineColorSD, thicknessSD, lineSD);
                        Chart.DrawTrendLine(id+"down"+i, startFLOUT, minFLOUT-0.5*i*diff, index, minFLOUT-0.5*i*diff, lineColorSD, thicknessSD, lineSD);
                    }
                }
            }


            if (showLondre && barLocalDateTime.Hour >= 2 && barLocalDateTime.Hour <= 5-1 && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
            {
                if (maxLondre==-1 || maxLondre < Bars[index].High) maxLondre = Bars[index].High;
                if (minLondre==-1 || minLondre > Bars[index].Low) minLondre = Bars[index].Low;
                if (startLondre == -1) 
                {
                    startLondre = index;
                    cptLondre++;
                    if (maxLines != 0) cptLondre %= maxLines;
                }

                var lbl = Chart.DrawText("Txt_Londre_" + cptLondre, isIndice?"Londre":"Lon Op", startLondre, maxLondre, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine("maxLondre" + cptLondre, startLondre, maxLondre, index, maxLondre, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("minLondre" + cptLondre, startLondre, minLondre, index, minLondre, lineColor, thickness, lineStyle);
                // lignes verticales
                Chart.DrawTrendLine("leftLondre1" + cptLondre, startLondre, maxLondre, startLondre, Bars[startLondre].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("leftLondre2" + cptLondre, startLondre, Bars[startLondre].Low, startLondre, minLondre, lineColor, thickness, lineStyle);
                
                Chart.DrawTrendLine("rightLondre1" + cptLondre, index, maxLondre, index, Bars[index].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("rightLondre2" + cptLondre, index, Bars[index].Low, index, minLondre, lineColor, thickness, lineStyle);
            }
            else{
                maxLondre = -1;
                minLondre = -1;
                startLondre = -1;
            }

            if (!isIndice && showLondreC && barLocalDateTime.Hour >= 10 && barLocalDateTime.Hour <= 12-1 && (TimeFrame <= TimeFrame.Hour2 || TimeFrame <= TimeFrame.HeikinHour2))
            {
                if (maxLondreC==-1 || maxLondreC < Bars[index].High) maxLondreC = Bars[index].High;
                if (minLondreC==-1 || minLondreC > Bars[index].Low) minLondreC = Bars[index].Low;
                if (startLondreC == -1) 
                {
                    startLondreC = index;
                    cptLondreC++;
                    if (maxLines != 0) cptLondreC %= maxLines;
                }

                var lbl = Chart.DrawText("Txt_LondreC_" + cptLondreC, "Lon Cl", startLondreC, maxLondreC, lineColor);
                lbl.FontSize = fontSize;
                lbl.VerticalAlignment = VerticalAlignment.Top;
                lbl.HorizontalAlignment = HorizontalAlignment.Right;

                Chart.DrawTrendLine("maxLondreC" + cptLondreC, startLondreC, maxLondreC, index, maxLondreC, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("minLondreC" + cptLondreC, startLondreC, minLondreC, index, minLondreC, lineColor, thickness, lineStyle);
                // verticales
                Chart.DrawTrendLine("leftLondreC1" + cptLondreC, startLondreC, maxLondreC, startLondreC, Bars[startLondreC].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("leftLondreC2" + cptLondreC, startLondreC, Bars[startLondreC].Low, startLondreC, minLondreC, lineColor, thickness, lineStyle);
                
                Chart.DrawTrendLine("rightLondreC1" + cptLondreC, index, maxLondreC, index, Bars[index].High, lineColor, thickness, lineStyle);
                Chart.DrawTrendLine("rightLondreC2" + cptLondreC, index, Bars[index].Low, index, minLondreC, lineColor, thickness, lineStyle);
            }
            else{
                maxLondreC = -1;
                minLondreC = -1;
                startLondreC = -1;
            }
        }
    }
}

LB
lbellego

Joined on 20.06.2024

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: Luc KillSessions_withSourceCode.algo
  • Rating: 5
  • Installs: 847
  • Modified: 22/07/2024 15:24
Comments
Log in to add a comment.
NOSHAKING_TRADER's avatar
NOSHAKING_TRADER · 5 months ago

good thanks