Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1606

 
Alexey Viktorov #:

Почитайте правила. Советник должен работать без ограничений как по инструментам, так и по ТФ.

Спасибо! В процессе ещё куча других ошибок повылазила) 

 
Вопрос возник, можно ли инициализировать многомерные массивы функцией 

ArrayInitialize(array,EMPTY_VALUE);
Например такой double msArr[10][4][500];
Или только в цикле в МКЛ4 это можно сделать.

 
Valeriy Yastremskiy #:
Вопрос возник, можно ли инициализировать многомерные массивы функцией 

ArrayInitialize(array,EMPTY_VALUE);
Например такой double msArr[10][4][500];
Или только в цикле в МКЛ4 это можно сделать.

есть еще ArrayFill и ZeroMemory

Многомерный массив при обработке функцией ArrayFill() представляется одномерным, например, массив array[2][4] обрабатывается как array[8], поэтому при работе с этим массивом допустимо указать индекс начального элемента равным 5. Таким образом, вызов ArrayFill(array, 5, 2, 3.14) для массива array[2][4] заполнит значением 3.14 элементы массива array[1][1] и array[1][2].

 
Taras Slobodyanik #:

есть еще ArrayFill и ZeroMemory

Спасибо
 
MakarFX #:

Тебе сюда!

А ты шутник. А проблема реально есть, и темы есть о том что команда Print печатает по два раза во вкладке Эксперты и Аллерт тоже приходит дважды, только ответа в ней нет увы как это исправить. И на будущее, если не в курсе просто можно промолчать и пройти мимо, а набирать себе рейтинг  непрофессиональными ответами это глупо. Да, кстати, ответы твои реально очень слабоваты. 

 
Manter84 #:

А ты шутник. А проблема реально есть, и темы есть о том что команда Print печатает по два раза во вкладке Эксперты и Аллерт тоже приходит дважды, только ответа в ней нет увы как это исправить. И на будущее, если не в курсе просто можно промолчать и пройти мимо, а набирать себе рейтинг  непрофессиональными ответами это глупо. Да, кстати, ответы твои реально очень слабоваты. 

Ты не понял моей ссылки...

Print не печатает больше одного раза, если это происходит, то ошибка в коде...поэтому я и отправил тебя к телепатам, т.к. код ты не выложил)

 

Доброй ночи!

Уважаемые форумчане, нужна помощь. В бородатом году написал скрипт на MQL4, который по трем заданным точкам на графике чертит линию по формуле. Занимает он 130 строк, включая отступы и пробелы. Недавно захотел перенести на MQL5 и понял, что и без того небогатые знания в программировании здесь не помогут, надо учиться заново.

Буду благодарен, если кто-то возьмется перенести скрипт на MQL5. О цене договоримся, пишите в личку.

 
Андрей #:

Доброй ночи!

Уважаемые форумчане, нужна помощь. В бородатом году написал скрипт на MQL4, который по трем заданным точкам на графике чертит линию по формуле. Занимает он 130 строк, включая отступы и пробелы. Недавно захотел перенести на MQL5 и понял, что и без того небогатые знания в программировании здесь не помогут, надо учиться заново.

Буду благодарен, если кто-то возьмется перенести скрипт на MQL5. О цене договоримся, пишите в личку.

Скиньте сюда код, возможно кто-то сделает безвозмездно(с), такое бывает

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

MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах
 
Vitaly Muzichenko #:

Скиньте сюда код, возможно кто-то сделает безвозмездно(с), такое бывает

Если кто-то поможет, в любом случае  с меня вискарь!))
Причина обращения: