Cycle

MQL5 Indikatoren Experten

Spezifikation

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

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

Bewerbungen

1
Entwickler 1
Bewertung
(491)
Projekte
953
75%
Schlichtung
26
19% / 65%
Frist nicht eingehalten
100
10%
Beschäftigt
Veröffentlicht: 1 Artikel, 6 Beispiele
2
Entwickler 2
Bewertung
(12)
Projekte
17
35%
Schlichtung
1
0% / 100%
Frist nicht eingehalten
3
18%
Frei
3
Entwickler 3
Bewertung
Projekte
2
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
Veröffentlicht: 2 Beispiele
4
Entwickler 4
Bewertung
(273)
Projekte
396
63%
Schlichtung
70
53% / 26%
Frist nicht eingehalten
198
50%
Frei
5
Entwickler 5
Bewertung
Projekte
0
0%
Schlichtung
0
Frist nicht eingehalten
0
Frei
6
Entwickler 6
Bewertung
(71)
Projekte
254
53%
Schlichtung
16
50% / 38%
Frist nicht eingehalten
83
33%
Frei
7
Entwickler 7
Bewertung
(2)
Projekte
5
20%
Schlichtung
2
50% / 0%
Frist nicht eingehalten
0
Frei
8
Entwickler 8
Bewertung
(63)
Projekte
80
28%
Schlichtung
17
12% / 76%
Frist nicht eingehalten
48
60%
Frei
Ähnliche Aufträge
I need an MT4/MT5 EA modification. Requirements: 1. Equity protection based on DAILY and TOTAL drawdown 2. Automatically close all trades when limit is hit 3. Disable trading after drawdown hit 4. Email notification when: - Daily loss limit reached - Total loss limit reached 5. EA must work on multiple accounts simultaneously 6. Clean and error-free code 7. Compatible with MT5 (or MT4 mention yours)
If you have profitable strategy or profitable EA on the gold pair without martingale / Hedge, then share me the EA with expiry time to back test and to test on the live market. Platform: MT5 pair: Gold Non-Martingale, No Hedging. Need Source Code
I have a working Python backtester for my “DC-WAD Donchian” strategy. I need a MetaTrader 5 Expert Advisor (MQL5) for live trading that matches the Python logic as closely as possible ( no lookahead ). ✅ Critical requirement (must accept) EA must be tick-driven for entries/exits (touch logic). Bar-close approximation is not acceptable . Timeframes Strategy runs on a single Setup Timeframe (HTF) (user input, e.g
This indicator will code into MT5 EA. Trade on live, demo and strategy tester. No repaint, no redraw and stable on chart. 1. Include all inputs variable and value, Lots size in points adjustable, TP in points true or false adjustable, SL in points true or false adjustable, close position on opposite signal true or false, Use pending order true or false, use BE points true or false, use slippage point true or false
can you help me with the strategy for my mt4 or mt5 bot? I am learning trading, while working and I was thinking this could be a good way to still earn from the market while learning. If I have someone like you to guide me on strategy and maintaining the trading bot going forward. I do not have anything setup, I am going to pay a ten to build the EA, I just need the mentorship and we can agree on a unique price to
Good day, I am searching the very high level expert, which could create the auto-trade robot and I would like to order the trading robot for GOLD XAU/USD auto-trade on MetaTrader. I could pay a lot for the institutional grade auto-trade robot, just contact me and let me know what level of the robot you could offer and we will negotiate the price
Looking to purchase a EA for Gold and US30 with source Requirements: must have proper built in Risk Management Must yield good profit factor and recovery Factor Must work on any Broker Must have less than 15% drawdown Year over Year Z-Score should be high Consecutive Profits Must Outweigh Consecutive losses atleast 3/1 Must be able to work on accounts from 100USD and up Testing must be based off of real Tick Values
I’m looking for a NinjaTrader 8 developer to build or customize a fully automated futures strategy . Goals: Target ~$100/day (consistency over aggression) Long-term survivability (not scalping hype) Requirements: Trade ES/MES or NQ/MNQ Fixed risk per trade Daily profit & loss limits Time/session filters Break-even & trailing stop logic Full NT8 strategy (not indicator) Nice to have: Backtest + optimization
Je cherche un développeur pour un bot Fundednext pour le passage de challenge jusqu'au trading quotidien après le passage.le robot va s'occuper du compte du début à la suite du compte de 15k chez Fundednext.après le passage aux challenges,le robot doit être capable de me fournir 6-10% mensuel de rendement de ce compte. Il doit être capable de passer le challenge dans un bref délai de 2-3 semaine ou soit 10-15 jours
🧠 Project Overview We require an automated trading system that performs statistical arbitrage between: XAGUSD (MT5 account) MCX Silver (separate broker / API / account) The bot will calculate custom percentage movement from a daily anchor time and trade based on spread convergence, not broker-provided percentage values. --- 🧩 Core Concept The system must: 1. Capture daily anchor prices at 11:30 PM IST 2. Compute

Projektdetails

Budget
20 - 50 USD
Ausführungsfristen
von 14 bis 30 Tag(e)