Ошибки, баги, вопросы - страница 2768

 
Приветствую. Событие инициализация происходит при включении терминала?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Уважаемая администрация. Кому здесь нужно написать по вопросам удаления аккаунта (c регистрацией в качестве продавца) с сайта mql5.com?
 

Здравствуйте! Есть индикатор для MT5 "Grid Builder", он рисует горизонтальные линии с шагом цены. Можно выбрать например 100п, 200п и тд. И строится горизонтальная сетка вверх и вниз с заданным шагом. Но у него одна  проблема, например, когда я  на таймфрейме  H4 рисую свою графические горизонтальные уровни( ставлю горизонтальные линии из инструментов рисования в терминале) и переключаю на любой другой таймфрейм, все мои линии удаляются. А остаются только горизонтальные уровни индикатора. Как в коде исправить эту ошибку? Чтобы мои горизонтальные уровни никогда не удалялись. Вот код индикатора. 

//+------------------------------------------------------------------+
//|                                                  GridBuilder.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots   0
//--- входные параметры 
input int count = 50;      //количество линий вверх вниз от цены
input int step  = 333;     //шаг линий 
input double pr = 1.4622;  //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ObjectsDeleteAll(0,0,OBJ_HLINE);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectsDeleteAll(0,0,OBJ_HLINE);
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine(const string name="HLine",double price=0)
  {
//--- создадим горизонтальную линию 
   if(!ObjectCreate(0,name,OBJ_HLINE,0,0,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clrGreen);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
   return(true);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for(int i=0;i<=count;i++)
     {
      HLine("HLine"+(string)i,price+step*i*_Point);
      HLine("HLine"+(string)(i+count+1),price-step*i*_Point);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
 
Александр:

Здравствуйте! Есть индикатор для MT5 "Grid Builder", он рисует горизонтальные линии с шагом цены. Можно выбрать например 100п, 200п и тд. И строится горизонтальная сетка вверх и вниз с заданным шагом. Но у него одна  проблема, например, когда я  на таймфрейме  H4 рисую свою графические горизонтальные уровни( ставлю горизонтальные линии из инструментов рисования в терминале) и переключаю на любой другой таймфрейм, все мои линии удаляются. А остаются только горизонтальные уровни индикатора. Как в коде исправить эту ошибку? Чтобы мои горизонтальные уровни никогда не удалялись. Вот код индикатора. 

Пожалуйста, старайтесь вставить код правильно.

MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Теперь вы можете не только читать статьи и скачивать программы на языке MQL5, но и участвовать в обсуждении интересующих вас тем на Форуме, оставлять комментарии к статьям и опубликованным кодам. Кроме того, вы можете не только выкладывать собственные разработки в Code Base, но и публиковать Статьи, за которые мы предлагаем вознаграждение...
 

Всем бобра.

При смене таймфрейма, который долго был не задействован, подвисает индикатор. Направьте меня, пожалуйста, где собака зарыта. Спасибо!

 
BROXIV:

Всем бобра.

При смене таймфрейма, который долго был не задействован, подвисает индикатор. Направьте меня, пожалуйста, где собака зарыта. Спасибо!

Собака данные подгружает.

 
BROXIV:

Всем бобра.

При смене таймфрейма, который долго был не задействован, подвисает индикатор. Направьте меня, пожалуйста, где собака зарыта. Спасибо!

Там же где и волк лисицу....

Покусал. А вы чё подумали? )))))))

 
Как может сначала вызываться функция, а потом объявляться. Программа работает не подряд или что?
 
Ivan_Invanov:
Как может сначала вызываться функция, а потом объявляться. Программа работает не подряд или что?

MQL-компилятор, а не интерпретатор, поиском почитайте : гугл - " компилятор линкер "





насколько высока вероятность получить из небольшой текстовой строки(10-50 символов)     md5-хеш (16 байт) равный 0xAAAAAAAAAAAAAAAA + 0xAAAAAAAAAAAAAAAA 

ulong hash[2]
this.hash[0] = this.hash[1] = 0xAAAAAAAAAAAAAAAA; 

 в общем нужен некий инициализатор HASH_NULL (нужны обоснованные варианты) , значение 0 почему то считаю не надежным


UPD: поиском проверил рашифровку online md5   https://md5.web-max.ca/

на md5-хеш:               aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa                  пишет Error , на 0 правда тоже ошибка

 

Добрый день! Пишу класс по сбору экстремумов на основе показаний индикатора iWPR. Привожу кусок кода: в начале создаю хендл индюка, затем копирую данные в буфер. На основании размера массива создаю цикл для получения данных индикатора, ну и для понимания что происходит я ход событий записываю в файл. Хочу отметить, что этот код я скопировал с MQL4, ну и естественно адаптировал под MQL5. То ли я что-то не понимаю, то ли я что-то не доделываю, но данные переменной dwpr записываются в файл с какой-то дичью. Что я не так делаю? Текстовик так называемого лога прикрепляю!

   hWPR=iWPR(NULL,period,240);
   CopyBuffer(hWPR,0,0,ibars,WPRBuffer);
   CopyLow(NULL,0,0,ibars,Low);
   CopyHigh(NULL,0,0,ibars,High);
   CopyTime(NULL,0,0,ibars,Time);
   int y=ArraySize(WPRBuffer);
   //int w=ArraySize(Low);
   //int x=ArraySize(High);
   //int z=ArraySize(Time);
   
   ResetLastError(); 
   if(flag){filehandle=FileOpen(Symbol()+"_VertexUpLoad_3.txt",FILE_WRITE|FILE_TXT);}
   if(flag){FileWrite(filehandle,"Количество элементов в буфере WPRBuffer "+IntegerToString(y)+" Low "+IntegerToString(w)+
            " High "+IntegerToString(x)+" Time "+IntegerToString(z));}
   //for(int i=ibars-1;i>0;i--)
   for(int i=1;i</*ibars*/y-1;i++)
     {
      if(i==344)
      {
      Print("");}
      datetime d=Time[i];
      //if(x<D'2004.04.02. 12:00:00'){continue;}//участок кода для тестирования
      if(flag){FileWrite(filehandle,"======================================================================================");}
      dwpr=NormalizeDouble(WPRBuffer[i],4);
      if(dwpr>=dup&&dwpr<0.0){chflag=2;}//индикатор в верхней экстремальной зоне
      if(dwpr<=ddn&&dwpr>-100.1){chflag=1;}//индикатор в нижней ЭЗ, а остальное все тоже самое
//Самое начало пока индикатор "балтается"      
      if(dwpr>=0.0000){if(flag){FileWrite(filehandle,"Самое начало пока индикатор балтается. Бар № "+IntegerToString(i)+
                                         " dwpr "+DoubleToString(dwpr,4));}
Файлы:
Причина обращения: