Конвертация скрипта из MQL4 в MQL5

MQL5 Dönüştürme

İş tamamlandı

Tamamlanma süresi: 4 gün
Müşteri tarafından geri bildirim
Отличная работа

İş Gereklilikleri

Добрый день! Нужно сконвертировать скрипт, написанный на MQL4, в MQL5. Скрипт выполняет следующий функционал:

  1. Пользовать самостоятельно ставит на графике 3 вертикальные линии, которые соответственно проходят каждая через свою свечу. На основании координат хаев этих свечей рассчитывается формула кривой (парабола), которая бы проходила через все три вершины.
  2. На графике строится кривая, по рассчитанной формуле. Исходит из крайнего левого хая (крайняя левая вертикальная линия), проходит последовательно через два остальных хая и строится дальше вправо.
  3. После удаления вертикальных линий, кривая остается на графике, привязанная к свечам, на базе которых была построена.
Длина кода на MQL4  - 150 строк, включая пробелы.



 #property copyright "ExpoMe"
 #property link      "http://www.metaquotes.net"

 #property indicator_chart_window
 #property indicator_buffers 1
 #property  indicator_color1 Blue
 #property  indicator_width1 2
 #property  indicator_style1 0
 double     Buffer1[];
 //+------------------------------------------------------------------+
 //| Объявляем внешние переменные                                     |
 //+------------------------------------------------------------------+
 datetime point_1;
 datetime point_2;
 datetime point_3;
 datetime LastBarTime;
 string line_name[10];
 int gg=1;
 int x1;
 int x2;
 int x3;
 int xx1; // В эту переменную сохраняется значение номера бара вершины перед прогоном при появлении нового бара.
 int xx2; // Если линии стоят, значит при поялвении нового бара номер бара вершины должен увеличиться на 1.
 int xx3; // Если этого не произошло и xx1=x1 после прогона, значит увеличиваем вручную.
 int max;
 int maxx;
 double y1;
 double y2;
 double y3;
 double y11;
 double y22;
 double y33;
 double x11;
 double x22;
 double x33;
 double y;
 double a1;
 double a2;
 double a3;

 //+------------------------------------------------------------------+
 //| Custom indicator initialization function                         |
 //+------------------------------------------------------------------+
 int init()
   {SetIndexBuffer(0,Buffer1);
   SetIndexStyle(0,DRAW_LINE);
 //---- indicators
 //----
    return(0);
   }
  
 int start()
   {
   // Пересчитываем инликатор только при появлении нового бара
   if(LastBarTime == iTime(Symbol(), 0, 0))
      return(0);
    LastBarTime = iTime(Symbol(), 0, 0);
   
   
 // Присваиваем значения переменных времени


 int obj_total=ObjectsTotal();

   for(int ii=0;ii<100;ii++)
     {string name = ObjectName(ii);
       if(ObjectType(name)!=OBJ_VLINE)
       continue;
       line_name[gg] = ObjectName(ii);
       gg=gg+1;
     
     }
    
   
    point_1=ObjectGet(line_name[1], OBJPROP_TIME1);
    point_2=ObjectGet(line_name[2], OBJPROP_TIME1);
    point_3=ObjectGet(line_name[3], OBJPROP_TIME1);
   
 // Запоминаем текущий номер бара вершины

 xx1=x1; 
    
 //Определяем номера баров ключевых точек
   for (int j=0;j<Bars; j++)
   { if (Time[j]==point_1) x1=j;}
  
  
   // Если после прогона сдвиг по вершине не произошел, значит линий нет, добавляем +1 вручную.
 if (x1==xx1) x1=x1+1;
  
  
 xx2=x2;
  
   for (int k=0;k<Bars; k++)
   {if (Time[k]==point_2) x2=k;  }
  
 if (x2==xx2) x2=x2+1;
  
 xx3=x3;

   for (int l=0;l<Bars; l++)
   {if (Time[l]==point_3) x3=l; }
  
 if (x3==xx3) x3=x3+1;

 // Comment ("n1=", j," n2=", k, " n3=", l);
 //Находим "высоту" вершин
   {
   y1=High[x1];
   y2=High[x2];
   y3=High[x3];
   //Comment ("y1=", y1," x1=", x1, " y2=", y2, "x2=", x2," y3=", y3, " x3=", x3);
   //Принимаем первую из них за начало координат
  
 a1=(y3-(x3*(y2-y1)+x2*y1-x1*y2)/(x2-x1))/(x3*(x3-x1-x2)+x1*x2);
 a2=((y2-y1)/(x2-x1))-a1*(x1+x2);
 a3=((x2*y1-x1*y2)/(x2-x1))+a1*x1*x2;

 max=MathMax(x1,x2);
 maxx=MathMax(max,x3);
  
  
   for (int i=maxx; i>=0; i--)
  
   { y=a1*i*i+a2*i+a3;
   Buffer1[i]=y;}
  

    return(0);
   }} 


Yanıtlandı

1
Geliştirici 1
Derecelendirme
(341)
Projeler
588
36%
Arabuluculuk
31
45% / 3%
Süresi dolmuş
16
3%
Serbest
2
Geliştirici 2
Derecelendirme
(564)
Projeler
777
46%
Arabuluculuk
23
39% / 13%
Süresi dolmuş
63
8%
Çalışıyor
3
Geliştirici 3
Derecelendirme
(45)
Projeler
105
30%
Arabuluculuk
8
25% / 50%
Süresi dolmuş
40
38%
Serbest
4
Geliştirici 4
Derecelendirme
(42)
Projeler
112
56%
Arabuluculuk
2
50% / 0%
Süresi dolmuş
3
3%
Serbest
5
Geliştirici 5
Derecelendirme
(254)
Projeler
573
36%
Arabuluculuk
64
20% / 58%
Süresi dolmuş
147
26%
Serbest
6
Geliştirici 6
Derecelendirme
(156)
Projeler
168
34%
Arabuluculuk
4
25% / 25%
Süresi dolmuş
3
2%
Çalışıyor
7
Geliştirici 7
Derecelendirme
(17)
Projeler
41
12%
Arabuluculuk
4
50% / 25%
Süresi dolmuş
1
2%
Çalışıyor
8
Geliştirici 8
Derecelendirme
(359)
Projeler
422
35%
Arabuluculuk
2
100% / 0%
Süresi dolmuş
0
Çalışıyor

Proje bilgisi

Bütçe
30+ USD
Geliştirici için
27 USD
Son teslim tarihi
to 3 gün