Вопрос алготрейдерам. Как быстро отрабатывается роботом в квике заявка по рынку?
Если мы имеем робота который входит на пробой бара, насколько заявка «уедет» от хая пробитого бара исполнившись?
например по RI мы имеем хай пред бара на 108950, пробивается этот бар, робот покупает по условию пробития бара.
Означает ли это что сделка будет по 108960, или даже по 108970 не факт? влияет ли на скорость отработки алгоритма
написан робот на Lua или на Qpile? Или это вообще вопрос не к таким роботам на Lua, Qpile и квику, когда сделка отрабатывается
где НАДО, а не где получится?
На скорость исполнения больше влияет сетевая задержка.
Проскальзывание можете словить любое, в зависимости от ситуации.
Возможно даже, что исполнится по цене лучшей чем была в ордере.
,15-0,2 Максим оборот сделки.подряд заявки.минимум 20-50мс.
заявка от квика до сервера идёт примерно 30 миллисекунд.
на фортс имеются только лимитные заявки, т.е. вы сами определяете максимальную цену по которой готовы купить или минимальную за которую готовы продать.
дальше уже дело случая и корректности/свежести ваших данных, насколько близко цена исполнится к той, которая есть «сейчас» на свечном графике в момент отправки заявки.
ещё стоит отметить что QPILE не умеет обрабатывать сигналы (например обновление свечи) и срабатывает не чаще чем раз в секунду (насколько я знаю)
а Lua, в свою очередь, является в квике интерпретируемым языком, так что разрабатывая на нём сложный код, вы попадаете на скорость интерпретатора. впрочем, Lua поддерживает загрузку dll.
По существу:
1. Для понимания работы рыночных ордеров имеет смысл всегда держать в голове следующее правило: Любая заявка «по рынку» — это по факту «лимитированная заявка», но для заявок на покупку цена в такой заявке стремиться к бесконечности, а для заявок на продажу — к нулю. За счет действующих правил исполнения заявок (на наилучшему предложению) в большинстве случаев Вы видите исполнение «близкое» к последней цене.
2. При разреженном стакане, и/или в низколиквидном инструменте, при попытке провести сделку большим объемом, с использованием «рыночного» ордера, можно получить существенное проскальзывание цены исполнения от запланированной Вами цены.
3. Для сокращения рисков возникновения больших проскальзываний, при незначительном увеличении вероятности НЕ совершить сделку в полном объеме — используются лимитные заявки, с заранее заложенным уровнем проскальзывания. Т.е. Вы изначально соглашаетесь на то, что ваша заявка может исполнится по цене несколько хуже (но бывают случаи прямо противоположные) цены пробития интересующей Вас границы, но при этом Вы жестко ограничиваете максимальное отклонение от интересующей Вас цены.
4. В зависимости от объема, который Вам необходимо провести по сделке, размер закладываемого проскальзывания будет влиять на вероятность получить интересующий Вас объем. (чем меньше проскальзывание — тем лучше цена, но ниже вероятность взять весь объем. И соответственно, чем больше проскальзывание тем хуже цена, но выше вероятность получения полного объема).
5. Совсем большие объемы входа обычно разбивают на несколько заявок, чтобы своими действиями не загнать цену совсем далеко от целевой, без шансов возвращения к ней. Но этот вопрос находится за рамками текущего обсуждения.
6. Я ОЧЕНЬ сильно сомневаюсь, что руки человека в состоянии работать быстрее короткого программного кода, на нормальном компьютере (извращения типа запуска торговых роботов с квиком на первом пентиуме, с одним гигом оперативки оставим детям)
6. Во время сверх-высокой активности на рынке, в квике достаточно часто можно наблюдать существенные задержки размещения и исполнения заявок. Факторов много, но факт один — если такие задержки возникли, при выставлении заявки роботом, то руками она будет выставлена ничуть не быстрее, а скорее всего еще медленнее, т.к. возникают дополнительные задержки на обработку взаимодействия с визуальным интерфейсом (нажатие кнопок). При чем, для роботов написанных на QPile и QLua быстродействие квика в описанные моменты повышенной нагрузки, очень важно, в виду того, что они исполняются внутри процесса квика. Т.е. если тормозит квик — тормозит все, что работает внутри него. Выход — Вынос логики роботов за пределы квика (немного ненавязчивой рекламы: github.com/finsight/QUIKSharp).
1. Если торговля через quick проскальзывание будет зависеть не от скорости алгоритма, а от соединения. У меня выставление заявки занимает порядка 150 мс, в то время как работа алгоритма 1-2 мс.
2. Входить лимитными заявками совет конечно хороший, проблема, однако, в том, что ты заранее не знаешь куда входить (если торгуешь много инструментов) и, соответственно, ограничен размером ГО.
3. Проскальзывание может быть очень существенным и оно имеет принципиальное значение для данной стратегии.