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

 
Maxim Kuznetsov #:

сам по себе файл не пробовали посмотреть ?

вы записываете бинарные значения, а читаете текстовую строку..

у импорта сделал  так

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 1;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));

у экспорта так

void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');

стало лучше, но первый импорт  строки  первого параметра  (aS[0]) всегда ошибка.


далее

tr - отражает переведённую строку в int (aS[0])

Файл просматривается, всё на своём месте. 


Но импорт первого параметра aS[0]  первой строки, не переводит в int.
 
Aleksandr Slavskii #:

Если не инициализировать массив, то в нём зачастую оказывается мусор.

Спасибо, я даже вспомнил, что уже встречался с таким (тут 0 меня смутил). Жаль, что в документации это не указано, приходится такие вещи держать в голове.

 
Mikhail Toptunov #:

у импорта сделал  так

у экспорта так

стало лучше, но первый импорт  строки  первого параметра  (aS[0]) всегда ошибка.


далее

tr - отражает переведённую строку в int (aS[0])

Файл просматривается, всё на своём месте. 


Но импорт первого параметра aS[0]  первой строки, не переводит в int.

Как такое может быть? - первый aS[0] всегда битый (ошибка 5040)


 
Люди добрые, подскажите пожалуйста. У меня стоит задача прогнать оптимизацию, но для оптимизации нужно использовать внешние данные. Я сделал так: создал файл с данными и при каждом проходе открываю файл записываю в массив и закрываю. Как можно оптимизировать и ускорить этот процесс?
 
Mikhail Toptunov #:

Как такое может быть? - первый aS[0] всегда битый (ошибка 5040)


поставьте в Export и Import кодировку UTF-8 (или по крайней мере одинаковую, однобайтовую без BOM)

(посмотрите файл в бинарном виде - там наверняка первые два байта BOM, то есть он юникод) - вы когда FileSeek(0,SEEK_SET) и далее чтение, то вы их считываете в строку и конвертация фейлится

 
Maxim Kuznetsov #:
BOM

Ну похоже получилось. Правда один раз всё же не отражает , но потом при удаления файла хоть перестало глючить.


FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0),CP_UTF8

Большое Вам СПАСИБО! 

 

Всем доброго утра и хорошего настроения!

Столкнулся с отсутствием в Справочнике MQL5 описания ResultRetcodeExternal. В поисковике получаю ответ: По вашему запросу ничего не найдено. Окольными путями вышел на то, что вроде бы это "Код ошибки, которую вернула внешняя торговая система. Проставление и виды этих ошибок зависят от брокера и внешней торговой системы, в которую выводятся торговые операции".

Вопрос: правильное определение нашёл или нет?

А заодно уже и второй вопрос к разработчикам документации: если это так, то почему бы Вам сразу не прописать для пользователей полную информацию, а не заставлять их искать где попало, что это за определение?

С уважением, Владимир.

 
MrBrooklin #:
ResultRetcodeExternal

А такого и не найдёте. Нету в MQL5.

Есть MqlTradeResult, где есть поле retcode_external, и где есть описание к этому полю.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Структура результата торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin #:

А такого и не найдёте. Нету в MQL5.

Есть MqlTradeResult, где есть поле retcode_external, и где есть описание к этому полю.

Спасибо за ответ, Артём, но честно говоря не совсем понял, что значит "нету в MQL5"? А тогда на картинке во включаемом файле Trade.mqh в выделенной цветом строке, что это такое?

Кстати, через эту строку и вышел на m_result.retcode_external, а далее на MqlTradeResult, где уже и нашел нужное мне описание. Вот отсюда и возникли вопросы.

С уважением, Владимир.

 
MrBrooklin #:

Спасибо за ответ, Артём, но честно говоря не совсем понял, что значит "нету в MQL5"? А тогда на картинке во включаемом файле Trade.mqh в выделенной цветом строке, что это такое?

Здравствуйте, Владимир.

Есть разница между языком программирования и программным кодом, написанным с использованием этого языка. Наверное, Артём имел ввиду, что в языке MQL5, к которому есть справка, нет такой готовой функции, структуры или других конструкций, реализация которых программисту не видна. Поэтому и нужна справка, содержащая информацию, как этими средствами языка надо пользоваться.

А файл Trade.mqh - это уже программный код, написанный на MQL5 и доступный программисту. Просто этот код написан разработчиками MQL5. В справке присутствует много примеров, в которых встречается использование этих библиотек, но полное описание их в справке языка является хоть и желательным, но не необходимым. Поэтому, как вы совершенно правильно сделали, надо посмотреть исходный код, чтобы понять какие вещи в справке надо поискать для прояснения своих вопросов.

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