Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1344

 
Vitaly Muzichenko #:

Вот так и есть. Видать архитектура мт5 - кривая. В мт4 всё работает отменно.

Если решили в мт5 так сделать, тогда поставили-бы запрет на запуск копии индикатора с одинаковыми входными параметрами, а то вроде как он есть, а по факту его - нет.

Расчётная часть индикатора - не одно и то же, что графическая. Поэтому расчётная для них всех одна. Графических несколько.

А нельзя ли в одном индикаторе просто поискать все подокна, и в них засунуть лейблы с номером подокна? При этом отлавливать в таймере количество подокон чарта: увеличилось - добавить на новое подокно лейбл. Но ещё и поискать что за индикатор в нём помещён - если другой, то не добавлять...

Просто непроверенная идейка.

ЗЫ. Не соглашусь про "кривизну". Одна расчётная часть на 20 одинаковых индикаторов лучше, чем 20 расчётных частей на 20 одинаковых индикаторов.

 
Artyom Trishkin #:

Расчётная часть индикатора - не одно и то же, что графическая. Поэтому расчётная для них всех одна. Графических несколько.

А нельзя ли в одном индикаторе просто поискать все подокна, и в них засунуть лейблы с номером подокна? При этом отлавливать в таймере количество подокон чарта: увеличилось - добавить на новое подокно лейбл. Но ещё и поискать что за индикатор в нём помещён - если другой, то не добавлять...

Просто непроверенная идейка.

ЗЫ. Не соглашусь про "кривизну". Одна расчётная часть на 20 одинаковых индикаторов лучше, чем 20 расчётных частей на 20 одинаковых индикаторов.

Делал, на кнопку нет реакции - не срабатывает OnChartEvent копии и не понимает номер подокна.

В общем, вот что не срабатывает и вместе с этим остальной код

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Igor Makanu, 2021.09.12 21:53

и не получится:

добавил в:

int OnInit()
{
   Print(__FUNCTION__);

набрасываю индикатор - получаю в логе OnInit, а вот следующий индикатор уже молчит, т.е. действительно запущена всего одна копия индикатора, а остальные индикаторы это просто графическая оболочка


 
Vitaly Muzichenko #:

Делал, на кнопку нет реакции - не срабатывает OnChartEvent копии и не понимает номер подокна.

В общем, вот что не срабатывает и вместе с этим остальной код


НО!!! Если сделать шаблон с 2-3 этими индикаторами под именем «Debug.tpl» и запустить отладку индикатора, то OnInit() работает как и положено.

В общем провёл такой эксперимент:

Перенёс #property по максимуму в OnInit(), в расчёте на то, что пока не создан индикатор, будет выполняться OnInit() и короткое имя индикатора сделать в зависимости от количества индикаторов в окне.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
//#property indicator_label1  "Label1"
//#property indicator_type1   DRAW_LINE
//#property indicator_color1  clrRed
//#property indicator_style1  STYLE_SOLID
//#property indicator_width1  2
//--- indicator buffers
double         Label1Buffer[];
input int MASlow = 21; // Период медленной МА
input int MAFast = 8;  // Период быстрой МА
//input string shortName = "1";  // Префикс…
long chart_id = ChartID();
string short_name = "";
/********************************************************************\
|           Custom indicator initialization function                 |
\********************************************************************/
int OnInit()
 {
//--- indicator buffers mapping
  long windows_total = ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL);
  short_name = (string)windows_total;
  Print(short_name);
  PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE);
  PlotIndexSetInteger(0, PLOT_LINE_COLOR, clrRed);
  PlotIndexSetInteger(0, PLOT_LINE_STYLE, STYLE_SOLID);
  PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 2);
  PlotIndexSetString(0, PLOT_LABEL, "Label1");
  IndicatorSetString(INDICATOR_SHORTNAME, short_name);
  SetIndexBuffer(0, Label1Buffer, INDICATOR_DATA);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

Но это не помогло:

Запускаю первую копию

Имя индикатора 2………

Запускаю вторую копию — имя индикатора по прежнему 2 у обоих индикаторов

Запускаю отладку и что вижу!!! Ещё не загруженный индикатор уже печатает… читайте вторую и третью строку…

как это может быть?


Дальше отладка остановлена на входе в OnInit(), переменная windows_total содержит мусор, short_name пока ещё пустая строка…

Здрасьте……… но ведь всё это уже напечатано… как это так???

И short_name уже поменялись

В итоге после полной загрузки индикатора в режиме отладки вот такие имена индикаторов

Наверное надо обратить внимание разработчиков на такие баги…

 
 Друзья привет может быть я не в тему ,но виже раздел с названием:"Вопросы от начинающих MQL5 MT5 MetaTrader 5".Поэтому вопрос :раньше скачивал Демо советника с Маркета для тестирования сейчас что только не делал МТ 5 не могу скачать Демо.МТ4 без проблем,МТ 5 нет в чем причина?
 
Barop Yuj #:
 Друзья привет может быть я не в тему ,но виже раздел с названием:"Вопросы от начинающих MQL5 MT5 MetaTrader 5".Поэтому вопрос :раньше скачивал Демо советника с Маркета для тестирования сейчас что только не делал МТ 5 не могу скачать Демо.МТ4 без проблем,МТ 5 нет в чем причина?

скорее всего старая версия Windows 32 

 
Barop Yuj #:
 Друзья привет может быть я не в тему ,но виже раздел с названием:"Вопросы от начинающих MQL5 MT5 MetaTrader 5".Поэтому вопрос :раньше скачивал Демо советника с Маркета для тестирования сейчас что только не делал МТ 5 не могу скачать Демо.МТ4 без проблем,МТ 5 нет в чем причина?

Что никто не занимался угадайкой, покажите данные терминала и операционной системы, пример:

Если у вас есть вопрос, прежде всего вы должны показать первые три строки из вкладки "Журнал".


(выделите эти строки, скопируйте в буфер обмена и вставьте в сообщение с помощью кнопки  Code ). Должно получиться так:

 2021.03 . 16 05 : 13 : 07.133 Terminal        MetaTrader 5 x64 build 3003 started for MetaQuotes Software Corp.
2021.03 . 16 05 : 13 : 07.134 Terminal        Windows 10 build 19042 , Intel Core i7- 9750 H  @ 2.60 GHz, 26 / 31 Gb memory, 842 / 947 Gb disk, IE 11 , UAC, GMT+ 2
2021.03 . 16 05 : 13 : 07.134 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
 

Могут ли наследники одного класса общаться между собой?

Допустим есть класс "Автомобиль". Созданы три экземпляра класса

Могут ли "Жигули" посигналить "Москвичу"? То есть могут ли "Жигули" вызвать метод из "Москвича"?

[Удален]  
Vladimir Karputov #:

Могут ли наследники одного класса общаться между собой?

Допустим есть класс "Автомобиль". Созданы три экземпляра класса

Могут ли "Жигули" посигналить "Москвичу"? То есть могут ли "Жигули" вызвать метод из "Москвича"?

Общаться могут. Вызывать метод не могут.

 
Koldun Zloy #:

Общаться могут. Вызывать метод не могут.

Спасибо, именно нужен был вызов метода. Буду перестраивать значит архитектуру...

 
Vladimir Karputov #:

Спасибо, именно нужен был вызов метода. Буду перестраивать значит архитектуру...

Сделай класс, который они все видят. И отсылай через него сообщения друг другу.