Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 487

 
igrok333:

Как прочитать 8-мую строку файла?

вопрос касается файловых операций

https://docs.mql4.com/ru/files


Все в mql делается перебором, как мне кто-то когда-то говорил?


Другим способом нельзя?

Все типы данных имеют определённый размер занимаемой памяти в байтах. Соответственно можно при написании кода использовать это и смещать файловый указатель на количество занимаемых байт данными одной строки.

Если в строке 4 значения типа double то получается строка занимает 4*8 = 32 байта. Соответственно для чтения 9-й строки файла надо сместить файловый указатель на 256 байт.

bool  FileSeek(
   int                  file_handle,     // handle файла
   long                 offset,          // в байтах 
   ENUM_FILE_POSITION   origin           // позиция для отсчета
   );
bool  FileSeek(file_handle, 265, SEEK_SET);

Если-же смещается указатель от конца файла, то значение должно быть отрицательным.

Но, это не всё так гладко. Некоторое время назад, я разбирался с этим вопросом и выяснил, что файлы .txt и .csv некорректно работают с этим, а вот файлы типа .bin ошибок не допускают. Возможно что уже эта проблема исправлена и вам повезёт.

 
Alexey Viktorov:

Если в строке 4 значения типа double

а разве в файле csv все значения не строковые(string)?


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

bool  FileSeek(file_handle, 84, SEEK_SET);

спасибо за инфу.

 
Как в mql 5 сделать цикл по всем открытым позициям?
 
Roman Sharanov:
Как в mql 5 сделать цикл по всем открытым позициям?
это тема по mql4
 
igrok333:
это тема по mql4

Нет, эта тема и по mql4, и по mql5

 
Roni Iron:

Добрый День!

Вопрос: как ускорить работу тестера в терминале?

У меня он использует только 1 поток процессора из 4-х, и только 150мб оперативки. (т.е. не использует всю мощь ПК)

Какие есть варианты?

Если это уже обсуждалось, то подкиньте ссылки Пожалуйста!

Если МТ4 то тут играет роль только частота процессора. Использует один поток ? Ну в этом есть и доля преимущества, можете одновременно 4 терминала МТ4 запустить с разными задачами тестирования или оптимизации. И будет таже нагрузка на процессор, как и на одном терминале.

 
Roman Sharanov:
Как в mql 5 сделать цикл по всем открытым позициям?

В mql5 различаются позиции и ордера. Позиция - это результат сделки. А сделка - это результат срабатывания ордера.

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

Если маркет-ордер сработал (произошла сделка), то в результате этой сделки появляется (или изменяется уже существующая) позиция.

На хэджевом счёте может быть много раздельных позиций (в том числе и разнонаправленных), на неттинговом счёте позиция может быть только одна.

Так вот, чтобы перебрать в цикле все позиции, нужно организовать цикл по их количеству - соответственно, использовать PositionsTotal() вместо привычного для mql4 OrdersTotal().

Если же нужно в mql5 перебрать все ордера, то тут (в mql5) используется привычная для mql4 OrdersTotal().

 
igrok333:

а разве в файле csv все значения не строковые(string)?


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


спасибо за инфу.

Текстовый файл приходиться читать только по строкам. По-другому высчитать номер строки не получится. Поэтому - да, только последовательным чтением в цикле при помощи FileReadString.

 

На графике создаю уровни Фибоначчи с помощью ObjectCreate(name,OBJ_FIBO, ...), потом ObjectSetFiboDescription(name,0,"...") устанавливаю описание уровней, но надо названия отодвинуть от правого края. Дописал пробелы, но они не только отодвигают текст но и прикрывают линии. К тому же если дописать больше пробелов, то текст перестает отодвигаться.
Вопрос: можно ли в текст добавить "невидимый" символ, чтоб не прикрывал под ним лежащую линию?


 
Maxim Khrolenko:

На графике создаю уровни Фибоначчи с помощью ObjectCreate(name,OBJ_FIBO, ...), потом ObjectSetFiboDescription(name,0,"...") устанавливаю описание уровней, но надо названия отодвинуть от правого края. Дописал пробелы, но они не только отодвигают текст но и прикрывают линии. К тому же если дописать больше пробелов, то текст перестает отодвигаться.
Вопрос: можно ли в текст добавить "невидимый" символ, чтоб не прикрывал под ним лежащую линию?

попробуйте точки и символ с кодом 0

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