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

 
Aleksandr Slavskii #:
Если нужно в реально времени, то можно обратитьться на фриланс. Там сделают.

Да я и сам бы сделал с удовольствием, только не знаю, с какого боку подобраться) Был бы благодарен за подсказку! Может, есть какая-то инфа на форуме по этому вопросу?

 
SuhanovDM94 #:

Да я и сам бы сделал с удовольствием, только не знаю, с какого боку подобраться) Был бы благодарен за подсказку! Может, есть какая-то инфа на форуме по этому вопросу?

Самое простое писать котировки в файл на одном терминале в какой то общей расшаренной папке и пытаться читать этот файл другим терминалом. Но подводных камней много. В режиме записи чтение не доступно. Т.е. надо как то делать очередь. Терминалы работают только в своих песочницах и передача инфы между терминалами тоже не простой вопрос. Решается до записью из одного файла в другой например батником или чем другим на каком то языке. Можно копировать файл, но это не вариант, если просто писать и ничего не удалять в файле. Он просто станет большой и копирование будет занимать время слишком большое. Скажем так, это не для новичков.

 
Valeriy Yastremskiy #:

Самое простое писать котировки в файл на одном терминале в какой то общей расшаренной папке и пытаться читать этот файл другим терминалом. Но подводных камней много. В режиме записи чтение не доступно. Т.е. надо как то делать очередь. Терминалы работают только в своих песочницах и передача инфы между терминалами тоже не простой вопрос. Решается до записью из одного файла в другой например батником или чем другим на каком то языке. Можно копировать файл, но это не вариант, если просто писать и ничего не удалять в файле. Он просто станет большой и копирование будет занимать время слишком большое. Скажем так, это не для новичков.

В одном открываем с FILE_READ|FILE_WRITE|FILE_SHARE_READ, в другом с FILE_READ|FILE_SHARE_READ и нормально пишем (только один) и читаем (много) одновременно.

Доступ между терминалами решается симлинком.

 
Valeriy Yastremskiy #:

Самое простое писать котировки в файл на одном терминале в какой то общей расшаренной папке и пытаться читать этот файл другим терминалом. Но подводных камней много. В режиме записи чтение не доступно. Т.е. надо как то делать очередь. Терминалы работают только в своих песочницах и передача инфы между терминалами тоже не простой вопрос. Решается до записью из одного файла в другой например батником или чем другим на каком то языке. Можно копировать файл, но это не вариант, если просто писать и ничего не удалять в файле. Он просто станет большой и копирование будет занимать время слишком большое. Скажем так, это не для новичков.

Я думал, через MMF сделать. Только вопрос, как сделать так, чтоб по этим котировкам график рисовался?

 
JRandomTrader #:

В одном открываем с FILE_READ|FILE_WRITE|FILE_SHARE_READ, в другом с FILE_READ|FILE_SHARE_READ и нормально пишем (только один) и читаем (много) одновременно.

Доступ между терминалами решается симлинком.

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

И синтаксис ссылки тоже может заморочка быть, то слеш не тот, то их пару нужно)
 
Valeriy Yastremskiy #:

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

И синтаксис ссылки тоже может заморочка быть, то слеш не тот, то их пару нужно)

Мне чуть проще с симлинками - у меня не винда.

 
Попробую так: создам символ с формулой типа USDRUB/USDRUB - получится график с ценой 1. Затем создам индикатор, который будет читать файл с котировками USDTRY из разделяемой памяти, затем вычислять спрэд и отрисовывать его на этот "единичный" график в виде обычной линии. Ничего лучше пока не придумал. Всем спасибо за советы!)
 
Valeriy Yastremskiy #:

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

И синтаксис ссылки тоже может заморочка быть, то слеш не тот, то их пару нужно)

Писать в общую папку всех терминалов. Один пишет - остальные читают и создают график. Это грубо обобщённо если.

 
Artyom Trishkin #:

Писать в общую папку всех терминалов. Один пишет - остальные читают и создают график. Это грубо обобщённо если.

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

Когда в ворде360 или гугл общий доступ и общее редактирование там задача с очередью решена.  Набор текста это не запись, автосохранение и руками сохранить. И там очередь.

А так да, конечно коммон папки в песочнице нет, она за пределами.

 
SuhanovDM94 #:
Попробую так: создам символ с формулой типа USDRUB/USDRUB - получится график с ценой 1. Затем создам индикатор, который будет читать файл с котировками USDTRY из разделяемой памяти, затем вычислять спрэд и отрисовывать его на этот "единичный" график в виде обычной линии. Ничего лучше пока не придумал. Всем спасибо за советы!)

Почитайте: https://www.mql5.com/ru/articles/115

Реализация взаимодействия между клиентскими терминалами MetaTrader 5 при помощи именованных каналов (Named Pipes)
Реализация взаимодействия между клиентскими терминалами MetaTrader 5 при помощи именованных каналов (Named Pipes)
  • www.mql5.com
Данная статья знакомит с реализацией межпроцессного взаимодействия между терминалами MetaTrader 5 посредством именованных каналов (named pipes). Предложен класс CNamedPipes, реализующий возможность использования именованных каналов. Рассмотрен тиковый индикатор для тестирования связи между двумя клиентскими терминалами MetaTrader 5 и измерения общей пропускной способности системы. Представленный метод взаимодействия оказался пригодным для отправки котировок в реальном времени.