Cycle

İş Gereklilikleri

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

//|                                              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.

Yanıtlandı

1
Geliştirici 1
Derecelendirme
(504)
Projeler
971
74%
Arabuluculuk
27
19% / 67%
Süresi dolmuş
100
10%
Çalışıyor
Yayınlandı: 1 makale, 6 kod
2
Geliştirici 2
Derecelendirme
(12)
Projeler
17
35%
Arabuluculuk
1
0% / 100%
Süresi dolmuş
3
18%
Serbest
3
Geliştirici 3
Derecelendirme
Projeler
2
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
Yayınlandı: 2 kod
4
Geliştirici 4
Derecelendirme
(273)
Projeler
396
63%
Arabuluculuk
70
53% / 26%
Süresi dolmuş
198
50%
Serbest
5
Geliştirici 5
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
6
Geliştirici 6
Derecelendirme
(73)
Projeler
257
53%
Arabuluculuk
16
50% / 38%
Süresi dolmuş
83
32%
Serbest
7
Geliştirici 7
Derecelendirme
(2)
Projeler
5
20%
Arabuluculuk
2
50% / 0%
Süresi dolmuş
0
Serbest
8
Geliştirici 8
Derecelendirme
(63)
Projeler
80
28%
Arabuluculuk
17
12% / 76%
Süresi dolmuş
48
60%
Serbest
Benzer siparişler
Hello, I’m looking for an experienced MQL4/MQL5 developer to work with me on an ongoing basis. My clients request services such as: Converting TradingView Pine Script indicators/strategies into MT4 or MT5 Expert Advisors Converting MT4 EAs to MT5 (and MT5 to MT4) Compiling and fixing existing MQL4 / MQL5 EA code Adding simple features like alerts, SL/TP, lot size, and basic money management This job is for
I am looking someone to create an EA based on my MACD Histo indicator / strategy from Pinescript. I will send it to you for you to replicate. The EA shall have: - Divergence length in bars, min and max values. - Pivot Logic - Entry on close of divergence confirmation bar. - Dynamic lot size dependent on SL/TP, in monetary value. - SL / TP in percent away from entry, separate values for long and short. - Time, day and
Hello, I have a breakout EA with reversal logic. I own the full source code for both MT4 and MT5 versions. I need the modifications implemented for both MT4 and MT5 versions. I need several modifications: – Multiple reversals with configurable parameters – Breakeven functionality – Entry only after candle close beyond range + offset – Time-based activation – Alternative offset calculation logic – Automatic close at
I'm looking for an experienced developer who can program advance EA, designed to help in optimizing trading strategies and frequent trading to maximize profit opportunities. The EA should be program based on price action and candle stick dependency which opens to number of trades per signal. KEY FEATURES: * Position Hedging: EA allows users to hedge their positions based on individual risk tolerance and market
u have to make an MT 5 EA of Renko + Super Trend buy when Super trend is bullish and renko make bull bars for sell opposite , multi trades feature : if trend buy in super trend , EA should coninue buy like griding at bull bars not bear bars same but opposite for sell trailing stop , time filter , new filter , martingale , grid , account management so many basic settings should be given , screenshots and cotent should
simple automated trading system with adaptive risk management and trend-based execution. The EA manages trades with dynamic position handling and built-in stability filters. Designed for single-position trading and disciplined execution 30 usd budget
PROJECT DESCRIPTION Looking for 1 experienced MQL5 developer to build 2 Expert Advisors for MetaTrader 5, targeting XAUUSD and major currency pairs. Strong preference for a single developer handling both EAs to maximize code reuse, reduce cost, and ensure consistency. EA1 — Grid Martingale Pro · Buy/Sell grid with Fixed or ATR Dynamic distance (ATR read once per fill, stored in grid_step_at_open[]) · Gap
Hi I have a simple task (hopefully) I have a custom strategy that I built with the help of Claude Anthropic - everything is finished and I zipped it with power shell but when importing it NT8 gives me the error message that the file was made from an older, incompatible version or not a NinjaScript. My folder structure is correct as far I can see so I don't know what the issues is and it's costing me too much to go
Do you happen to have a profitable strategy for MNQ? it is urgent if any one can help me with this i will be happy to discuss with you and move forward to pay for it kindly let me know the amount thank fill free to bid
Looking for an experienced MQL5 developer to design and develop a custom Expert Advisor (EA) for MetaTrader 5. The purpose of this EA is not just automated trading, but also to help me better structure, test, and refine my personal trading strategy

Proje bilgisi

Bütçe
20 - 50 USD
Son teslim tarihi
from 14 to 30 gün