Ускорить одновременную отправку ордеров - страница 4

 
Andrey Khatimlianskii #:

Для начала, разберитесь, сколько исполняются ордера.
Если 4 секунды, то решение однозначное — менять брокера.


а на самом деле НЕТ. 4 сек - если это только на каких-то пиках, то это нормально.

пауза к котировках валют от биржы может достигать в 15-30 сек (и достает кстати). Это в пиках,  в  умным людям заранее известных местах. В обыденном ритме в тех же местах там паузы 1-2 сек максимум или вообще незаметны невооружённым глазом. 

и задержки исполнения там будут конечно-же на сопряжённых forex-серверах. И 4 сек для них это нормаль. Если конечно не круглосуточно такая дребедень, а ровно 1-2-3-4 (и регулярно и от инструмента) в день

есть несразу понятный многим парадокс - чем кухоннее кухня, тем быстрее там исполнение :-) Если гнаться за скоростью исполнения приказов, то это 100пудовый влёт, если контрагента вы не знаете лично на расстоянии кулака

 
Ihor Herasko #:
Если советник один и нельзя сделать из него три, общающихся между собой, то можно устроить одновременную отправку трех ордеров путем запуска трех скриптов. Но для этого потребуется разрешение на использование DLL.

Это вряд-ли 

 
Natalya Smirnova #:

Продолжая изучать варианты я нашла что это возможно реализовать с помощью GlobalVariable
Т.е. советник - сервер следит за появлением ситуации (условия) и при появлении условия - создает глобальную переменную
а советник - клиент отслеживает появление глобальной переменной и при ее наличие открыть ордер (каждый на своей паре)

ну и затем изменить значение глобальной переменной - после открытия всех ордеров

Нет, это очень долго. Попробуйте три одинаковых советника на трёх связанных парах. Каждый торгует свою пару, но их логика связана на уровне алгоритма. Без обмена данными и без общих потоков. 

 
Andrey Khatimlianskii #:

Для начала, разберитесь, сколько исполняются ордера.
Если 4 секунды, то решение однозначное — менять брокера.

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

Пилить костыли для одновременной отправки нескольких торговых запросов можно, но я бы скорее перешел на МТ5. Это перспективнее.

Понимаете брокера и терминал я не могу поменять от слова никак.

Поэтому исхожу из того, что есть.
Сейчас задалась вопросом, а что если разделить задачу.
Индикатор ищет подходящую ситуацию, а советник только открывает ордера.
При этом можно на каждой паре запустить и советник и индикатор.
Буду пробовать.
Так как при одновременном запуске но на разных парах (чартах) все происходит идеально разница +\- секунда но это я думаю из-за тиков, что вполне нормально и ожидаемо

 
Natalya Smirnova #:


Так как при одновременном запуске но на разных парах (чартах) все происходит идеально разница +\- секунда но это я думаю из-за тиков, что вполне нормально и ожидаемо

Перепишите робота, он не должен ждать тиков.

 
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 /*идентификатор чарта, на котором следует запустить скрипт*/)
{
   static int 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);          
}
 
Andrey Khatimlianskii #:

Да, у меня был ТрейдБустер для решения этой задачи.

Но я убрал его с витрины, потому что не готов поддерживать.

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

 
Aleksandr Volotko #:

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

Нет. Но там особо нечего изучать - советник менеджер + 7 исполнителей, общение через файл.

 
Andrey Khatimlianskii #:

Нет. Но там особо нечего изучать - советник менеджер + 7 исполнителей, общение через файл.

Понял, спасибо.

А глобальные переменные терминала разве не быстрее будут для общения, чем файл?

 
Aleksandr Volotko #:

Понял, спасибо.

А глобальные переменные терминала разве не быстрее будут для общения, чем файл?

Немного будут, да. Сложнее просто с ними.

Еще можно через ресурсы и события, еще быстрее. Я давно делал, не все было доступно, не все освоил.