i need alert.dll

Created at 11 Oct 2017, 21:31
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!
HA

i need alert.dll
11 Oct 2017, 21:31


i am create indicator.

 but i need alert.dll for ctarder file.

help me please.


@hamidreza.taali@gmail.com
Replies

afhacker
11 Oct 2017, 22:33 ( Updated at: 23 Jan 2024, 13:16 )

You can use my alert library: [/algos/indicators/show/1425]


@afhacker

hamidreza.taali@gmail.com
12 Oct 2017, 02:00 ( Updated at: 23 Jan 2024, 13:16 )

RE:

afhacker said:

You can use my alert library: [/algos/indicators/show/1425]

thank.

but in need alert.dll.

where is your alert.dll file?

 

 


@hamidreza.taali@gmail.com

hamidreza.taali@gmail.com
12 Oct 2017, 02:11 ( Updated at: 23 Jan 2024, 13:16 )

RE:

afhacker said:

You can use my alert library: [/algos/indicators/show/1425]

thanks a lot.

i have erro for signal type.

Error CS0103: The name 'buy' does not exist in the current context?

 

help me..

 


@hamidreza.taali@gmail.com

afhacker
12 Oct 2017, 10:11 ( Updated at: 23 Jan 2024, 13:16 )

RE: RE:

hamidreza.taali@gmail.com said:

afhacker said:

You can use my alert library: [/algos/indicators/show/1425]

thanks a lot.

i have erro for signal type.

Error CS0103: The name 'buy' does not exist in the current context?

 

help me..

 

Can you post your code?


@afhacker

hamidreza.taali@gmail.com
13 Oct 2017, 15:26 ( Updated at: 23 Jan 2024, 13:16 )

RE: RE: RE:

afhacker said:

hamidreza.taali@gmail.com said:

afhacker said:

You can use my alert library: [/algos/indicators/show/1425]

thanks a lot.

i have erro for signal type.

Error CS0103: The name 'buy' does not exist in the current context?

 

help me..

 

Can you post your code?

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using System.Threading.Tasks;
using AlertWindow;

namespace cAlgo.Indicators
{
    [Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
    public class IchimokuKinkoHyo : Indicator
    {


        [Parameter(DefaultValue = 9)]
        public int periodFast { get; set; }

        [Parameter(DefaultValue = 26)]
        public int periodMedium { get; set; }

        [Parameter(DefaultValue = 52)]
        public int periodSlow { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementChikou { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementCloud { get; set; }

        [Parameter(DefaultValue = 26)]
        public int Displacementkijunsen { get; set; }

        [Parameter(DefaultValue = 0)]
        public int Displacemenspanb { get; set; }

        [Parameter("Text Color", DefaultValue = "Black")]
        public string TextColor { get; set; }

        [Parameter(DefaultValue = true)]
        public bool cross_tenkansenandKijunsen { get; set; }

        [Parameter(DefaultValue = false)]
        public bool cross_tenkansenandKijunsen1 { get; set; }

        [Output("TenkanSen", Color = Colors.Red)]
        public IndicatorDataSeries TenkanSen { get; set; }

        [Output("Kijunsen", Color = Colors.Blue)]
        public IndicatorDataSeries KijunSen { get; set; }

        [Output("ChikouSpan", Color = Colors.DarkViolet)]
        public IndicatorDataSeries ChikouSpan { get; set; }

        [Output("qualityline", Color = Colors.White)]
        public IndicatorDataSeries qualityline { get; set; }

        [Output("SenkouSpanB", Color = Colors.Red, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanB { get; set; }

        [Output("SenkouSpanA", Color = Colors.Green, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanA { get; set; }

        [Output("Directionline", Color = Colors.Brown)]
        public IndicatorDataSeries Directionline { get; set; }


        private Colors color = Colors.Black;
        private Alert _alarm;

        double maxfast, minfast, maxmedium, minmedium, maxslow, minslow, maxbig, minbig;

        protected override void Initialize()
        {

            Enum.TryParse(TextColor, out color);
            // The class constructor receives three parameters, Indicator name and symbol code
            // And Maximum number of alerts(it's optional and default value is 12)
            _alarm = new Alert("my ichi", Symbol.Code);
        }


        public override void Calculate(int index)
        {
            if (IsLastBar)
                DisplaySpreadOnChart();
            if ((index < periodFast) || (index < periodSlow))
            {
                return;
            }

            maxfast = MarketSeries.High[index];
            minfast = MarketSeries.Low[index];
            maxmedium = MarketSeries.High[index];
            minmedium = MarketSeries.Low[index];
            maxbig = MarketSeries.High[index];
            minbig = MarketSeries.Low[index];
            maxslow = MarketSeries.High[index];
            minslow = MarketSeries.Low[index];

            for (int i = 0; i < periodFast; i++)
            {
                if (maxfast < MarketSeries.High[index - i])
                {
                    maxfast = MarketSeries.High[index - i];
                }
                if (minfast > MarketSeries.Low[index - i])
                {
                    minfast = MarketSeries.Low[index - i];
                }
            }
            for (int i = 0; i < periodMedium; i++)
            {
                if (maxmedium < MarketSeries.High[index - i])
                {
                    maxmedium = MarketSeries.High[index - i];
                }
                if (minmedium > MarketSeries.Low[index - i])
                {
                    minmedium = MarketSeries.Low[index - i];
                }
            }

            for (int i = 0; i < periodSlow; i++)
            {
                if (maxslow < MarketSeries.High[index - i])
                {
                    maxslow = MarketSeries.High[index - i];
                }
                if (minslow > MarketSeries.Low[index - i])
                {
                    minslow = MarketSeries.Low[index - i];
                }
            }
            TenkanSen[index] = (maxfast + minfast) / 2;
            KijunSen[index] = (maxmedium + minmedium) / 2;
            ChikouSpan[index - DisplacementChikou] = MarketSeries.Close[index];
            SenkouSpanA[index + DisplacementCloud] = (TenkanSen[index] + KijunSen[index]) / 2;
            SenkouSpanB[index + DisplacementCloud] = (maxslow + minslow) / 2;
            qualityline[index + Displacementkijunsen] = (maxmedium + minmedium) / 2;
            Directionline[index] = (maxslow + minslow) / 2;

            if (KijunSen[index] == TenkanSen[index] && cross_tenkansenandKijunsen)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Red, 2, LineStyle.Dots);
                ChartObjects.RemoveObject((index - 1).ToString());
                Notifications.PlaySound("");
            }
            if (KijunSen[index] == TenkanSen[index] && SenkouSpanA[index + DisplacementCloud] == SenkouSpanB[index + DisplacementCloud])
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Blue, 2, LineStyle.Solid);
                ChartObjects.RemoveObject((index - 1).ToString());
                Notifications.PlaySound("");

            }
            if (TenkanSen.HasCrossedAbove(KijunSen, 0) || TenkanSen.HasCrossedBelow(KijunSen, 0) && cross_tenkansenandKijunsen1)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Green, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());
                Notifications.PlaySound("");

            }
            // You should use C# Task for running the code asynchronously
// Signal Type can be buy and sell or long and short(string)
// Server.Time is the time of signal(event) occurrence.
            Task showForm = Task.Factory.StartNew(() => { _alarm.Trigger(SignalType, Server.Time); });

        }
        private void DisplaySpreadOnChart()
        {
            var spread = Math.Round(Symbol.Spread / Symbol.PipSize, 2);
            string text = string.Format("{0}", spread);
            ChartObjects.DrawText("spread", "\t" + text, StaticPosition.BottomRight, Colors.Black);
            ChartObjects.DrawText("gmail", "Email:hamidrtafx@gmail.com", StaticPosition.BottomLeft, Colors.Red);
        }
    }
}

 


@hamidreza.taali@gmail.com

hamidreza.taali@gmail.com
31 Oct 2017, 15:05

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using System.Threading.Tasks;



namespace cAlgo.Indicators
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
    public class IchimokuKinkoHyo : Indicator
    {

        [Parameter(DefaultValue = 9)]
        public int periodFast { get; set; }

        [Parameter(DefaultValue = 26)]
        public int periodMedium { get; set; }

        [Parameter(DefaultValue = 52)]
        public int periodSlow { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementChikou { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementCloud { get; set; }

        [Parameter(DefaultValue = 26)]
        public int Displacementkijunsen { get; set; }

        [Parameter(DefaultValue = 0)]
        public int Displacemenspanb { get; set; }

        [Parameter("Text Color", DefaultValue = "Black")]
        public string TextColor { get; set; }

        [Parameter(DefaultValue = true)]
        public bool Common_cross { get; set; }

        [Parameter(DefaultValue = false)]
        public bool Uncommon { get; set; }

        [Parameter(DefaultValue = true)]
        public bool Common_cross_kumo { get; set; }

        [Output("TenkanSen", Color = Colors.Red)]
        public IndicatorDataSeries TenkanSen { get; set; }

        [Output("Kijunsen", Color = Colors.Blue)]
        public IndicatorDataSeries KijunSen { get; set; }

        [Output("ChikouSpan", Color = Colors.DarkViolet)]
        public IndicatorDataSeries ChikouSpan { get; set; }

        [Output("qualityline", Color = Colors.Black)]
        public IndicatorDataSeries qualityline { get; set; }

        [Output("SenkouSpanB", Color = Colors.Red, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanB { get; set; }

        [Output("SenkouSpanA", Color = Colors.Green, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanA { get; set; }

        [Output("Directionline", Color = Colors.Yellow)]
        public IndicatorDataSeries Directionline { get; set; }


        private Colors color = Colors.Black;


        double maxfast, minfast, maxmedium, minmedium, maxslow, minslow, maxbig, minbig;

        protected override void Initialize()
        {
            Alert.Manager.Indicator = this;

            Alert.Manager.WindowTheme = Alert.Manager.Theme.BaseLight;
            Alert.Manager.WindowAccent = Alert.Manager.Accent.Red;



            Enum.TryParse(TextColor, out color);

        }


        public override void Calculate(int index)
        {
            if (IsLastBar)
                DisplaySpreadOnChart();
            if ((index < periodFast) || (index < periodSlow))
            {
                return;
            }

            string signalType = string.Empty;

            maxfast = MarketSeries.High[index];
            minfast = MarketSeries.Low[index];
            maxmedium = MarketSeries.High[index];
            minmedium = MarketSeries.Low[index];
            maxbig = MarketSeries.High[index];
            minbig = MarketSeries.Low[index];
            maxslow = MarketSeries.High[index];
            minslow = MarketSeries.Low[index];

            for (int i = 0; i < periodFast; i++)
            {
                if (maxfast < MarketSeries.High[index - i])
                {
                    maxfast = MarketSeries.High[index - i];
                }
                if (minfast > MarketSeries.Low[index - i])
                {
                    minfast = MarketSeries.Low[index - i];
                }
            }
            for (int i = 0; i < periodMedium; i++)
            {
                if (maxmedium < MarketSeries.High[index - i])
                {
                    maxmedium = MarketSeries.High[index - i];
                }
                if (minmedium > MarketSeries.Low[index - i])
                {
                    minmedium = MarketSeries.Low[index - i];
                }
            }

            for (int i = 0; i < periodSlow; i++)
            {
                if (maxslow < MarketSeries.High[index - i])
                {
                    maxslow = MarketSeries.High[index - i];
                }
                if (minslow > MarketSeries.Low[index - i])
                {
                    minslow = MarketSeries.Low[index - i];
                }
            }
            TenkanSen[index] = (maxfast + minfast) / 2;
            KijunSen[index] = (maxmedium + minmedium) / 2;
            ChikouSpan[index - DisplacementChikou] = MarketSeries.Close[index];
            SenkouSpanA[index + DisplacementCloud] = (TenkanSen[index] + KijunSen[index]) / 2;
            SenkouSpanB[index + DisplacementCloud] = (maxslow + minslow) / 2;
            qualityline[index + Displacementkijunsen] = (maxmedium + minmedium) / 2;
            Directionline[index] = (maxslow + minslow) / 2;

            if (KijunSen[index] == TenkanSen[index] && Common_cross)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Red, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());
                signalType = "Common_cross";
                Alert.Manager.Trigger(TradeType.Buy, Symbol, MarketSeries.TimeFrame, Server.Time, "Test");
            }
            if (TenkanSen.HasCrossedAbove(KijunSen, 0) && Uncommon)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Green, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());
                signalType = "Uncommon";
                Alert.Manager.Trigger(TradeType.Buy, Symbol, MarketSeries.TimeFrame, Server.Time, "Test");

            }
            if (KijunSen[index] == TenkanSen[index] && SenkouSpanA[index + DisplacementCloud] == SenkouSpanB[index + DisplacementCloud] && Common_cross_kumo)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Blue, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());
                signalType = "Common_cross_kumo";
                Alert.Manager.Trigger(TradeType.Buy, Symbol, MarketSeries.TimeFrame, Server.Time, "Test");
            }

        }

        private void DisplaySpreadOnChart()
        {
            var spread = Math.Round(Symbol.Spread / Symbol.PipSize, 2);
            string text = string.Format("{0}", spread);
            ChartObjects.DrawText("spread", "\t" + text, StaticPosition.BottomRight, Colors.Black);
        }
    }
}


@hamidreza.taali@gmail.com

afhacker
31 Oct 2017, 17:28

You can download the compiled version of indicator from this link: https://drive.google.com/open?id=0B93GK1Ip4NSMdVVLbThRWjhMZmM

 

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using System.Threading.Tasks;

namespace cAlgo.Indicators
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
    public class IchimokuKinkoHyo : Indicator
    {
        private int alertBarIndex = 0;

        [Parameter(DefaultValue = 9)]
        public int periodFast { get; set; }

        [Parameter(DefaultValue = 26)]
        public int periodMedium { get; set; }

        [Parameter(DefaultValue = 52)]
        public int periodSlow { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementChikou { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementCloud { get; set; }

        [Parameter(DefaultValue = 26)]
        public int Displacementkijunsen { get; set; }

        [Parameter(DefaultValue = 0)]
        public int Displacemenspanb { get; set; }

        [Parameter("Text Color", DefaultValue = "Black")]
        public string TextColor { get; set; }

        [Parameter(DefaultValue = true)]
        public bool Common_cross { get; set; }

        [Parameter(DefaultValue = false)]
        public bool Uncommon { get; set; }

        [Parameter(DefaultValue = true)]
        public bool Common_cross_kumo { get; set; }

        [Output("TenkanSen", Color = Colors.Red)]
        public IndicatorDataSeries TenkanSen { get; set; }

        [Output("Kijunsen", Color = Colors.Blue)]
        public IndicatorDataSeries KijunSen { get; set; }

        [Output("ChikouSpan", Color = Colors.DarkViolet)]
        public IndicatorDataSeries ChikouSpan { get; set; }

        [Output("qualityline", Color = Colors.Black)]
        public IndicatorDataSeries qualityline { get; set; }

        [Output("SenkouSpanB", Color = Colors.Red, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanB { get; set; }

        [Output("SenkouSpanA", Color = Colors.Green, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanA { get; set; }

        [Output("Directionline", Color = Colors.Yellow)]
        public IndicatorDataSeries Directionline { get; set; }


        private Colors color = Colors.Black;


        double maxfast, minfast, maxmedium, minmedium, maxslow, minslow, maxbig, minbig;

        protected override void Initialize()
        {
            Alert.Manager.Indicator = this;

            Alert.Manager.WindowTheme = Alert.Manager.Theme.BaseLight;
            Alert.Manager.WindowAccent = Alert.Manager.Accent.Red;

            Enum.TryParse(TextColor, out color);
        }


        public override void Calculate(int index)
        {
            if (IsLastBar)
                DisplaySpreadOnChart();
            if ((index < periodFast) || (index < periodSlow))
            {
                return;
            }

            string signalType = string.Empty;

            maxfast = MarketSeries.High[index];
            minfast = MarketSeries.Low[index];
            maxmedium = MarketSeries.High[index];
            minmedium = MarketSeries.Low[index];
            maxbig = MarketSeries.High[index];
            minbig = MarketSeries.Low[index];
            maxslow = MarketSeries.High[index];
            minslow = MarketSeries.Low[index];

            for (int i = 0; i < periodFast; i++)
            {
                if (maxfast < MarketSeries.High[index - i])
                {
                    maxfast = MarketSeries.High[index - i];
                }
                if (minfast > MarketSeries.Low[index - i])
                {
                    minfast = MarketSeries.Low[index - i];
                }
            }
            for (int i = 0; i < periodMedium; i++)
            {
                if (maxmedium < MarketSeries.High[index - i])
                {
                    maxmedium = MarketSeries.High[index - i];
                }
                if (minmedium > MarketSeries.Low[index - i])
                {
                    minmedium = MarketSeries.Low[index - i];
                }
            }

            for (int i = 0; i < periodSlow; i++)
            {
                if (maxslow < MarketSeries.High[index - i])
                {
                    maxslow = MarketSeries.High[index - i];
                }
                if (minslow > MarketSeries.Low[index - i])
                {
                    minslow = MarketSeries.Low[index - i];
                }
            }
            TenkanSen[index] = (maxfast + minfast) / 2;
            KijunSen[index] = (maxmedium + minmedium) / 2;
            ChikouSpan[index - DisplacementChikou] = MarketSeries.Close[index];
            SenkouSpanA[index + DisplacementCloud] = (TenkanSen[index] + KijunSen[index]) / 2;
            SenkouSpanB[index + DisplacementCloud] = (maxslow + minslow) / 2;
            qualityline[index + Displacementkijunsen] = (maxmedium + minmedium) / 2;
            Directionline[index] = (maxslow + minslow) / 2;

            if (KijunSen[index] == TenkanSen[index] && Common_cross)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Red, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());

                TriggerAlert(TradeType.Sell, index, "Common_cross");
            }
            if (TenkanSen.HasCrossedAbove(KijunSen, 0) && Uncommon)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Green, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());

                TriggerAlert(TradeType.Sell, index, "Uncommon");
            }
            if (KijunSen[index] == TenkanSen[index] && SenkouSpanA[index + DisplacementCloud] == SenkouSpanB[index + DisplacementCloud] && Common_cross_kumo)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Blue, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());

                TriggerAlert(TradeType.Sell, index, "Common_cross_kumo");
            }
        }

        private void DisplaySpreadOnChart()
        {
            var spread = Math.Round(Symbol.Spread / Symbol.PipSize, 2);
            string text = string.Format("{0}", spread);
            ChartObjects.DrawText("spread", "\t" + text, StaticPosition.BottomRight, Colors.Black);
        }

        private void TriggerAlert(TradeType alertType, int index, string msg)
        {
            if (index != alertBarIndex && IsLastBar && IsRealTime)
            {
                alertBarIndex = index;

                Alert.Manager.Trigger(alertType, Symbol, MarketSeries.TimeFrame, Server.Time, msg);
            }
        }
    }
}

 


@afhacker

hamidreza.taali@gmail.com
31 Oct 2017, 21:24

RE:

afhacker said:

You can download the compiled version of indicator from this link: https://drive.google.com/open?id=0B93GK1Ip4NSMdVVLbThRWjhMZmM

 

using System;
using cAlgo.API;
using cAlgo.API.Indicators;
using System.Threading.Tasks;

namespace cAlgo.Indicators
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
    public class IchimokuKinkoHyo : Indicator
    {
        private int alertBarIndex = 0;

        [Parameter(DefaultValue = 9)]
        public int periodFast { get; set; }

        [Parameter(DefaultValue = 26)]
        public int periodMedium { get; set; }

        [Parameter(DefaultValue = 52)]
        public int periodSlow { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementChikou { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementCloud { get; set; }

        [Parameter(DefaultValue = 26)]
        public int Displacementkijunsen { get; set; }

        [Parameter(DefaultValue = 0)]
        public int Displacemenspanb { get; set; }

        [Parameter("Text Color", DefaultValue = "Black")]
        public string TextColor { get; set; }

        [Parameter(DefaultValue = true)]
        public bool Common_cross { get; set; }

        [Parameter(DefaultValue = false)]
        public bool Uncommon { get; set; }

        [Parameter(DefaultValue = true)]
        public bool Common_cross_kumo { get; set; }

        [Output("TenkanSen", Color = Colors.Red)]
        public IndicatorDataSeries TenkanSen { get; set; }

        [Output("Kijunsen", Color = Colors.Blue)]
        public IndicatorDataSeries KijunSen { get; set; }

        [Output("ChikouSpan", Color = Colors.DarkViolet)]
        public IndicatorDataSeries ChikouSpan { get; set; }

        [Output("qualityline", Color = Colors.Black)]
        public IndicatorDataSeries qualityline { get; set; }

        [Output("SenkouSpanB", Color = Colors.Red, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanB { get; set; }

        [Output("SenkouSpanA", Color = Colors.Green, LineStyle = LineStyle.Lines)]
        public IndicatorDataSeries SenkouSpanA { get; set; }

        [Output("Directionline", Color = Colors.Yellow)]
        public IndicatorDataSeries Directionline { get; set; }


        private Colors color = Colors.Black;


        double maxfast, minfast, maxmedium, minmedium, maxslow, minslow, maxbig, minbig;

        protected override void Initialize()
        {
            Alert.Manager.Indicator = this;

            Alert.Manager.WindowTheme = Alert.Manager.Theme.BaseLight;
            Alert.Manager.WindowAccent = Alert.Manager.Accent.Red;

            Enum.TryParse(TextColor, out color);
        }


        public override void Calculate(int index)
        {
            if (IsLastBar)
                DisplaySpreadOnChart();
            if ((index < periodFast) || (index < periodSlow))
            {
                return;
            }

            string signalType = string.Empty;

            maxfast = MarketSeries.High[index];
            minfast = MarketSeries.Low[index];
            maxmedium = MarketSeries.High[index];
            minmedium = MarketSeries.Low[index];
            maxbig = MarketSeries.High[index];
            minbig = MarketSeries.Low[index];
            maxslow = MarketSeries.High[index];
            minslow = MarketSeries.Low[index];

            for (int i = 0; i < periodFast; i++)
            {
                if (maxfast < MarketSeries.High[index - i])
                {
                    maxfast = MarketSeries.High[index - i];
                }
                if (minfast > MarketSeries.Low[index - i])
                {
                    minfast = MarketSeries.Low[index - i];
                }
            }
            for (int i = 0; i < periodMedium; i++)
            {
                if (maxmedium < MarketSeries.High[index - i])
                {
                    maxmedium = MarketSeries.High[index - i];
                }
                if (minmedium > MarketSeries.Low[index - i])
                {
                    minmedium = MarketSeries.Low[index - i];
                }
            }

            for (int i = 0; i < periodSlow; i++)
            {
                if (maxslow < MarketSeries.High[index - i])
                {
                    maxslow = MarketSeries.High[index - i];
                }
                if (minslow > MarketSeries.Low[index - i])
                {
                    minslow = MarketSeries.Low[index - i];
                }
            }
            TenkanSen[index] = (maxfast + minfast) / 2;
            KijunSen[index] = (maxmedium + minmedium) / 2;
            ChikouSpan[index - DisplacementChikou] = MarketSeries.Close[index];
            SenkouSpanA[index + DisplacementCloud] = (TenkanSen[index] + KijunSen[index]) / 2;
            SenkouSpanB[index + DisplacementCloud] = (maxslow + minslow) / 2;
            qualityline[index + Displacementkijunsen] = (maxmedium + minmedium) / 2;
            Directionline[index] = (maxslow + minslow) / 2;

            if (KijunSen[index] == TenkanSen[index] && Common_cross)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Red, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());

                TriggerAlert(TradeType.Sell, index, "Common_cross");
            }
            if (TenkanSen.HasCrossedAbove(KijunSen, 0) && Uncommon)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Green, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());

                TriggerAlert(TradeType.Sell, index, "Uncommon");
            }
            if (KijunSen[index] == TenkanSen[index] && SenkouSpanA[index + DisplacementCloud] == SenkouSpanB[index + DisplacementCloud] && Common_cross_kumo)
            {
                ChartObjects.DrawVerticalLine(index.ToString(), MarketSeries.OpenTime[index], Colors.Blue, 1, LineStyle.DotsVeryRare);
                ChartObjects.RemoveObject((index - 1).ToString());

                TriggerAlert(TradeType.Sell, index, "Common_cross_kumo");
            }
        }

        private void DisplaySpreadOnChart()
        {
            var spread = Math.Round(Symbol.Spread / Symbol.PipSize, 2);
            string text = string.Format("{0}", spread);
            ChartObjects.DrawText("spread", "\t" + text, StaticPosition.BottomRight, Colors.Black);
        }

        private void TriggerAlert(TradeType alertType, int index, string msg)
        {
            if (index != alertBarIndex && IsLastBar && IsRealTime)
            {
                alertBarIndex = index;

                Alert.Manager.Trigger(alertType, Symbol, MarketSeries.TimeFrame, Server.Time, msg);
            }
        }
    }
}

thanks a lot.

iam update.

but not work. why?

 

 


@hamidreza.taali@gmail.com

afhacker
02 Nov 2017, 16:04 ( Updated at: 21 Dec 2023, 09:20 )

Hi Hamid Reza,

There were some bugs in Alert library that I fixed and the new version is available, you can download your indicator which uses the new version of the alert library from here:

https://drive.google.com/open?id=0B93GK1Ip4NSMWldXRTljRTZ1ZEk


@afhacker

hamidreza.taali@gmail.com
02 Nov 2017, 19:18 ( Updated at: 21 Dec 2023, 09:20 )

RE:

afhacker said:

Hi Hamid Reza,

There were some bugs in Alert library that I fixed and the new version is available, you can download your indicator which uses the new version of the alert library from here:

https://drive.google.com/open?id=0B93GK1Ip4NSMWldXRTljRTZ1ZEk

thanks.
i am update alert library and indicator. but not working again?

 


@hamidreza.taali@gmail.com

afhacker
02 Nov 2017, 20:07

Can you give me your email address? I will invite you to our Slack.


@afhacker

hamidreza.taali@gmail.com
02 Nov 2017, 20:29 ( Updated at: 23 Jan 2024, 13:16 )

RE:

afhacker said:

Can you give me your email address? I will invite you to our Slack.

[hamidreza.taali@gmail.com]


@hamidreza.taali@gmail.com

afhacker
03 Nov 2017, 07:27

I sent you an invitation.


@afhacker

... Deleted by UFO ...