Новая версия платформы MetaTrader 5 build 2470 - страница 3

 
Alexey Viktorov:

Что-то у меня символы кракозябрами написаны.

Это в билде 2470


Возможно, описания символов неправильно импортировали на сервере брокера.

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

 
Vladimir Pastushak:

Вот

Взятый хендл индикатора увеличивает счетчик использований этого индикатора и не дает ему выгружаться.

Нужно явно освобождать хендл как описано в документации:

         //--- получим хэндл индикатора 
         int handle=ChartIndicatorGet(0,w,name); 
         //--- выведем в журнал 
         PrintFormat("Window=%d,  index=%d,  Name=%s,  handle=%d",w,i,name,handle); 
         //--- обязательно освобождаем хендл индикатора, как только он становится ненужным 
         IndicatorRelease(handle); 
 
Renat Fatkhullin:

Взятый хендл индикатора увеличивае счетчик использований этого индикатора и не дает ему выгружаться.

Нужно явно освобождать хендл как описано в документации:

Спасибо! Я понял это, исключив хендл самого индикатора.

 
Renat Fatkhullin:

Возможно, описания символов неправильно импортировали на сервере брокера.

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

Это терминал был установлен с инсталяшки БКС а потом открыт счёт открытия. На предыдущем билде 2463 такого не наблюдалось.

 
fxsaber:

В Терминале были два чарта (50 000 M1-баров, один и тот же символ) и на каждом безындикаторный советник (работает только с символом чарта). Каждый советник сопровождал свои 10 позиций и 10 ордеров.

Никаких тяжелых вычислений в советнике нет. Ценовые данные получает только через SymbolInfoTick и CopyTicksRange (только свежие тики - где-то 0-5 тиков после запроса). Бары не используются. Единственное, что OnTick мог длиться до 5 секунд, т.к. могло случиться до 20 OrderSend в одном OnTick. DLL, ex5-библиотеки, графические ресурсы и объекты не используются.


Терминал зависал на минуту-две. Никаких реакций или визуальных изменений данных. CPU на полную катушку. Потом отвисал.

Заметил, что зависание часто происходило, когда пачки тейков и лимитных ордеров срабатывали разом.

Потдверждаю выделенное. Жесткое зависание при срабатывании пачки.


Понаблюдал за этой ситуацией. Со стороны выглядит это так.

Цена доходит до пачки ордеров. Они все горят желтым. Потом отходит обратно - горят зеленым. Ничего не исполнено.

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


Т.е. Терминал долгое время не получает никаких данных о срабатывании пачки, хоть на сервере она уже давно сработала. Затем происходит зависание. И при отвисании ситуации становится такой же, как на сервере.

Если смотреть пустой Терминал, залогиненный на этот же счет, то там все четко отрабатывает. Боевой же Терминал (где трудятся роботы) - такие жесткие зависания.


Что делать?


ЗЫ Предолагаю, что это как-то связано в HistorySelect. Скорее всего, какой-то конфликт происходит. Т.к. робот через HistorySelect активно делает проверки. И когда идет дозапись в историю в результате совершения сделок, а параллельно работает HistorySelect, то происходит какой-то конфликт.

 
fxsaber :

PS I suppose that this is somehow connected in HistorySelect. Most likely, some kind of conflict is occurring. Because the robot through HistorySelect actively makes checks. And when there is an addition to history as a result of transactions, and HistorySelect is working in parallel, then some kind of conflict occurs.

maybe looping the selected story in reverse will help a bit?

maybe looping the selected history in reversed order will help a bit?

 
tickfenix:

maybe looping the selected story in reverse will help a bit?

maybe looping the selected history in reversed order will help a bit?

The problem is not in the EA, but in the Terminal.

 

Build 2470. Это больше не компилируется, работало нормально до 2450.

#define UUID             863AB5E6_E687_47C7_8BE9_6C2FBFC1D266
invalid suffix 'AB5E6_E687_47C7_8BE9_6C2FBFC1D266'    2470.mq5    10    26
 
Alain Verleyen:

Build 2470. Это больше не компилируется, работало нормально до 2450.

invalid suffix 'AB5E6_E687_47C7_8BE9_6C2FBFC1D266'    2470.mq5    10    26

Идентификатор(имя) не может начинаться с цифры

 
Ilyas :

Identifier (name) cannot begin with a digit

1. 863AB5E6_E687_47C7_8BE9_6C2FBFC1D266 не является идентификатором, это выражение соответствует документации :

#define identifier expression// parameter-free form

2. Прекрасно компилируется в C ++.

3. Препроцессор не должен обрабатывать выражение.

Ошибка должна быть возвращена компилятором только в том случае, если я неправильно использую этот макрос, но это не так.

 #define  UUID             863AB5E6_E687_47C7_8BE9_6C2FBFC1D266

 //+------------------------------------------------------------------+ 
 //| Script program start function                                    | 
 //+------------------------------------------------------------------+ 
 void OnStart ()
  {
 //--- 
  }

invalid suffix 'AB5E6_E687_47C7_8BE9_6C2FBFC1D266'    2470.mq5    10    26

Это ошибка

Documentation on MQL5: Language Basics / Preprocessor / Macro substitution (#define)
Documentation on MQL5: Language Basics / Preprocessor / Macro substitution (#define)
  • www.mql5.com
Each directive is described by a separate entry and is valid until the line break. You cannot use several directives in one entry. If the directive entry is too big, it can be broken into several lines using the '\' symbol. In this case, the next line is considered a continuation of the directive entry. Parametric Form #define With the...
Файлы:
2470.mq5  1 kb