3 Level ZZ Semafor - Convert MT4 indicator to MT5 -

Работа завершена

Время выполнения 4 дня
Отзыв от заказчика
Excellent programmer! Very fast and responsive!
Отзыв от исполнителя
Great Customer! I hope for further cooperation!

Техническое задание

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);    
  }


Откликнулись

1
Разработчик 1
Оценка
(361)
Проекты
629
72%
Арбитраж
14
43% / 7%
Просрочено
28
4%
Свободен
Опубликовал: 9 примеров
2
Разработчик 2
Оценка
(1156)
Проекты
1462
63%
Арбитраж
21
57% / 10%
Просрочено
43
3%
Свободен
3
Разработчик 3
Оценка
(332)
Проекты
485
40%
Арбитраж
82
11% / 63%
Просрочено
77
16%
Свободен
Опубликовал: 1 пример
4
Разработчик 4
Оценка
(28)
Проекты
36
17%
Арбитраж
5
20% / 40%
Просрочено
17
47%
Свободен
Опубликовал: 5 примеров
5
Разработчик 5
Оценка
(337)
Проекты
624
38%
Арбитраж
40
23% / 65%
Просрочено
93
15%
Свободен
Опубликовал: 4 статьи, 19 примеров
6
Разработчик 6
Оценка
(52)
Проекты
108
68%
Арбитраж
3
33% / 33%
Просрочено
40
37%
Свободен
7
Разработчик 7
Оценка
(59)
Проекты
182
55%
Арбитраж
31
45% / 16%
Просрочено
103
57%
Свободен
8
Разработчик 8
Оценка
(130)
Проекты
210
40%
Арбитраж
90
20% / 43%
Просрочено
85
40%
Свободен
Похожие заказы
Xauusd Trend EA 30+ USD
Key Technical Specifications Platform & Engine: Native MetaTrader 5 (MQL5) using CTrade execution class. Trading Strategy: Dual-directional breakout grid strategy featuring dynamic price validation and overall equity trailing stops. Order Capacity: 70 total pending orders max (35 Buy grid levels, 35 Sell grid levels). Core Features & Execution Rules Feature Specification Details Price Direction Guard Automatically
Потрібен робот, який відкриває відкладені ордери в напрямку, протилежному поточній ринковій ціні (ордер Sell Stop, якщо ринкова ціна вище, і ордер Buy Stop, якщо ринкова ціна нижче). Модельований сценарій – хибний прорив
Buying profitable EA Budget up to 1.5k (Serious offer) Specification EN I will pay 1.5k (negotiable) for an EA for existing MT4 that generates a minimum of 5% or higher a month consistently no monthly DD more than 5% on ,5k account Please send demo version with optimal settings so I can test, if it performs in a strategy tester i will also need option to forward test it in a demo account. Developer should be willing
1- The EA must h ave a unique strategy specialized on make trades with very very low RRR, so basicaly risking 1475$ to make 100$, with an ammount adjustable of trades per day. (This is very important that i wish in 100 trades, it makes a maximum of 10 trades of mistake, maybe less...) 2- The EA must have the strategy specialized on INDEX CFD. 3- The EA must make each trade with more than 3 minutes, and less than 12h
I need an MT4 Expert Advisor (MQL4). 1. Open one Buy and one Sell trade simultaneously. 2. Adjustable lot size (default 0.01). 3. Stop Loss on both trades. 4. If one trade hits Stop Loss: - Do not open a replacement trade. - Leave the remaining trade open. 5. Optional trailing stop: - On/Off switch. - Adjustable distance. 6. When the remaining trade closes: - Open a new Buy and Sell pair. - Repeat continuously
Hi i am looking for a coder whose designed a future EA that trades nas100. I need the system to pass future props and be used on live account as well. It can be running on mt5 and i could use a trade copier. It should have a very good growth with your strategy to it. I would require a test file with some history of it being used on the account. Only apply if you read this
*JOB TITLE:* `MQL5 EA: 8-Indicator Confluence Bot for XAUUSD, US30, NAS100, DE40 + News + DD Protection` *BUDGET:* $300 - $400 *TIMELINE:* 10 - 14 days *PLATFORM:* MetaTrader 4 & 5 *ATTACHMENTS:* `Indicators.zip` = 10 indicators + 5 screenshots with all settings --- *1. CORE TRADING LOGIC - ON CANDLE CLOSE ONLY* *BUY when ALL conditions are TRUE:* 1. Price > 200 SMA 2. `Reversal Indicator` = UP arrow/dot 3
Hi, I Wanne have a trading robot that give me signals for short buy and sell. And only for all currency in forex trading and also can use it on mt5
ROBOTFORX_V7 40+ USD
i have the robotforx_v7 code but am looking for an experinced developer to improve my code i want it to capture quick moves on 5mins it should be able close like ten trades in small profits
I BUY EA FOR FTMO XAUUSD I am looking to buy professional Expert Advisors (EA) suitable for FTMO and other prop trading environments. I am interested in XAUUSD . I am NOT looking for high-risk EAs with impressive but unrealistic backtests. I am looking for low drawdown, consistent returns and robust strategies that can survive real market conditions. REQUIRED RISK PROFILE Maximum preferred daily drawdown: 1% Maximum

Информация о проекте

Бюджет
25 - 125 USD
Сроки выполнения
от 3 до 10 дн.