Besoin d'un EA basé sur l'indicateur ZIGZAGLUCK.

İş tamamlandı

Tamamlanma süresi: 20 saat
Müşteri tarafından geri bildirim
trés satisfait du travail réalisé sur mon projet . un grand merci pour Mike Pascal , il a fait plus que ce que je lui avais demandé .
Geliştirici tarafından geri bildirim
Excellent client. Bonne communication. J'espère retravailler avec vous

Şartname

L'indicateur zigzagluck dessine une croix bleue sur un plus bas et une croix rouge sur un plus haut sans repeindre.

Mon idée est simple.

On doit pouvoir utiliser l'EA sur nimporte quel symbole et dans tous les timeframes

On doit pouvoir changer de timeframe sans avoir à réinitialiser l'EA

On doit pouvoir régler les parametres de l'indicateur

signal d'achat dés l'apparition de la croix bleue.

signal de vente dés l'apparition de la croix rouge.

Les positions sont fermées  aux signaux opposés: les positions d'achat sont fermées aux signaux de vente et les positions de vente sont fermées aux signaux d'achat.

on peut ajouter

-un nombre magique 

-un stoploss réglable en points pas en pips

-un trailingstop réglable lui aussi en points pas en pips

-un take profit

-MaxSpread

- calcul du lot de commande

  • volume fixe indépendamment du profit ou de la perte;
  • volume en fonction de la taille du solde ou des fonds propres


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

//|                                                       ZigZag.mq4 |

//|                   Copyright 2006-2014, MetaQuotes Software Corp. |

//|                                              http://www.mql4.com |

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

#property copyright "2006-2014, MetaQuotes Software Corp."

#property link      "http://www.mql4.com"

#property strict


#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1  Red

//---- indicator parameters

input int InpDepth=12;     // Depth

input int InpDeviation=5;  // Deviation

input int InpBackstep=3;   // Backstep

//---- indicator buffers

double ExtZigzagBuffer[];

double ExtHighBuffer[];

double ExtLowBuffer[];

//--- globals

int    ExtLevel=3; // recounting's depth of extremums

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

//| Custom indicator initialization function                         |

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

int OnInit()

  {

   if(InpBackstep>=InpDepth)

     {

      Print("Backstep cannot be greater or equal to Depth");

      return(INIT_FAILED);

     }

//--- 2 additional buffers

   IndicatorBuffers(3);

//---- drawing settings

   SetIndexStyle(0,DRAW_SECTION);

//---- indicator buffers

   SetIndexBuffer(0,ExtZigzagBuffer);

   SetIndexBuffer(1,ExtHighBuffer);

   SetIndexBuffer(2,ExtLowBuffer);

   SetIndexEmptyValue(0,0.0);

//---- indicator short name

   IndicatorShortName("ZigZag("+string(InpDepth)+","+string(InpDeviation)+","+string(InpBackstep)+")");

//---- initialization done

   return(INIT_SUCCEEDED);

  }

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

//|                                                                  |

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

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long& tick_volume[],

                const long& volume[],

                const int& spread[])

  {

   int    i,limit,counterZ,whatlookfor=0;

   int    back,pos,lasthighpos=0,lastlowpos=0;

   double extremum;

   double curlow=0.0,curhigh=0.0,lasthigh=0.0,lastlow=0.0;

//--- check for history and inputs

   if(rates_total<InpDepth || InpBackstep>=InpDepth)

      return(0);

//--- first calculations

   if(prev_calculated==0)

      limit=InitializeAll();

   else 

     {

      //--- find first extremum in the depth ExtLevel or 100 last bars

      i=counterZ=0;

      while(counterZ<ExtLevel && i<100)

        {

         if(ExtZigzagBuffer[i]!=0.0)

            counterZ++;

         i++;

        }

      //--- no extremum found - recounting all from begin

      if(counterZ==0)

         limit=InitializeAll();

      else

        {

         //--- set start position to found extremum position

         limit=i-1;

         //--- what kind of extremum?

         if(ExtLowBuffer[i]!=0.0) 

           {

            //--- low extremum

            curlow=ExtLowBuffer[i];

            //--- will look for the next high extremum

            whatlookfor=1;

           }

         else

           {

            //--- high extremum

            curhigh=ExtHighBuffer[i];

            //--- will look for the next low extremum

            whatlookfor=-1;

           }

         //--- clear the rest data

         for(i=limit-1; i>=0; i--)  

           {

            ExtZigzagBuffer[i]=0.0;  

            ExtLowBuffer[i]=0.0;

            ExtHighBuffer[i]=0.0;

           }

        }

     }

//--- main loop      

   for(i=limit; i>=0; i--)

     {

      //--- find lowest low in depth of bars

      extremum=low[iLowest(NULL,0,MODE_LOW,InpDepth,i)];

      //--- this lowest has been found previously

      if(extremum==lastlow)

         extremum=0.0;

      else 

        { 

         //--- new last low

         lastlow=extremum; 

         //--- discard extremum if current low is too high

         if(low[i]-extremum>InpDeviation*Point)

            extremum=0.0;

         else

           {

            //--- clear previous extremums in backstep bars

            for(back=1; back<=InpBackstep; back++)

              {

               pos=i+back;

               if(ExtLowBuffer[pos]!=0 && ExtLowBuffer[pos]>extremum)

                  ExtLowBuffer[pos]=0.0; 

              }

           }

        } 

      //--- found extremum is current low

      if(low[i]==extremum)

         ExtLowBuffer[i]=extremum;

      else

         ExtLowBuffer[i]=0.0;

      //--- find highest high in depth of bars

      extremum=high[iHighest(NULL,0,MODE_HIGH,InpDepth,i)];

      //--- this highest has been found previously

      if(extremum==lasthigh)

         extremum=0.0;

      else 

        {

         //--- new last high

         lasthigh=extremum;

         //--- discard extremum if current high is too low

         if(extremum-high[i]>InpDeviation*Point)

            extremum=0.0;

         else

           {

            //--- clear previous extremums in backstep bars

            for(back=1; back<=InpBackstep; back++)

              {

               pos=i+back;

               if(ExtHighBuffer[pos]!=0 && ExtHighBuffer[pos]<extremum)

                  ExtHighBuffer[pos]=0.0; 

              } 

           }

        }

      //--- found extremum is current high

      if(high[i]==extremum)

         ExtHighBuffer[i]=extremum;

      else

         ExtHighBuffer[i]=0.0;

     }

//--- final cutting 

   if(whatlookfor==0)

     {

      lastlow=0.0;

      lasthigh=0.0;  

     }

   else

     {

      lastlow=curlow;

      lasthigh=curhigh;

     }

   for(i=limit; i>=0; i--)

     {

      switch(whatlookfor)

        {

         case 0: // look for peak or lawn 

            if(lastlow==0.0 && lasthigh==0.0)

              {

               if(ExtHighBuffer[i]!=0.0)

                 {

                  lasthigh=High[i];

                  lasthighpos=i;

                  whatlookfor=-1;

                  ExtZigzagBuffer[i]=lasthigh;

                 }

               if(ExtLowBuffer[i]!=0.0)

                 {

                  lastlow=Low[i];

                  lastlowpos=i;

                  whatlookfor=1;

                  ExtZigzagBuffer[i]=lastlow;

                 }

              }

             break;  

         case 1: // look for peak

            if(ExtLowBuffer[i]!=0.0 && ExtLowBuffer[i]<lastlow && ExtHighBuffer[i]==0.0)

              {

               ExtZigzagBuffer[lastlowpos]=0.0;

               lastlowpos=i;

               lastlow=ExtLowBuffer[i];

               ExtZigzagBuffer[i]=lastlow;

              }

            if(ExtHighBuffer[i]!=0.0 && ExtLowBuffer[i]==0.0)

              {

               lasthigh=ExtHighBuffer[i];

               lasthighpos=i;

               ExtZigzagBuffer[i]=lasthigh;

               whatlookfor=-1;

              }   

            break;               

         case -1: // look for lawn

            if(ExtHighBuffer[i]!=0.0 && ExtHighBuffer[i]>lasthigh && ExtLowBuffer[i]==0.0)

              {

               ExtZigzagBuffer[lasthighpos]=0.0;

               lasthighpos=i;

               lasthigh=ExtHighBuffer[i];

               ExtZigzagBuffer[i]=lasthigh;

              }

            if(ExtLowBuffer[i]!=0.0 && ExtHighBuffer[i]==0.0)

              {

               lastlow=ExtLowBuffer[i];

               lastlowpos=i;

               ExtZigzagBuffer[i]=lastlow;

               whatlookfor=1;

              }   

            break;               

        }

     }

//--- done

   return(rates_total);

  }

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

//|                                                                  |

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

int InitializeAll()

  {

   ArrayInitialize(ExtZigzagBuffer,0.0);

   ArrayInitialize(ExtHighBuffer,0.0);

   ArrayInitialize(ExtLowBuffer,0.0);

//--- first counting position

   return(Bars-InpDepth);

  }

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


Yanıtlandı

1
Geliştirici 1
Derecelendirme
(116)
Projeler
137
36%
Arabuluculuk
16
13% / 69%
Süresi dolmuş
9
7%
Serbest
2
Geliştirici 2
Derecelendirme
(162)
Projeler
218
30%
Arabuluculuk
4
50% / 25%
Süresi dolmuş
5
2%
Serbest
Yayınlandı: 1 kod
3
Geliştirici 3
Derecelendirme
(361)
Projeler
644
26%
Arabuluculuk
92
72% / 14%
Süresi dolmuş
12
2%
Çalışıyor
Yayınlandı: 1 kod
4
Geliştirici 4
Derecelendirme
(48)
Projeler
51
43%
Arabuluculuk
1
0% / 0%
Süresi dolmuş
0
Serbest
5
Geliştirici 5
Derecelendirme
(4)
Projeler
5
0%
Arabuluculuk
5
0% / 80%
Süresi dolmuş
2
40%
Serbest
Benzer siparişler
the final ea must faithfully implement the logic from the provided phython file run cleanly on mt5 and deliver solid backtest result.its shoild be very easy to set up use with clear input parameter proper risk management and no complicated installation steps
Forex Hunter MT5 30 - 250 USD
ثبت طلبك في مواصفات البوت الثاني كذا: الجودة والأمان أهم من السعر، وما يدخل إلا إذا الفرصة قوية، مع حماية عند الخسائر وانقطاع الاتصال وارتفاع السبريد، وتشغيل مستمر على سيرفر، مع اختبارات إلزامية قبل أي تشغيل حقيقي. بهذه الصيغة يصير يشتغل وأنت مرتاح بالِك، لكنه يوقف تلقائيًا وقت عطلة السوق أو أي خلل. بس أكون واضح معك: ما في بوت يضمن عدم الخسارة، خصوصًا بالمضاربات السريعة، هدفنا نقلل المخاطر ونمنع الخسائر غير المنضبطة
I'm looking for an experienced MQL5 developer to create a Opening Range Breakout EA. The EA should identify the high and low of a configurable trading session and open trades when price breaks out of this range. It should include configurable Stop Loss, Take Profit, fixed lot size, break-even option and trading hours. Full mq5 required
Matosfx 30 USD
Am called martin sselubiri I need a robot for trading forex and stock and I want know how this robot works and how much it costs for me to use it
AI Forex Trading Bot for MT4 and MT5 I need an advanced Forex trading robot (Expert Advisor) that works on both MetaTrader 4 and MetaTrader 5. The robot should automatically analyse the Forex market, identify BUY and SELL opportunities, and execute trades when the trading conditions are met. It should support GBPUSD, EURUSD, USDJPY and GBPJPY. The robot should use EMA, RSI, MACD, price action and trend analysis
Aziz Toure 50 - 400 USD
I am an independent trader and entrepreneur based in Côte d’Ivoire. I work in financial markets, analyze trading opportunities, and provide digital financial services. I am also interested in international trade, online business, and developing long-term business activities
SMC Bot Creation 350 - 550 USD
Hello, I am interested in developing a professional MT5 Expert Advisor similar in functionality and technical sophistication to your reference product, Institutional SMC Robot: https://www.mql5.com/en/market/product/187011 I want to develop my own independent EA based on advanced Smart Money Concepts (SMC), with a strong focus on institutional price action, liquidity and market structure. The key functionalities I
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
Phixfx 30 - 150 USD
Project Brief: Multi-Asset EA/Indicator Optimization, Debugging, and Futures Strategy Refinement ​1. Project Overview & Objective ​I am looking for an experienced algorithmic developer to inspect, debug, optimize, and enhance an existing automated trading system. The system combines custom indicators and execution logic across Forex and Futures markets. ​The primary goals of this project are: ​Debug existing logic
​I am looking for an experienced MQL5 developer to build a fully automated MetaTrader 5 Expert Advisor (EA) optimized primarily for XAUUSD (Gold), featuring a clean Tkinter-style telemetry dashboard control concept or customizable input parameters. ​1. Core Strategy Rules (Full-Body Engulfing) ​Signal Identification: The EA must scan completed candles across multiple selectable timeframes (e.g., 1M, 5M, 15M, 30M, 1H)

Proje bilgisi

Bütçe
30 - 50 USD