Интересна тема высокочастотного трейдинга

 
В эту тему были перенесены комментарии, не относящиеся к "Пиши и зарабатывай на MQL5".
 
Rashid Umarov:
10

Парный трейдинг /  тема снята пока
Использование ALGLIB для выбора символов (вот популярное объяснение на хабре http://smart-lab.ru/blog/350528.php, в инете также есть видео с вебинаров на эту тему.)

Тема частично затронута в опубликованной статье Пример разработки спредовой стратегии на фьючерсах Московской биржи

Её можно развить по многим направлениям - правильный подбор объемов, составление новых комбинаций инструментов, слом корелляции и т.д. Нужны практические примеры стратегий для Московской биржи (можно и для форекса, конечно, но биржевая тема была бы интересней)

Рашид, очень интересна тема высокочастотного трейдинга, есть куча вопросов. А темы такой в вашем списке нет.
 
Oleg Shenker:
Рашид, очень интересна тема высокочастотного трейдинга, есть куча вопросов. А темы такой в вашем списке нет.
Это понятие охватывает кучу проблем и задач для разработчика такого робота. Что конкретно вы имеете в виду?
 
Rashid Umarov:
Это понятие охватывает кучу проблем и задач для разработчика такого робота. Что конкретно вы имеете в виду?

Я сейчас как раз бьюсь с таким роботом и со всей этой кучей задач постоянно сталкиваюсь. И служба поддержки тут помочь не может.

Что конкретно? Например, я столкнулся с такими вещами:

1. Тестируя работу OrderSendAsync() в тестере, посылал по три ордера на открытие позиций, а потом на закрытие позиций. Несмотря на то, что я использую одну и ту же функцию для отправки запросов как на открытие, так и на закрытие позиций, время, затрачиваемое отправку ордеров на закрытие позиций, значимо больше времени, затрачиваемого на отсылку ордеров на открытие позиций. Причем разница во времени ощутимо зависит от задержки в тестере. Например в одном из тестов средняя разница во времени, затрачиваемом на отправку ордера для закрытия и для открытия позиций, составила 42 мкс без задержки и 660 мкс с задержкой = 100 мс.

2. Для проверки результатов исполнения ордеров, я использую событие Trade Transaction c типом TRADE_TRANSACTION_REQUEST. Каким-то не понятным мне образом, иногда это событие приходит дважды с одним и тем же ID ордера, присвоенном при отправке. Мне даже пришлось специально ставить проверку на появление повторного события по тому же ордеру.

3. Согласно документации, OrderSendAsync() просто посылает ордер, не дожидаясь результатов его исполнения. Однако, такие ошибки как REQUOTE возвращаются сразу немедленно после отправки ордера. (сначала я пытался ловить реткод в функции OnTradeTransaction(), но при реквоте ордер даже не отсылается.

Хотелось бы точнее разобраться, какие именно процессы проходят на торговом сервере и в платформе при отправке и обработке торговых ордеров, где и как можно сэкономить время. Какие ошибки проверяются непосредственно в платформе. Какие ошибки могут возникнуть позже при обработке в торговом сервере. Ведь если событие TRADE_TRANSACTION_REQUESTможет появиться дважды, значит, теоретически, может не появиться ни разу. Такие вещи лучше знать заранее, и заранее вставлять в алгоритм необходимые проверки и защиты.

 

У вас вопрос не по статье - можете написать в сервисдеск или создать ветку на форуме, например в разделе Биржевой трейдинг

И нужно описать все детали, я вот не понял при чем здесь тестер, да и кода нет никакого.

 
Rashid Umarov:

У вас вопрос не по статье - можете написать в сервисдеск или создать ветку на форуме, например в разделе Биржевой трейдинг

И нужно описать все детали, я вот не понял при чем здесь тестер, да и кода нет никакого.

Я написал конечно и в сервисдеск и в форуме ветки создавал соответствующие. То есть, разбираюсь потихоньку, собираю информацию. Поймите правильно, я не задаю вопросы тут, я просто говорю, что есть слабо исследованная тематика: "детальные процессы обработки торговых транзакций". И было бы не плохо побольше писать и исследовать эту тематику. Я уверен, вы тоже в этом направлении видите свое будущее, не даром тут банер крутился, посвященный HFT.

 
В статье  С чего начать при создании торгового робота для Московской биржи MOEX приведен код слушателя TradeTransactionListener. Его достаточно для изучения торговых событий
 
Rashid Umarov:
В статье  С чего начать при создании торгового робота для Московской биржи MOEX приведен код слушателя TradeTransactionListener. Его достаточно для изучения торговых событий
Еще вариант.
 

Спасибо конечно... Но детали процесса обработки там тоже не описаны. Вот в первой статье говорится: "Все торговые операции в MQL5 реализуются с помощью функции OrderSend(), которая возвращает управление программе в тот момент, когда торговый ордер был успешно отправлен на Московскую биржу".

Сразу вопрос, "отправлен" или "размещен"? 

Идем далее.

"Существует также и асинхронный вариант этой функции — OrderSendAsync(), которая работает намного быстрее чем OrderSend(), так как не дожидается отправки приказа в торговую систему биржи".

И снова ничего не понятно. Не дожидается отправки... А чего дожидается? Какие проверки выполняются в терминале при вызове этой функции?

Следующее предложение еще больше все запутывает.

"Ответ на эту функцию отсылается сразу же, как только запрос отправлен терминалом MetaTrader 5 наружу". Так все-таки, функция дожидается отправки ордера.

Короче, это конечно интересные статьи, но это букварь. А где прочесть чего-то посерьезнее?

По поводу второй ссылки.

Я сам упражнялся тем, что печатал в логе все  значения  торговых структур функции OnTradeTransaction() (transaq, request, results). Анализировал какие поля и в какой последовательности меняются при каждом шаге.

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

Просто хотелось бы более глубокой информации. 

 
Когда я во всем этом разберусь, я сам такую статью напишу... возможно. 
 
Называйте вещи своими именами. Пипсовка. ВЧТ на МТ не может быть в природе.
Причина обращения: