Новая версия платформы MetaTrader 4 build 1170 - страница 22

 
Artyom Trishkin:

Зато теперь компилятор на вот такой код:

говорит, что слишком сложное выражение:

указывая на границу двух цветов.

В 1170 всё компилировалось. Да и в MetaTrader 5 Build 2093 с его MetaEditor'ом версии 2093 всё отлично компилируется - ведь это по сути простой тернарный оператор, а все методы в его условиях возвращают простой текст в зависимости от того, что в них передано. И условия булевы.

А так как версия редактора в MetaTrader 5 старее версии редактора в MetaTrader 4 (редактор в MetaTrader 4 теперь версии 2116), то есть подозрение, что после очередного обновления MetaTrader 5, и он перестанет компилировать код - скажет, что слишком сложно...

К сожалению, пока придётся упрощать выражения, в которых компилятором генерируется более 32 неявных переменных.

Количество будет увеличено в одном из ближайших билдов.

 
Ilyas:


Для начала, выясните пожалуйста, какая кодировка у пользователя и какая у Вас.

Достаточно сообщить языки систем.


Судя по терминалу это английский. У меня ОС русский. 
Проблема в этом символе суффикс . 
Но это не проблема эксперта, ведь он берет значение из Symbol()
Я первый раз встречаю такой суффикс. 
И первый раз такую проблему. 

Например , я раньше переводил код на китайский и в мт4 он не отображается (в мт5 нормально) удалил. 
Но здесь я явно в коде не задаю символ. А получаю его из Symbol 

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




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

Вроде у меня этот символ отображается J и все нормально. 

а у пользователя £






вот какие данные я смог достать




и вот еще.

Советник не получает вообще никакую информацию о символе:


везде 0...



еще обнаружил, что терминал старый:


и такой банальный код его просто вешает:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
      Print(Symbol());
   Print(SymbolInfoDouble(Symbol(),SYMBOL_ASK));
   Print(MarketInfo(Symbol(),MODE_ASK));
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
      Print(Symbol());
   Print(SymbolInfoDouble(Symbol(),SYMBOL_ASK));
   Print(MarketInfo(Symbol(),MODE_ASK));

  }

Завтра попробую обновить пользователю терминал. 
 
Ilyas:

К сожалению, пока придётся упрощать выражения, в которых компилятором генерируется более 32 неявных переменных.

Количество будет увеличено в одном из ближайших билдов.

Хорошо. Буду иметь в виду. Спасибо.

 

А как обновиться?

Раньше при подключении к MQ Demo обновлялось, но сейчас я там счет не могу открыть...

2019.08.20 05:38:17.029 Account: failed connect to MetaQuotes-Demo, check internet connection or contact broker support service

Спасибо.
 
Andrey Barinov:

А как обновиться?

Раньше при подключении к MQ Demo обновлялось, но сейчас я там счет не могу открыть...

2019.08.20 05:38:17.029 Account: failed connect to MetaQuotes-Demo, check internet connection or contact broker support service

Спасибо.


до 1184 обновилось само, дальше не хочет..

Оставил на ночь. Утром перегрузил. 1190 сегодня уже. 

 
Andrey Barinov:

А как обновиться?

Раньше при подключении к MQ Demo обновлялось, но сейчас я там счет не могу открыть...

2019.08.20 05:38:17.029 Account: failed connect to MetaQuotes-Demo, check internet connection or contact broker support service

Спасибо.

проверил на втором терминале, без проблем к MQ Demo подключился, при открытии счета ввел имя брокера:  metaquotes

 
Ilyas:


Для начала, выясните пожалуйста, какая кодировка у пользователя и какая у Вас.

Достаточно сообщить языки систем.



К сожалению, обновление терминала до 1190 не помогло! 

Symbol возвращает ошибку , если у символа есть символ £

простой код:

void OnTick()
  {
//---
      Print(Symbol());
   Print(SymbolInfoDouble(Symbol(),SYMBOL_ASK));
   Print(MarketInfo(Symbol(),MODE_ASK));

  }

журнал выдает так:



Скомпилировал этот код у пользователя, у него все ок отображает.


Теперь вопрос: Как мне компилировать свой код, чтобы он работал у Всех? 

Автоматическое обновление - Для продвинутых пользователей - MetaTrader 5
Автоматическое обновление - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
Файлы:
TEST_2.mq4  4 kb
 
Vladislav Andruschenko:



К сожалению, обновление терминала до 1190 не помогло! 

Symbol возвращает ошибку , если у символа есть символ £

простой код:

журнал выдает так:


это из-за кодировки, добавьте в онинит строку:

MQLSetInteger(MQL_CODEPAGE,CP_ACP);
 
Taras Slobodyanik:

это из-за кодировки, добавьте в онинит строку:



Огромное человеческое спасибо. 

Помогло. 

И тут я вспомнил, что уже когда -то это делал. Когда не помню....

 

в справке ошибка, MQLSetInteger не находит, вместо этого 

MQSetInteger