Cycle

MQL5 Indicators Experts

Specification

 //+------------------------------------------------------------------+

//|                                              CycleIdentifier.mq4 |

//  |  

//+------------------------------------------------------------------+


/*

Modified by Zen to add alert when top or bottom is detected on previous candle.

*/



#property copyright ""

#property link      ""


#property indicator_separate_window

#property indicator_buffers 6

#property indicator_color1 DarkGray


#property indicator_color2 Lime

#property indicator_color3 Red

#property indicator_color4 DarkGreen

#property indicator_color5 Brown


#property indicator_minimum -1.2

#property indicator_maximum 1.2


extern int       PriceActionFilter=1;

extern int       Length=3;

extern int       MajorCycleStrength=4;

extern bool      UseCycleFilter=false;

extern int       UseFilterSMAorRSI=1;

extern int       FilterStrengthSMA=12;

extern int       FilterStrengthRSI=21;

extern bool      SoundAlert = true;

extern bool      WaitForClose = true;


double LineBuffer[];

double MajorCycleBuy[];

double MajorCycleSell[];

double MinorCycleBuy[];

double MinorCycleSell[];

double ZL1[];


double CyclePrice = 0.0, Strength =0.0, SweepA = 0.0, SweepB = 0.0;

int Switch = 0, Switch2 = 0, SwitchA = 0, SwitchB = 0, SwitchC = 0, SwitchD = 0, SwitchE = 0, SwitchAA = 0, SwitchBB = 0;

double Price1BuyA = 0.0, Price2BuyA = 0.0;

int Price1BuyB = 1.0, Price2BuyB = 1.0;

double Price1SellA = 0.0, Price2SellA = 0.0;

int Price1SellB = 0.0, Price2SellB = 0.0;

bool ActiveSwitch = True, BuySwitchA = FALSE, BuySwitchB = FALSE, SellSwitchA = FALSE, SellSwitchB = FALSE;

int BuySellFac = 01;

bool Condition1, Condition2, Condition3, Condition6;


datetime TopAlertTime, BottomAlertTime;

int SignalIndex = 0;

int init()  {

   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);

   SetIndexBuffer(0,LineBuffer);

   

   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,3);

   SetIndexBuffer(1,MajorCycleBuy);

   

   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,3);

   SetIndexBuffer(2,MajorCycleSell);

   

   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,1);

   SetIndexBuffer(3,MinorCycleBuy);

   

   SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,1);

   SetIndexBuffer(4,MinorCycleSell);

   

   SetIndexStyle(5,DRAW_NONE);

   SetIndexBuffer(5,ZL1);

   

   SetIndexEmptyValue(1,0.0);

   SetIndexEmptyValue(2,0.0);

   SetIndexEmptyValue(3,0.0);

   SetIndexEmptyValue(4,0.0);

   SetIndexEmptyValue(5,0.0);  

   

   TopAlertTime = 0;

   BottomAlertTime = 0;

   if (WaitForClose)

   {

      SignalIndex = 1;

   }

   else

   {

      SignalIndex = 0;

   }

   return(0);

}


int deinit() {return(0);}


int start() {

   int counted_bars=IndicatorCounted();

   if(counted_bars<0) return(-1);

  // if(counted_bars>0) counted_bars--;

  // int position=Bars-1;

   int position=Bars-counted_bars;

   if (position<0) position=0;


   int rnglength = 250;

   double range = 0.0, srange = 0.0;

   for (int pos = position; pos >=0; pos--)

   {

      srange = 0.0;

      int j = 0;

      for (int i=0;i<rnglength;i++)

      {

         j++;

         int posr = pos + i;

         if (posr >= Bars)

            break;

            

         srange = srange + (High[posr] - Low[posr]);

      }

      range = srange / j * Length;

      int BarNumber = Bars-pos; //??????????

      if (BarNumber < 0)

            BarNumber = 0;

 

      CyclePrice = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos);

      

      if (UseFilterSMAorRSI == 1)

            ZL1[pos] = ZeroLag(CyclePrice,FilterStrengthSMA, pos);

      if (UseFilterSMAorRSI == 2)

            ZL1[pos] = ZeroLag( iRSI(NULL, 0, 14, CyclePrice, FilterStrengthRSI ), FilterStrengthRSI, pos);


      if (ZL1[pos] > ZL1[pos+1]) 

          SwitchC = 1;

      if (ZL1[pos] < ZL1[pos+1]) 

          SwitchC = 2;

          

      if (BarNumber <= 1)

      {

         if (Strength == 0)

       SweepA  = range;

      else

       SweepA = Strength;

         Price1BuyA  = CyclePrice;

         Price1SellA  = CyclePrice;

      }

      

      /* ***************************************************************** */

      

      if (BarNumber > 1)

      {

         if (Switch > -1)

         {

            if (CyclePrice < Price1BuyA)

            {

               

                  if (UseCycleFilter && (SwitchC == 2) && BuySwitchA )

                  {

          MinorCycleBuy[pos + BarNumber - Price1BuyB] = 0; //MinorBuySell

          LineBuffer[pos + BarNumber - Price1BuyB ] = 0; //line

           }

     

           if (!UseCycleFilter && BuySwitchA)

           {

          MinorCycleBuy[pos +BarNumber - Price1BuyB] = 0;

          LineBuffer[pos +BarNumber - Price1BuyB] = 0;

           }

           Price1BuyA = CyclePrice;

                  Price1BuyB = BarNumber;

                  BuySwitchA = TRUE;

            }

            else if (CyclePrice > Price1BuyA)

            {

  

         SwitchA = BarNumber - Price1BuyB;

         

           if (!UseCycleFilter)

           {

          MinorCycleBuy[pos +SwitchA] = -1;//MinorBuySell - DarkGreen

          LineBuffer[pos +SwitchA] = -1;//line

           }

     

           if (UseCycleFilter && SwitchC  == 1)

           {

          MinorCycleBuy[pos +SwitchA] = -1;  //MinorBuySell

          LineBuffer[pos +SwitchA] = -1; //line

          SwitchD = 1; 

           }

           else

           {

          SwitchD = 0;

        }

  

                  BuySwitchA = TRUE;

           double cyclePrice1 = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);

                  if (ActiveSwitch)

                  {  

                        Condition1 = CyclePrice - cyclePrice1 >= SweepA; 

                  }

                  else

                  {

                        Condition1 = CyclePrice >= cyclePrice1 * (1 + SweepA / 1000);

                  }

                  if (Condition1 && SwitchA >= BuySellFac) 

                  {

                        Switch =  - 1;

                        Price1SellA = CyclePrice;

                        Price1SellB = BarNumber;

                        SellSwitchA = FALSE;

                        BuySwitchA = FALSE;

                  }            

            }

         }

         if(Switch < 1)

         {

            if (CyclePrice > Price1SellA)

            {

               if (UseCycleFilter && SwitchC == 1 && SellSwitchA )

               {

    MinorCycleSell[pos +BarNumber - Price1SellB] = 0; //MinorBuySell

    LineBuffer[pos +BarNumber - Price1SellB ] = 0; //line

     }

     if (!UseCycleFilter && SellSwitchA )

     {

                   MinorCycleSell[pos +BarNumber - Price1SellB] = 0;//MinorBuySell

                   LineBuffer[pos +BarNumber - Price1SellB] = 0;//line

               }

               Price1SellA = CyclePrice;

               Price1SellB = BarNumber;

               SellSwitchA = TRUE;   

      }

      else if (CyclePrice < Price1SellA)

      {

     SwitchA = BarNumber - Price1SellB;

               if (!UseCycleFilter)

               {

                  MinorCycleSell[pos +SwitchA] = 1; // MinorBuySell darkRed

                  LineBuffer[pos +SwitchA] = 1; //"CycleLine"

     }

      if (UseCycleFilter && (SwitchC == 2))

      {

    MinorCycleSell[pos +SwitchA] = 1;//MinorBuySell darkRed

    LineBuffer[pos +SwitchA] = 1;//CycleLine

    SwitchD  = 2;

     } 

     else

        SwitchD  = 0;


               SellSwitchA = TRUE;

     double cyclePrice2 = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchA);

               

     if (ActiveSwitch)

    Condition1 = (cyclePrice2 - CyclePrice) >= SweepA;

     else 

    Condition1 = CyclePrice <= (cyclePrice2 * (1 - SweepA / 1000));


     if (Condition1 && SwitchA >= BuySellFac)

     {

     Switch = 1;

                  Price1BuyA = CyclePrice;

                  Price1BuyB = BarNumber;

                  SellSwitchA = FALSE;

                  BuySwitchA = FALSE;

               }

            } 

         }

      }

      

      LineBuffer[pos] = 0;

      MinorCycleBuy[pos] = 0;

      MinorCycleSell[pos] = 0;


      if (BarNumber == 1)

      {

         if (Strength == 0)

            SweepB  = range *  MajorCycleStrength;

         else

            SweepB = Strength * MajorCycleStrength;

            

         Price2BuyA = CyclePrice;

         Price2SellA = CyclePrice;

      }     

            

      if (BarNumber > 1)

      {

         if (Switch2  >  - 1)

         {

            if (CyclePrice < Price2BuyA)

            {

               if (UseCycleFilter && SwitchC == 2 && BuySwitchB )

  {

     MajorCycleBuy [pos +BarNumber - Price2BuyB] = 0; //MajorBuySell,green

//      LineBuffer[pos + BarNumber - Price2BuyB ] = 0; //line -----

               }

               if (!UseCycleFilter && BuySwitchB )

               {

                  MajorCycleBuy [pos +BarNumber - Price2BuyB] = 0;//MajorBuySell,green

  //      LineBuffer[pos + BarNumber - Price2BuyB ] = 0; //line-----------

               }

     Price2BuyA = CyclePrice;

               Price2BuyB = BarNumber;

               BuySwitchB = TRUE;

            } 

            else if (CyclePrice > Price2BuyA)

            {

     SwitchB = BarNumber - Price2BuyB;


               if (!UseCycleFilter)

               {  

                     MajorCycleBuy [pos +SwitchB] = -1; //MajorBuySell green

      //               LineBuffer[pos + SwitchB] = -1; //line--------------

               }

               if (UseCycleFilter && SwitchC  == 1)

               {

                  MajorCycleBuy [pos +SwitchB] = -1; //MajorBuySell green

     //             LineBuffer[pos + SwitchB] = -1; //line-----------------

                  SwitchE  = 1;

               } 

               else

    SwitchE  = 0;


               BuySwitchB = TRUE;

     double cyclePrice3 = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchB);

               if (ActiveSwitch) 

                  Condition6 = CyclePrice - cyclePrice3 >= SweepB;

               else

                  Condition6 = CyclePrice >= cyclePrice3 * (1 + SweepB / 1000);


     if (Condition6 && SwitchB >= BuySellFac)

     {

                     Switch2 =  - 1;

                     Price2SellA = CyclePrice;

                     Price2SellB = BarNumber;

                     SellSwitchB = FALSE;

                     BuySwitchB = FALSE;

               }

            }

         }


         if (Switch2  < 1)

         {

            if (CyclePrice  > Price2SellA )

            {

     if (UseCycleFilter && SwitchC  == 1 && SellSwitchB )

  { 

        MajorCycleSell [pos +BarNumber - Price2SellB] = 0; //"MajorBuySell",red 

//      LineBuffer[pos + BarNumber - Price2SellB ] = 0; //line -----

    }

     if (!UseCycleFilter && SellSwitchB )

  {

      MajorCycleSell [pos +BarNumber - Price2SellB] = 0;//"MajorBuySell",red 

     //              LineBuffer[pos + BarNumber - Price2SellB ] = 0; //line -----

               }

     Price2SellA = CyclePrice;

               Price2SellB = BarNumber;

               SellSwitchB = TRUE;

      }

      else if (CyclePrice < Price2SellA)

      {

               SwitchB = BarNumber - Price2SellB ;


      if (!UseCycleFilter) 

      {

        MajorCycleSell[pos + SwitchB] = 1; //"MajorBuySell",red 

     //      LineBuffer[pos + SwitchB ] = 1; //line -----

     }

        if (UseCycleFilter && SwitchC  == 2)

        {

      MajorCycleSell [pos + SwitchB] = 1; //"MajorBuySell",red 

      //      LineBuffer[pos + SwitchB ] = 1; //line -----

      SwitchE  = 2;

     }

     else

    SwitchE  = 0;


               SellSwitchB = TRUE;

           double cyclePrice4 = iMA(NULL, 0, PriceActionFilter, 0, MODE_SMMA, PRICE_CLOSE, pos + SwitchB);

     if (ActiveSwitch)

                  Condition6 = cyclePrice4 - CyclePrice >= SweepB;

     else

                  Condition6 = CyclePrice <= cyclePrice4 * (1.0 - SweepB / 1000.0);


     if (Condition6 && SwitchB >= BuySellFac)

     {

       Switch2 = 1;

                     Price2BuyA = CyclePrice;

                     Price2BuyB = BarNumber;

                     SellSwitchB = FALSE;

                     BuySwitchB = FALSE;

               }

            }

         }

      }

      LineBuffer[pos] = 0;

      MajorCycleSell[pos] = 0;

      MajorCycleBuy[pos] = 0;

   }

   

   if (SoundAlert)

   {

      if (LineBuffer[SignalIndex] == 1 && TopAlertTime < Time[SignalIndex])

      {

         SendMail("Cycle Indicator", "Cycle Top Detected at "+TimeToStr(Time[SignalIndex],TIME_DATE|TIME_MINUTES|TIME_SECONDS));

         TopAlertTime = Time[SignalIndex];

      }

      if (LineBuffer[SignalIndex] == -1 && BottomAlertTime < Time[SignalIndex])

      {

         SendMail("Cycle Indicator", "Cycle Bottom Detected at "+TimeToStr(Time[SignalIndex],TIME_DATE|TIME_MINUTES|TIME_SECONDS));

         BottomAlertTime = Time[SignalIndex];

      }

   }

   

   return(0);

}


double ZeroLag(double price, int length, int pos)

{   

   if (length < 3)

   {

      return(price);

   }

   double aa = MathExp(-1.414*3.14159 / length);

   double bb = 2*aa*MathCos(1.414*180 / length);

   double CB = bb;

   double CC = -aa*aa;

   double CA = 1 - CB - CC;

   double CD = CA*price + CB*ZL1[pos+1] + CC*ZL1[pos+2];

   return(CD);


}

I want this cycle indicator to include the name and timeframe of the currency in the email alert it sends.

Responded

1
Developer 1
Rating
(511)
Projects
978
74%
Arbitration
27
19% / 67%
Overdue
100
10%
Free
Published: 1 article, 6 codes
2
Developer 2
Rating
(12)
Projects
17
35%
Arbitration
1
0% / 100%
Overdue
3
18%
Free
3
Developer 3
Rating
Projects
2
0%
Arbitration
0
Overdue
0
Free
Published: 2 codes
4
Developer 4
Rating
(273)
Projects
396
63%
Arbitration
70
53% / 26%
Overdue
198
50%
Free
5
Developer 5
Rating
Projects
0
0%
Arbitration
0
Overdue
0
Free
6
Developer 6
Rating
(73)
Projects
257
53%
Arbitration
16
50% / 38%
Overdue
83
32%
Free
7
Developer 7
Rating
(2)
Projects
5
20%
Arbitration
2
50% / 0%
Overdue
0
Free
8
Developer 8
Rating
(63)
Projects
80
28%
Arbitration
17
12% / 76%
Overdue
48
60%
Free
Similar orders
I wish to create 2 different Tradingview strategies to MT5 ea-s! Anyone? One is based on Heiken Ashi...the other based on different combination of my strategy. It is for 1 minute charts
نازدك 30+ USD
Specify your Requirements Specification here point by point. Try to describe your requirements briefly and clearly, so that your potential developer is able to correctly assess its complexity and cost, as well as the required execution time. A bad or too generic description will result in your order being ignored, or you will spend a lot of time negotiating the details with each applicant. Remember: It is better to
**IMPORTANT: PLEASE DISREGARD THE PREVIOUS SPECIFICATION TITLED "FULL TRADING PLATFORM – APPLICATION FLOW REQUIREMENTS."** I no longer need the complete trading platform outlined in my previous **"FULL TRADING PLATFORM – APPLICATION FLOW REQUIREMENTS"** specification. Originally, I considered building a complete trading platform with educational materials, training systems, user accounts, subscription features
I have indicators on my Trading view which will create zones automatically on H4 Candle confirmation. I am getting an alert also that specific zone is created. I want them to shift in automated trading like once zone is created, limits should be place automatically on basis of that zone with given lot size, number of layers and with TP and SL. I have checked on AI to convert this in auto but they need zone in numbers
I am looking for an experienced MQL5 developer to recreate my existing MT5 Expert Advisor (DSTR Novaa). I have the original compiled EX5 file, Vantage MT5 live trading history and original Strategy Tester report. Required Trading Logic: EMA Period: 3. BUY when price crosses below EMA 3. SELL when price crosses above EMA 3. Starting Lot: 0.01 (configurable). Martingale Multiplier: 2.0. Maximum Martingale Cycle: 9
Aviation 30+ USD
I wish to say I wanna go rich and clever in everything I do and trusting the Lord and working hard will boost me up and making me the best person
I need an ready-made MT5 profitable EA for Gold. 5/7% daily I need. Before applying please make sure you have one with proven ROI, Drawdown and Live performace result. I will Pay $500 for it but I need as I want. Must needs to supply Source code if I like it. Before I purchase I will test 7 days on my live account. If It's okay then apply othersie please pass this project. Hope you will respect the time for both of
I need a EA to test many EAS all in one to see the results For back testing I've got the EA I want to see the combined EAS what is the results
Hello, I need a high-quality, reliable, and well-coded Expert Advisor (EA) for MetaTrader 5. The code must be clean, without errors, and optimized for safe trading. The robot needs to trade based on basic technical indicators. Every trade must have a strict Stop Loss and Take Profit for risk management. Please apply only if you are an experienced MT5 developer with a high rating and clean coding history. Best
VPS 80+ USD
--- Hello Developer, I need a FULL AUTO TRADING MT5 EA for XAUUSD and BTCUSD. I use Android phone only + VPS. I will only change Lot Size. IMPORTANT TIME LOGIC: 1. LONDON SESSION (09:00 - 12:00 CAT / GMT+2) - ANALYSIS ONLY: - EA must automatically mark London High and London Low (My SRA) - Mark Fixed Range Volume Profile POC for London Session - DO NOT TRADE during London, only mark levels 2. NEW YORK SESSION (15:00

Project information

Budget
20 - 50 USD
Deadline
from 14 to 30 day(s)