Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Предлагается делать неоднократный возврат (return), пока Вы или всю текущую очередь не прочитаете или на заданное число событий. Когда торговые события закончатся - будет возврат по таймеру и у Вас будет доступ сразу ко всем событиям
Ну и я поворчу... ИМХО, конечно, но так и напрашивается запуск обработчика в отдельном потоке. Так, просто мысли вслух...
А если для себя, то все выносится во вне, а каждый обработчик будет представлять из себя нечто подобное:
void OnXXX{ gOnXXXMutex.Lock(); COnXXXOverlapped overlapped=new COnXXXOverlapped(<param_list>); gOnXXXOverlappedList.PushBack(overlapped); gOnXXXMutex.Unlock(); DLLOnXXX(<param_list>,overlapped,&gOnXXXMutex); }
есть и более изящное решение, без OnTimer... подумайте
Сами подумайте, почему это не будет работать.
Сами подумайте, почему это не будет работать.
А здесь думать не нужно - только что рынок открылся, я проверил - все работает, до вычисления строки
if (наблюдаемая позиция закрылась по тейку)
торговые события добавились в очередь и могут быть прочитаны
А здесь думать не нужно - только что рынок открылся, я проверил - все работает, до строки
торговые события добавились в очередь и могут быть прочитаны
Извините, но даже объяснять ничего не буду в вашем понимании правильной работы. Устал от разжевывания простых вещей.
Извините, но даже объяснять ничего не буду в вашем понимании правильной работы. Устал от разжевывания простых вещей.
Не хотите - не объясняйте. Просто я показал, что добавление
bool HandleNextEvent (ENUM_EVENT_TYPE);
принципиально ничего не меняет
принципиально не меняет
Очень сильно меняет. Просто, видимо, нужно потратить уйму времени (с неизвестным результатом), чтобы сделать очевидной эту мысль во многих головах.
Очень сильно меняет. Просто, видимо, нужно потратить уйму времени (с неизвестным результатом), чтобы сделать очевидной эту мысль во многих головах.
Уйму не нужно, потому что согласно Теории простоты Эйнштейна: "Если вы не можете объяснить это просто - значит, вы сами не понимаете этого до конца"
Уйму не нужно, потому что согласно Теории простоты Эйнштейна: "Если вы не можете объяснить это просто - значит, вы сами не понимаете этого до конца"
Да, у вас не получилось.
Да, у вас не получилось.
А я и не пытался ничего объяснять - я привел пример и получил результат:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MT5 и скорость в боевом исполнении
A100, 2020.05.31 23:23
... только что рынок открылся, я проверил - все работает, до вычисления строки
if (наблюдаемая позиция закрылась по тейку)
торговые события добавились в очередь и могут быть прочитаны
А я и не пытался ничего объяснять - я привел пример и получил результат:
Ничего вы не поняли. Когда делаем return, то заходим в On-функции сформированной очереди. Это может вызвать паузу, которая не даст СРАЗУ после первого OrderSend послать правильный второй.
Вы же предлагаете накопить очередь через сохранение всех On-функций после return, дождавшись On-функцию, в которой будет сообщение о завершении первого OrderSend. И тогда только отправлять второй OrderSend.
При этом еще и не понимаете, что тейк позиции может исполниться во время первого OrderSend, но его OnTradeTransaction будет в очереди позже (в ту же микросекунду, но позже), чем завершающий OnTradeTransaction от первого OrderSend.