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

 

Почему вы не можете поделиться кодом?

Я получаю ошибку: обнаружено использование DLL

Пожалуйста, дайте мне знать, как я могу поделиться кодом.

Я видел это: https://www.mql5.com/en/code/7673

И мой код похож.

Period Converter Optimized
Period Converter Optimized
  • www.mql5.com
Lastest Version: 1.4 2005.12.24  1.4      faster to detect if data changed by removing float point  operations, added support to output CSV file in real time.                             OutputCSVFile = 0 means no CSV.                             OutputCSVFile = 1 means CSV + HST.                             OutputCSVFile = 2 CSV only, no HST...
 

Здравствуйте. Что я делаю не так?

Есть индикатор гистограмма. Показывает разницу количества тиков вверх и вниз.

Пытаюсь использовать значения индикатора на 1, 2 и 3 баре в советнике.

double tbs1=iCustom(Symbol(),0,"tickbs",1,1);

double tbs2=iCustom(Symbol(),0,"tickbs",1,2);

double tbs3=iCustom(Symbol(),0,"tickbs",1,3);

В тестере получаю ошибку:     tickbs EURUSD,M1: array out of range in 'tickbs.mq4' (26,19)

#property copyright "tickbs"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers    1
#property indicator_color1     clrGreen
//--- input parameter
extern color   ClrUpUp        = clrGreen;
extern int     HistWidth      = 2;
//--- buffers
double BufB[];
double dOldPrice, dNewPrice;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(1);
   SetIndexBuffer(0,BufB);  
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrUpUp);       
   SetIndexLabel(0,"Hs");
   
   dOldPrice=Close[0];
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   dNewPrice=Close[0];
   if (dNewPrice>dOldPrice){
      BufB[0]=BufB[0]+1;
      dOldPrice=dNewPrice;
   }
   else 
      if (dNewPrice<dOldPrice){
         BufB[0]=BufB[0]-1;
         dOldPrice=dNewPrice;
      }
   return(rates_total);
  }
//+------------------------------------------------------------------+

Спасибо.

 
Oleg Bondarev:

Здравствуйте. Что я делаю не так?

Есть индикатор гистограмма. Показывает разницу количества тиков вверх и вниз.

Пытаюсь использовать значения индикатора на 1, 2 и 3 баре в советнике.


В тестере получаю ошибку:     tickbs EURUSD,M1: array out of range in 'tickbs.mq4' (26,19)

Спасибо.

Буферы индексируются с нуля.
 
Igor Makanu:

еще раз и еще раз.... класс это прежде всего тип данных, такой же как int, double...

хотите массив данных этого типа? - объявите массив, если массив динамический, то измените размер, затем инициализируйте КАЖДЫЙ ЭЛЕМЕНТ необходимыми данными - нужны указатели, значит инициализируйте указателями на класс, нужны экземпляры класса, значит каждый элемент массива будет не указатель,  а сам объект

в этом и суть ООП, что любой класс это прежде всего пользовательский тип данных.... не знаю сколько об этом уже говорить, но методика работы как с обычным типом данных, а вот что внутри класса Вы будете писать это дело личное, но инициализация нового экземпляра всегда будет начинаться с запуска конструктора, а какой там конструктор - по умолчанию, с параметрами или без параметров это дает возможность выбрать способ инициализации объекта...... фух, но все равно читайте книги, вопросами тут никак не получится

Подскажите плиз, что почитать по ООП с примерами для МТ4. Или вообще с примерами. Синтаксис и логику языка сходу сложно, а из мануала языка не всегда понятно до конца.

 
Valeriy Yastremskiy:

Подскажите плиз, что почитать по ООП с примерами для МТ4. Или вообще с примерами. Синтаксис и логику языка сходу сложно, а из мануала языка не всегда понятно до конца.

Зайдите здесь в раздел Статьи и полистайте - есть тут много по ООП, в том числе и для начинающих.

Статьи по MQL5
Статьи по MQL5
  • www.mql5.com
Статьи по программированию на языке MQL5
 
Artyom Trishkin:

Зайдите здесь в раздел Статьи и полистайте - есть тут много по ООП, в том числе и для начинающих.

Спасибо. Полезно. Может кому понадобится.

ООП

https://www.mql5.com/ru/articles/357

https://www.mql5.com/ru/articles/703

https://www.mql5.com/ru/articles/116

https://www.mql5.com/ru/articles/70

https://www.mql5.com/ru/articles/351

ГА

https://www.mql5.com/ru/articles/55

MQL4

https://www.mql5.com/ru/articles/1483

И мне понравилось)))

https://www.mql5.com/ru/articles/1499


А так же вопрос, при нажатии на статьи появляются 18 страниц статей и заголовок: 

Статьи по программированию на языках MQL4 и MQL5

при нажатии на вторую страницу MQL4 пропадает. При нажатии на MT4 появляются 6 страниц. И в начальной выборке их нет.


Объектно-ориентированный подход к построению мультитаймфреймовых и мультивалютных панелей
Объектно-ориентированный подход к построению мультитаймфреймовых и мультивалютных панелей
  • www.mql5.com
В статье рассказывается о том, как объектно-ориентированный подход может быть использован для создания мультитаймфреймовых и мультивалютных индикаторов для MetaTrader 5. Главной целью является построение универсальной панели, которая может быть использована для отображения различных типов данных (цены, их изменения, значения индикаторов...
 
Alexey Viktorov:
Буферы индексируются с нуля.

Спасибо.

 
Пожалуйста, кто-нибудь ответит на мой запрос на форуме: https://www.mql5.com/ru/forum/336385
Как я могу скопировать symbols.raw и symgroups.raw в новый файл с дополнительной группой и символом в соответствующей группе MQL4/MT4?
Как я могу скопировать symbols.raw и symgroups.raw в новый файл с дополнительной группой и символом в соответствующей группе MQL4/MT4?
  • 2020.04.01
  • www.mql5.com
Я хочу знать, как я могу создать новый файл, скажем symbols_extra.raw и symgroups_extra.raw на MQL4, используя существующие symbols.raw и symgroups...
 
Valeriy Yastremskiy:

при нажатии на вторую страницу MQL4 пропадает. При нажатии на MT4 появляются 6 страниц. И в начальной выборке их нет.

языки MQL4  и MQL5 одинаковы на 99% (без учета SQlITE, OpenCL, DirectX) , поэтому можете смело читать статьи по MQL5 , но с учетом того, что в терминалах 4 и 5 различная работа с ордерами, и есть нюансы по работе с таймсериями

 
Igor Makanu:

языки MQL4  и MQL5 одинаковы на 99% (без учета SQlITE, OpenCL, DirectX) , поэтому можете смело читать статьи по MQL5 , но с учетом того, что в терминалах 4 и 5 различная работа с ордерами, и есть нюансы по работе с таймсериями

Не про то, в начальной выборке нет статей по mql4. Это вводит в заблуждение. Кстати такая же логика и в кодобазе. Но там заголовки не меняются просто. Методом тыка пришлось доходить.) Спасибо, читаем)))

Причина обращения: