Для начала, разберитесь, сколько исполняются ордера. Если 4 секунды, то решение однозначное — менять брокера.
а на самом деле НЕТ. 4 сек - если это только на каких-то пиках, то это нормально.
пауза к котировках валют от биржы может достигать в 15-30 сек (и достает кстати). Это в пиках, в умным людям заранееизвестных местах. В обыденном ритме в тех же местах там паузы 1-2 сек максимум или вообще незаметны невооружённым глазом.
и задержки исполнения там будут конечно-же на сопряжённых forex-серверах. И 4 сек для них это нормаль. Если конечно не круглосуточно такая дребедень, а ровно 1-2-3-4 (и регулярно и от инструмента) в день
есть несразу понятный многим парадокс - чем кухоннее кухня, тем быстрее там исполнение :-) Если гнаться за скоростью исполнения приказов, то это 100пудовый влёт, если контрагента вы не знаете лично на расстоянии кулака
Ihor Herasko #: Если советник один и нельзя сделать из него три, общающихся между собой, то можно устроить одновременную отправку трех ордеров путем запуска трех скриптов. Но для этого потребуется разрешение на использование DLL.
Продолжая изучать варианты я нашла что это возможно реализовать с помощью GlobalVariable Т.е. советник - сервер следит за появлением ситуации (условия) и при появлении условия - создает глобальную переменную а советник - клиент отслеживает появление глобальной переменной и при ее наличие открыть ордер (каждый на своей паре)
Нет, это очень долго. Попробуйте три одинаковых советника на трёх связанных парах. Каждый торгует свою пару, но их логика связана на уровне алгоритма. Без обмена данными и без общих потоков.
Для начала, разберитесь, сколько исполняются ордера. Если 4 секунды, то решение однозначное — менять брокера.
Если проблема в том, что советник ждет следующих тиков, то нужно переписать советника.
Пилить костыли для одновременной отправки нескольких торговых запросов можно, но я бы скорее перешел на МТ5. Это перспективнее.
Понимаете брокера и терминал я не могу поменять от слова никак.
Поэтому исхожу из того, что есть. Сейчас задалась вопросом, а что если разделить задачу. Индикатор ищет подходящую ситуацию, а советник только открывает ордера. При этом можно на каждой паре запустить и советник и индикатор. Буду пробовать. Так как при одновременном запуске но на разных парах (чартах) все происходит идеально разница +\- секунда но это я думаю из-за тиков, что вполне нормально и ожидаемо
Так как при одновременном запуске но на разных парах (чартах) все происходит идеально разница +\- секунда но это я думаю из-за тиков, что вполне нормально и ожидаемо
Natalya Smirnova #: Если не сложно подскажите каким образом это сделать для МТ4?
Непосредственно запуск скрипта делается вот так:
#define STRATEGY_SCRIPT_NAME "ttttt"// Имя скрипта для выполнения торговых действий #import "user32.dll"int RegisterWindowMessageA(uchar &lParam[]);
int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
#import
void RunScript(int hChart /*идентификатор чарта, на котором следует запустить скрипт*/)
{
staticint mt4Message = 0;
char buffer[];
// Получение идентификатора внутреннего сообщения МТ4 if (mt4Message == 0)
{
StringToCharArray("MetaTrader4_Internal_Message", buffer);
mt4Message = RegisterWindowMessageA(buffer);
}
// Запуск скриптаStringToCharArray(STRATEGY_SCRIPT_NAME, buffer);
SendMessageA(hChart, mt4Message, 16, buffer);
}
Для начала, разберитесь, сколько исполняются ордера.
Если 4 секунды, то решение однозначное — менять брокера.
а на самом деле НЕТ. 4 сек - если это только на каких-то пиках, то это нормально.
пауза к котировках валют от биржы может достигать в 15-30 сек (и достает кстати). Это в пиках, в умным людям заранее известных местах. В обыденном ритме в тех же местах там паузы 1-2 сек максимум или вообще незаметны невооружённым глазом.
и задержки исполнения там будут конечно-же на сопряжённых forex-серверах. И 4 сек для них это нормаль. Если конечно не круглосуточно такая дребедень, а ровно 1-2-3-4 (и регулярно и от инструмента) в день
есть несразу понятный многим парадокс - чем кухоннее кухня, тем быстрее там исполнение :-) Если гнаться за скоростью исполнения приказов, то это 100пудовый влёт, если контрагента вы не знаете лично на расстоянии кулака
Если советник один и нельзя сделать из него три, общающихся между собой, то можно устроить одновременную отправку трех ордеров путем запуска трех скриптов. Но для этого потребуется разрешение на использование DLL.
Это вряд-ли
Продолжая изучать варианты я нашла что это возможно реализовать с помощью GlobalVariable
Т.е. советник - сервер следит за появлением ситуации (условия) и при появлении условия - создает глобальную переменную
а советник - клиент отслеживает появление глобальной переменной и при ее наличие открыть ордер (каждый на своей паре)
ну и затем изменить значение глобальной переменной - после открытия всех ордеров
Нет, это очень долго. Попробуйте три одинаковых советника на трёх связанных парах. Каждый торгует свою пару, но их логика связана на уровне алгоритма. Без обмена данными и без общих потоков.
Для начала, разберитесь, сколько исполняются ордера.
Если 4 секунды, то решение однозначное — менять брокера.
Если проблема в том, что советник ждет следующих тиков, то нужно переписать советника.
Пилить костыли для одновременной отправки нескольких торговых запросов можно, но я бы скорее перешел на МТ5. Это перспективнее.
Понимаете брокера и терминал я не могу поменять от слова никак.
Поэтому исхожу из того, что есть.
Сейчас задалась вопросом, а что если разделить задачу.
Индикатор ищет подходящую ситуацию, а советник только открывает ордера.
При этом можно на каждой паре запустить и советник и индикатор.
Буду пробовать.
Так как при одновременном запуске но на разных парах (чартах) все происходит идеально разница +\- секунда но это я думаю из-за тиков, что вполне нормально и ожидаемо
Так как при одновременном запуске но на разных парах (чартах) все происходит идеально разница +\- секунда но это я думаю из-за тиков, что вполне нормально и ожидаемо
Перепишите робота, он не должен ждать тиков.
Если не сложно подскажите каким образом это сделать для МТ4?
Непосредственно запуск скрипта делается вот так:
Да, у меня был ТрейдБустер для решения этой задачи.
Но я убрал его с витрины, потому что не готов поддерживать.
А не было какой нить лайтовой версии публичной, для по-изучать код?
А не было какой нить лайтовой версии публичной, для по-изучать код?
Нет. Но там особо нечего изучать - советник менеджер + 7 исполнителей, общение через файл.
Нет. Но там особо нечего изучать - советник менеджер + 7 исполнителей, общение через файл.
Понял, спасибо.
А глобальные переменные терминала разве не быстрее будут для общения, чем файл?
Понял, спасибо.
А глобальные переменные терминала разве не быстрее будут для общения, чем файл?
Немного будут, да. Сложнее просто с ними.
Еще можно через ресурсы и события, еще быстрее. Я давно делал, не все было доступно, не все освоил.