Попробую так: создам символ с формулой типа USDRUB/USDRUB - получится график с ценой 1. Затем создам индикатор, который будет читать файл с котировками USDTRY из разделяемой памяти, затем вычислять спрэд и отрисовывать его на этот "единичный" график в виде обычной линии. Ничего лучше пока не придумал. Всем спасибо за советы!)
в момент записи винда не даст прочитать, там очередь винды будет без ошибки, а если долго писать будет то возвратит ошибку. Симлинк не везде тоже дойдет, только до коммон папки, а в рабочие или тестера у меня не получилось.
И синтаксис ссылки тоже может заморочка быть, то слеш не тот, то их пару нужно)
Писать в общую папку всех терминалов. Один пишет - остальные читают и создают график. Это грубо обобщённо если.
Писать в общую папку всех терминалов. Один пишет - остальные читают и создают график. Это грубо обобщённо если.
это понятно, но в винде когда файл используется для изменения, т.е. в момент записи доступ к чтению закрыт, и если нагрузка на проц большая, то это может быть долго, это надо учитывать как то.
Когда в ворде360 или гугл общий доступ и общее редактирование там задача с очередью решена. Набор текста это не запись, автосохранение и руками сохранить. И там очередь.
А так да, конечно коммон папки в песочнице нет, она за пределами.
SuhanovDM94 #: Попробую так: создам символ с формулой типа USDRUB/USDRUB - получится график с ценой 1. Затем создам индикатор, который будет читать файл с котировками USDTRY из разделяемой памяти, затем вычислять спрэд и отрисовывать его на этот "единичный" график в виде обычной линии. Ничего лучше пока не придумал. Всем спасибо за советы!)
Данная статья знакомит с реализацией межпроцессного взаимодействия между терминалами MetaTrader 5 посредством именованных каналов (named pipes). Предложен класс CNamedPipes, реализующий возможность использования именованных каналов. Рассмотрен тиковый индикатор для тестирования связи между двумя клиентскими терминалами MetaTrader 5 и измерения общей пропускной способности системы. Представленный метод взаимодействия оказался пригодным для отправки котировок в реальном времени.
Перед многими разработчиками встает одинаковая проблема - как пробиться в песочницу торгового терминала без применения небезопасных DLL. Одним из простых и безопасных методов является использование стандартных именованных каналов (Named Pipes), которые работают как обычные файловые операции. Они позволяют организовать межпроцессорное клиент-серверное взаимодействие между программами. Посмотрите практические примеры на C++ и MQL5 в виде сервера, клиента, обмен данными между ними и замер производительности.
Добрый день программисты! Помогите пожалуйста со скриптом. Мне нужно чтобы чтобы скрипт по списку дат рисовал на графике множесво вертикальных линий. Тоесть к примеру: я ввожу в тело кода, список из 100 дат к примеру, и скрипт просто рисует по каждой дате вертикальную линию.
Я вот тут начал, что-то пытаться, но как-то очень громоздко получается, и это только одна линия.
#property strict//--- описание#property description"Скрипт строит графический объект \"Вертикальная линия\"."#property description"Дата точки привязки задается в процентах от ширины"#property description"окна графика в барах."//--- покажем окно входных параметров при запуске скрипта#property script_show_inputs//--- входные параметры скриптаinputstring InpName="VLine"; // Имя линииinputint InpDate=25; // Дата линии в %inputcolor InpColor=clrRed; // Цвет линииinputENUM_LINE_STYLE InpStyle=STYLE_DASH; // Стиль линииinputint InpWidth=3; // Толщина линииinputbool InpBack=false; // Линия на заднем планеinputbool InpSelection=true; // Выделить для перемещенийinputbool InpHidden=true; // Скрыт в списке объектов//+------------------------------------------------------------------+//| Создает вертикальную линию |//+------------------------------------------------------------------+bool VLineCreate(constlong chart_ID=0, // ID графикаconststring name="VLine", // имя линииconstint sub_window=0, // номер подокнаdatetime time=0, // время линииconstcolor clr=clrRed, // цвет линииconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль линииconstint width=1, // толщина линииconstbool back=false, // на заднем планеconstbool selection=true, // выделить для перемещенийconstbool hidden=true) // скрыт в списке объектов
{
//--- если время линии не задано, то проводим ее через последний бар
time=TimeCurrent();
ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0);
//--- установим цвет линииObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линииObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линииObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения линии мышью//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
return(true);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
datetime time=TimeCurrent();
//--- создадим вертикальную линию
VLineCreate(0,InpName,0,time,InpColor,InpStyle,InpWidth,InpBack,
InpSelection,InpHidden);
return;
}
Добрый день программисты! Помогите пожалуйста со скриптом. Мне нужно чтобы чтобы скрипт по списку дат рисовал на графике множесво вертикальных линий. Тоесть к примеру: я ввожу в тело кода, список из 100 дат к примеру, и скрипт просто рисует по каждой дате вертикальную линию.
Я вот тут начал, что-то пытаться, но как-то очень громоздко получается, и это только одна линия.
Дату в string через разделитель.
Затем сплит этой строки в массив.
Потом пройтись в цикле по массиву на каждой итерации вызывая
в момент записи винда не даст прочитать, там очередь винды будет без ошибки, а если долго писать будет то возвратит ошибку. Симлинк не везде тоже дойдет, только до коммон папки, а в рабочие или тестера у меня не получилось.
И синтаксис ссылки тоже может заморочка быть, то слеш не тот, то их пару нужно)Писать в общую папку всех терминалов. Один пишет - остальные читают и создают график. Это грубо обобщённо если.
Писать в общую папку всех терминалов. Один пишет - остальные читают и создают график. Это грубо обобщённо если.
это понятно, но в винде когда файл используется для изменения, т.е. в момент записи доступ к чтению закрыт, и если нагрузка на проц большая, то это может быть долго, это надо учитывать как то.
Когда в ворде360 или гугл общий доступ и общее редактирование там задача с очередью решена. Набор текста это не запись, автосохранение и руками сохранить. И там очередь.
А так да, конечно коммон папки в песочнице нет, она за пределами.
Попробую так: создам символ с формулой типа USDRUB/USDRUB - получится график с ценой 1. Затем создам индикатор, который будет читать файл с котировками USDTRY из разделяемой памяти, затем вычислять спрэд и отрисовывать его на этот "единичный" график в виде обычной линии. Ничего лучше пока не придумал. Всем спасибо за советы!)
Почитайте: https://www.mql5.com/ru/articles/115
И ещё: https://www.mql5.com/ru/articles/503
Добрый день!
Подскажите, пожалуйста, зачем нужно форвард-тестирование?
Добрый день программисты! Помогите пожалуйста со скриптом. Мне нужно чтобы чтобы скрипт по списку дат рисовал на графике множесво вертикальных линий. Тоесть к примеру: я ввожу в тело кода, список из 100 дат к примеру, и скрипт просто рисует по каждой дате вертикальную линию.
Я вот тут начал, что-то пытаться, но как-то очень громоздко получается, и это только одна линия.
Добрый день программисты! Помогите пожалуйста со скриптом. Мне нужно чтобы чтобы скрипт по списку дат рисовал на графике множесво вертикальных линий. Тоесть к примеру: я ввожу в тело кода, список из 100 дат к примеру, и скрипт просто рисует по каждой дате вертикальную линию.
Я вот тут начал, что-то пытаться, но как-то очень громоздко получается, и это только одна линия.
Дату в string через разделитель.
Затем сплит этой строки в массив.
Потом пройтись в цикле по массиву на каждой итерации вызывая
Спасибо. Поскольку программист я весьма поверхностный. Начну спрашивать по порядку.
"Дату в string через разделитель."
Использовать " string TimeToString( "
????