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

 

При смене торгового счета REASON_ACCOUNT ожидалось получать прошлый счет и завершать работу именно с ним, по логике вещей, но нет если счет изменился то уже в деините при REASON_ACCOUNT получаем новый номер.

По логике программа должна закончить работу с текущими данными и при новом вызове уже передавать новые данные и не менять данные в процессе работы...

 
Vladimir Pastushak:

При смене торгового счета REASON_ACCOUNT ожидалось получать прошлый счет и завершать работу именно с ним, по логике вещей, но нет если счет изменился то уже в деините при REASON_ACCOUNT получаем новый номер.

По логике программа должна закончить работу с текущими данными и при новом вызове уже передавать новые данные и не менять данные в процессе работы...

Вот код демонстрирующий не верное поведение

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason == REASON_ACCOUNT)
      Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

Результат

2020.10.28 17:23:05.725 Test (EURUSD,M1)        Stop 600....
2020.10.28 17:23:06.306 Test (EURUSD,M1)        Start 600....
2020.10.28 17:23:17.478 Test (EURUSD,M1)        Stop 535....
2020.10.28 17:23:18.156 Test (EURUSD,M1)        Start 535....
 
Vladimir Pastushak:

При смене торгового счета REASON_ACCOUNT ожидалось получать прошлый счет и завершать работу именно с ним, по логике вещей, но нет если счет изменился то уже в деините при REASON_ACCOUNT получаем новый номер.

По логике программа должна закончить работу с текущими данными и при новом вызове уже передавать новые данные и не менять данные в процессе работы...

Это не ошибка, а потому поведение меняться не будет. Просто учитывайте данную особенность.

 
Вопрос разработчикам.
Если существует индикатор, в котором есть достаточно ресурсоемкая функция расчета визуализации на Canvas, причем на каждом тике. 
И этот индикатор используется в EA через iCustom. 


Вопрос.

Происходит ли в этом случает (через iCustom) вызов функций с расчетом канваса, не смотря на то, что сам канвас не выводится?
Подозреваю, что происходит.
Тогда наверное имеет смысл мне самому создавать в индикаторе режим специально без графических расчетов специально для использования через iCustom?
Или каким-то волшебным образом iCustom запускает только те функции, которые имееют отношение к формированию буферов индикатора, а остальные игнорирует?
 
Nikolai Semko:
Тогда наверное имеет смысл создавать в индикаторе режим специально без графических расчетов специально для использования через iCustom?

это ведь можно сделать самому

 
Andrei Trukhanovich:

это ведь можно сделать самому

наверное имели ввиду проверить самому?
Сделать то конечно можно. 
Ну да, если не ответят, тогда проверю сам. Просто для этого нужно время и боюсь при этом все равно не будет всей полноты понимания. Вдруг существуют какие-либо нюансы и особенности.

 
Nikolai Semko:

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

навскидку запрос id чарта или подокна будет возвращать невалидное значение из-под iCustom - вот вам и режим.

А просить двойственное исполнение пользовательского кода эээ немного странно. нюансов в mql и так за глаза, к чему еще один если сепарацию можно легко сделать самому?

 
Andrei Trukhanovich:

навскидку запрос id чарта или подокна будет возвращать невалидное значение из-под iCustom - вот вам и режим.

А просить двойственное исполнение пользовательского кода эээ немного странно. нюансов в mql и так за глаза, к чему еще один если сепарацию можно легко сделать самому?

Вы не поняли. Я прошу MQ только ответить Да или Нет. Остальное, понятное дело, сделаю сам. Как сделать - вопросов нет.

ЗЫ Хотя, пожалуй глупый вопрос с моей стороны. Понятное дело, что будет вызываться эта функция. Как можно распознать её ненужность в формировании буферов индикатора. Можно конечно, но вряд ли с этим MQ заморачивались.


ЗЫЗЫ Подумал с пристрастием. Все же, не исключаю, что эта сепарация функций уже реализована. Для компилятора это не очень сложная задача. Все же буду ждать ответа от MQ.

 
Сами дураки. 
 
Nikolai Semko:

Вы не поняли. Я прошу MQ только ответить Да или Нет. Остальное, понятное дело, сделаю сам. Как сделать - вопросов нет.

ЗЫ Хотя, пожалуй глупый вопрос с моей стороны. Понятное дело, что будет вызываться эта функция. Как можно распознать её ненужность в формировании буферов индикатора. Можно конечно, но вряд ли с этим MQ заморачивались.


ЗЫЗЫ Подумал с пристрастием. Все же, не исключаю, что эта сепарация функций уже реализована. Для компилятора это не очень сложная задача. Все же буду ждать ответа от MQ.

Канвас - обычный граф. объект. Они рисуются и при iCustom-вызовах.

Я передавал параметр, чтобы понимать, что работаем "из эксперта", и не рисовать лишнюю графику (и не удалять то, что нарисовали другие).