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

 
psyman:


А как в пятерке убедиться что данные закачаны?

Справку "Организация доступа к данным" прочитал, интересует есть ли простой способ именно проверки.

https://www.mql5.com/ru/code/1251

этот код в справке МТ5 есть

что значит простой способ? - силой мысли что ли? ))) - в программировании всегда так, или пишешь все сам с нуля, или используешь чьи то готовые решения, что первый, что второй случай требует времени - или писать и разрабатывать свой код или разбираться с чужим решением, что проще - Ваш выбор

 
Igor Makanu:

https://www.mql5.com/ru/code/1251

этот код в справке МТ5 есть

что значит простой способ? - силой мысли что ли? ))) - в программировании всегда так, или пишешь все сам с нуля, или используешь чьи то готовые решения, что первый, что второй случай требует времени - или писать и разрабатывать свой код или разбираться с чужим решением, что проще - Ваш выбор

Спасибо за ссылку, библиотека это и есть простой способ :-)

Правда в комментах говорят что в некоторых случаях зависает. 

Насколько понимаю асинхронный способ докачки для одной копии индюка невозможен, придется ждать пока он последовательно по каждому инструменту всю очередь обработает?

 
psyman:

Спасибо за ссылку, библиотека это и есть простой способ :-)

Правда в комментах говорят что в некоторых случаях зависает. 

Насколько понимаю асинхронный способ докачки для одной копии индюка невозможен, придется ждать пока он последовательно по каждому инструменту всю очередь обработает?

библиотека не зависает

докачивать историю можно тольок в советниках, в справке указано, что не использовать в индикаторах

индикаторы, опять же примеры в КБ или в статьях, поиском мультисимвольный или мультивалютный 

 

в Mql4 есть интересные вещи. Приведу пример. Допустим есть функция.

ArrayResize()

Она имеет тип int но её можно вызвать как (void) процедурную функцию без возврата значения? Интересно как-то.

 

Здравствуйте. Подскажите, пожалста, как поправить?

На демо советник открывает не все ордера, выдает ошибку 129 (неправильная цена), хотя в OrderSend указаны Ask/Bid, проскальзывание с запасом.  Заметил что при удалении советника терминал подвисает секунд на 10 и выдает в журнал 

 

При этом, в тестере, ошибок и подвисаний нет

Файлы:
 
Igor Makanu:

библиотека не зависает

докачивать историю можно тольок в советниках, в справке указано, что не использовать в индикаторах

индикаторы, опять же примеры в КБ или в статьях, поиском мультисимвольный или мультивалютный 


Вот здесь автор вынес инициализацию массивов в отдельную библиотеку, какой в этом смысл?

Функции для инициализации массивов расположим в подключаемом файле InitArrays.mqh
 
psyman:


Вот здесь автор вынес инициализацию массивов в отдельную библиотеку, какой в этом смысл?

не знаю, статья 2013 года, возможно ранее было необходимо делать как автор статьи, пример из КБ (он же и в справке) работает в советниках и в скриптах без проблем, сам пользуюсь - проблем не замечал

если мне нужно будет написать индикатор который будет получать данные с другого ТФ или символа, найду у этого автора в его примерах 

 
Такой вопрос. У меня на грфике 200 баров, функция iBars() вернула 200(201 если не учитывать 0), я удалил 5 баров справа из архива котировок количество баров стало 195 (функция iBars() вернула 195 баров) и график стал короче, потом я включил связь и эти 5ть баров появились на графике и в архиве котировок, насколько будет больше возвращаемое значение функцией iBars() в момент включения связи? Я заметил что когда так делаешь то оно увеличивает количество баров по одному а не сразу грузит 5ть это очень странно, если пропустить очень большой участок то оно будет считать по одному бару из-за этого придётся делать левые проверки. Как работает функция iBars() она возвращает все бары сразу когда есть связь или работает каким-то другим образом?
 
Seric29:
Такой вопрос. У меня на грфике 200 баров, функция iBars() вернула 200(201 если не учитывать 0), я удалил 5 баров справа из архива котировок количество баров стало 195 (функция iBars() вернула 195 баров) и график стал короче, потом я включил связь и эти 5ть баров появились на графике и в архиве котировок, насколько будет больше возвращаемое значение функцией iBars() в момент включения связи? Я заметил что когда так делаешь то оно увеличивает количество баров по одному а не сразу грузит 5ть это очень странно, если пропустить очень большой участок то оно будет считать по одному бару из-за этого придётся делать левые проверки. Как работает функция iBars() она возвращает все бары сразу когда есть связь или работает каким-то другим образом?

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

 
Artyom Trishkin:

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

Понятно просто я рассчитываю расчёты на резкую подачу баров, я думал что оно работает один к одному: к примеру пропущено 5 баров включаешь сеть оно загружает данные тратит на это столько времени сколько нужно, а потом уже происходит возврат количества баров функцией  iBars() с возможной разницей больше единицы. Значит разработчиками предусмотрена подача баров по одному это упрощает написание кода но в случае больших пропущенных участков создаст лишнюю работу роботу. Значит во всех случаях чтобы не произошло будет происходить подкачка баров через функцию по одному, 195, 196, 197, 198, 199, 200, на сколько это надёжный механизм не получиться ли так что оно подзависнет или что-то произойдёт и вместо подачи по одному произойдёт подача всего участка это возможно?