3 Level ZZ Semafor - Convert MT4 indicator to MT5 -

MQL5 Indicadores Asesores Expertos

Trabajo finalizado

Plazo de ejecución 4 días
Comentario del Cliente
Excellent programmer! Very fast and responsive!
Comentario del Ejecutor
Great Customer! I hope for further cooperation!

Tarea técnica

Hello,

I would like to convert an MT4 indicator to MT5.  Screenshot and code is below.  The name of the indicator is "3 Level ZZ Semafor."  I mainly use the 3rd level as you can see from the screenshot below.  I need the indicator to perform the same way it plots the dots in MT5 as it does in MT4.  The main level I use is the yellow #3 but I still want it to be able to plot levels 1 & 2 if I ever need it to.  Basically just make it function in MT5 as it does in MT4.

3levelsemafor

//+------------------------------------------------------------------+ 
//|                                        3_Level_ZZ_Semafor.mq4    | 
//+------------------------------------------------------------------+ 
#property copyright "asystem2000" 
#property link      "asystem2000@yandex.ru" 

// В основу расчета зигзага взят алгоритм klot@mail.ru
// За что ему огромное спасибо

#property indicator_chart_window 
#property indicator_buffers 6
#property indicator_color1 Chocolate 
#property indicator_color2 Chocolate 
#property indicator_color3 MediumVioletRed
#property indicator_color4 MediumVioletRed
#property indicator_color5 Yellow
#property indicator_color6 Yellow

//---- input parameters 
extern double Period1=5; 
extern double Period2=13; 
extern double Period3=34; 
extern string   Dev_Step_1="1,3";
extern string   Dev_Step_2="8,5";
extern string   Dev_Step_3="21,12";
extern int Symbol_1_Kod=140;
extern int Symbol_2_Kod=141;
extern int Symbol_3_Kod=142;

//---- buffers 
double FP_BuferUp[];
double FP_BuferDn[]; 
double NP_BuferUp[];
double NP_BuferDn[]; 
double HP_BuferUp[];
double HP_BuferDn[]; 

int F_Period;
int N_Period;
int H_Period;
int Dev1;
int Stp1;
int Dev2;
int Stp2;
int Dev3;
int Stp3;

//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int init() 
  { 
// --------- Корректируем периоды для построения ЗигЗагов
   if (Period1>0) F_Period=MathCeil(Period1*Period()); else F_Period=0; 
   if (Period2>0) N_Period=MathCeil(Period2*Period()); else N_Period=0; 
   if (Period3>0) H_Period=MathCeil(Period3*Period()); else H_Period=0; 
   
//---- Обрабатываем 1 буфер 
   if (Period1>0)
   {
   SetIndexStyle(0,DRAW_ARROW,0,1); 
   SetIndexArrow(0,Symbol_1_Kod); 
   SetIndexBuffer(0,FP_BuferUp); 
   SetIndexEmptyValue(0,0.0); 
   
   SetIndexStyle(1,DRAW_ARROW,0,1); 
   SetIndexArrow(1,Symbol_1_Kod); 
   SetIndexBuffer(1,FP_BuferDn); 
   SetIndexEmptyValue(1,0.0); 
   }
   
//---- Обрабатываем 2 буфер 
   if (Period2>0)
   {
   SetIndexStyle(2,DRAW_ARROW,0,2); 
   SetIndexArrow(2,Symbol_2_Kod); 
   SetIndexBuffer(2,NP_BuferUp); 
   SetIndexEmptyValue(2,0.0); 
   
   SetIndexStyle(3,DRAW_ARROW,0,2); 
   SetIndexArrow(3,Symbol_2_Kod); 
   SetIndexBuffer(3,NP_BuferDn); 
   SetIndexEmptyValue(3,0.0); 
   }
//---- Обрабатываем 3 буфер 
   if (Period3>0)
   {
   SetIndexStyle(4,DRAW_ARROW,0,4); 
   SetIndexArrow(4,Symbol_3_Kod); 
   SetIndexBuffer(4,HP_BuferUp); 
   SetIndexEmptyValue(4,0.0); 

   SetIndexStyle(5,DRAW_ARROW,0,4); 
   SetIndexArrow(5,Symbol_3_Kod); 
   SetIndexBuffer(5,HP_BuferDn); 
   SetIndexEmptyValue(5,0.0); 
   }
// Обрабатываем значения девиаций и шагов
   int CDev=0;
   int CSt=0;
   int Mass[]; 
   int C=0;  
   if (IntFromStr(Dev_Step_1,C, Mass)==1) 
      {
        Stp1=Mass[1];
        Dev1=Mass[0];
      }
   
   if (IntFromStr(Dev_Step_2,C, Mass)==1)
      {
        Stp2=Mass[1];
        Dev2=Mass[0];
      }      
   
   
   if (IntFromStr(Dev_Step_3,C, Mass)==1)
      {
        Stp3=Mass[1];
        Dev3=Mass[0];
      }      
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| Custor indicator deinitialization function                       | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 
    
//---- 
   return(0); 
  } 

//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int start() 
  { 
   if (Period1>0) CountZZ(FP_BuferUp,FP_BuferDn,Period1,Dev1,Stp1);
   if (Period2>0) CountZZ(NP_BuferUp,NP_BuferDn,Period2,Dev2,Stp2);
   if (Period3>0) CountZZ(HP_BuferUp,HP_BuferDn,Period3,Dev3,Stp3);
   return(0); 
  } 
//+------------------------------------------------------------------+ 
// дополнительные функции
//int Take



//+------------------------------------------------------------------+ 
//| Функц формирования ЗигЗага                        | 
//+------------------------------------------------------------------+  
int CountZZ( double& ExtMapBuffer[], double& ExtMapBuffer2[], int ExtDepth, int ExtDeviation, int ExtBackstep )
  {
   int    shift, back,lasthighpos,lastlowpos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow;

   for(shift=Bars-ExtDepth; shift>=0; shift--)
     {
      val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
      if(val==lastlow) val=0.0;
      else 
        { 
         lastlow=val; 
         if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
         else
           {
            for(back=1; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer[shift+back];
               if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; 
              }
           }
        } 
        
          ExtMapBuffer[shift]=val;
      //--- high
      val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
      if(val==lasthigh) val=0.0;
      else 
        {
         lasthigh=val;
         if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
         else
           {
            for(back=1; back<=ExtBackstep; back++)
              {
               res=ExtMapBuffer2[shift+back];
               if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0; 
              } 
           }
        }
      ExtMapBuffer2[shift]=val;
     }
   // final cutting 
   lasthigh=-1; lasthighpos=-1;
   lastlow=-1;  lastlowpos=-1;

   for(shift=Bars-ExtDepth; shift>=0; shift--)
     {
      curlow=ExtMapBuffer[shift];
      curhigh=ExtMapBuffer2[shift];
      if((curlow==0)&&(curhigh==0)) continue;
      //---
      if(curhigh!=0)
        {
         if(lasthigh>0) 
           {
            if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
            else ExtMapBuffer2[shift]=0;
           }
         //---
         if(lasthigh<curhigh || lasthigh<0)
           {
            lasthigh=curhigh;
            lasthighpos=shift;
           }
         lastlow=-1;
        }
      //----
      if(curlow!=0)
        {
         if(lastlow>0)
           {
            if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
            else ExtMapBuffer[shift]=0;
           }
         //---
         if((curlow<lastlow)||(lastlow<0))
           {
            lastlow=curlow;
            lastlowpos=shift;
           } 
         lasthigh=-1;
        }
     }
  
   for(shift=Bars-1; shift>=0; shift--)
     {
      if(shift>=Bars-ExtDepth) ExtMapBuffer[shift]=0.0;
      else
        {
         res=ExtMapBuffer2[shift];
         if(res!=0.0) ExtMapBuffer2[shift]=res;
        }
     }
 }
  
int Str2Massive(string VStr, int& M_Count, int& VMass[])
  {
    int val=StrToInteger( VStr);
    if (val>0)
       {
         M_Count++;
         int mc=ArrayResize(VMass,M_Count);
         if (mc==0)return(-1);
          VMass[M_Count-1]=val;
         return(1);
       }
    else return(0);    
  } 
  
  
int IntFromStr(string ValStr,int& M_Count, int& VMass[])
  {
    
    if (StringLen(ValStr)==0) return(-1);
    string SS=ValStr;
    int NP=0; 
    string CS;
    M_Count=0;
    ArrayResize(VMass,M_Count);
    while (StringLen(SS)>0)
      {
            NP=StringFind(SS,",");
            if (NP>0)
               {
                 CS=StringSubstr(SS,0,NP);
                 SS=StringSubstr(SS,NP+1,StringLen(SS));  
               }
               else
               {
                 if (StringLen(SS)>0)
                    {
                      CS=SS;
                      SS="";
                    }
               }
            if (Str2Massive(CS,M_Count,VMass)==0) 
               {
                 return(-2);
               }
      }
    return(1);    
  }


Han respondido

1
Desarrollador 1
Evaluación
(361)
Proyectos
628
72%
Arbitraje
14
43% / 7%
Caducado
28
4%
Libre
Ha publicado: 9 ejemplos
2
Desarrollador 2
Evaluación
(1156)
Proyectos
1462
63%
Arbitraje
21
57% / 10%
Caducado
43
3%
Libre
3
Desarrollador 3
Evaluación
(332)
Proyectos
485
40%
Arbitraje
82
11% / 63%
Caducado
77
16%
Libre
Ha publicado: 1 ejemplo
4
Desarrollador 4
Evaluación
(28)
Proyectos
36
17%
Arbitraje
5
20% / 40%
Caducado
17
47%
Libre
Ha publicado: 5 ejemplos
5
Desarrollador 5
Evaluación
(337)
Proyectos
624
38%
Arbitraje
40
23% / 65%
Caducado
93
15%
Libre
Ha publicado: 4 artículos, 19 ejemplos
6
Desarrollador 6
Evaluación
(52)
Proyectos
108
68%
Arbitraje
3
33% / 33%
Caducado
40
37%
Libre
7
Desarrollador 7
Evaluación
(59)
Proyectos
182
55%
Arbitraje
31
45% / 16%
Caducado
103
57%
Libre
8
Desarrollador 8
Evaluación
(130)
Proyectos
210
40%
Arbitraje
90
20% / 43%
Caducado
85
40%
Libre
Solicitudes similares
I have build the trade copier for ninja trader as indicator. I need someone to fix the issue i am having or create new one similar to replicanto. here are my issue.. ### 1. Opposing Positions Across Multiple Accounts A counter trade violation occurs when you hold opposite directional positions (Buy vs. Sell) in the same symbol or product across different accounts. * *Example from your report:* In Violation #8
Hello. I am finding an experienced python developer who can implement my trading strategies into robots. I like trend-following swing trading strategies and am going to automate my idea. More details can be discussed by chatting. If you have similar working experience it can be a plus. Thanks
Job Title MT5 Developer Needed – Sync Data Feed Between Two MT5 Accounts Job Description I am a trader using multiple MT5 accounts and need a reliable way to have the same market data from one MT5 account reflected in another MT5 account. One account already has a stable and accurate data feed, and I want the second MT5 account to receive identical pricing and symbols for analysis and execution purposes. What I Need
Greeting Im in need of a programmer that can help me convert from TOS to trading view? The script is available with me, kindly bid if it is what you can do for me Thanks
can you help me with I need an ATM strategy for NT8, here's the criteria: Forex trade entry 100,000 units with a starting SL of 70 pips. The following proft targets: 33 pips, 68, 125, 180. All targets exit 25,000 units each. As each target is hit, move SL to BE+5, then BE+35, then BE+70. So the SL's are fixed, not trailing. I can't figure this out on my platform
"I need a high-quality, non-repainting TradingView indicator for Gold (XAUUSD) on the 1-minute timeframe. The goal is to catch 'Tops and Bottoms' using a combination of price exhaustion and candlestick confirmation. Key Requirements: The Signal: Must identify reversals at extremes. Please use a combination of Bollinger Bands (Standard Deviation) and RSI . Candlestick Confirmation: Signals should only fire if there is
Hi guys looking for a reversal indicator that places signals on chart Signals must he placed at candle close and not repaint. Since I'm offering a high budget I want everything to run smoothly in these steps 1. Send screenahots of it 2. I'll give you feedback what to change or we'll skip to stage 3 3. Short period demo 4. Deposite send full version and close deal. That will allow safety for both us I know I'm getting
Need to create a New EA that focuses only on closing trades of an Existing EA . The New EA should be attached to the Existing EA and also it should not interfere the functions of Existing EA. The developer of the New EA should provide guidelines in order to attach the New EA to the Existing EA. The existing EA will not be shared to the developer. The conditions of new EA is as follows: The new EA should close all
I’m looking for an experienced MQL4 / MQL5 developer to help with an indicator project. Project overview: I have an existing MT4 arrow indicator that I’ve used for several years. The indicator is compiled only (.ex4) — source code is not available. It does not repaint . The indicator has stopped displaying properly (likely outdated). What I need: Rebuild the indicator from scratch by analyzing its behavior and
HI Iam trading with XU ma simple BT 1.12 INDICATOR Which I got indicator from forexstation forum but mq4 file is not with me,I want to have similar indicator which is non repainting in both mq4 and mq5 formats,it should be similar and signals should match it has 2 moving averages MA1 IS LONG TERM MA,MA2 is short term MA MA 2 SIGNALS FOLLOW THE MA TREND CHANGE not crossing of MA1

Información sobre el proyecto

Presupuesto
25 - 125 USD
Plazo límite de ejecución
de 3 a 10 día(s)