Торговый робот «Black Hole»
Когда закончил работу над торговым роботом «Модифицированный стакан», начал искать как использовать его потенциал в реальной торговле. Для начала попробовал представить вообще механизм ценоформирования в стакане, в частности найти причину расширения спреда. И пришел к такому выводу, что спред расширяется в основном, когда пошло сильное движение, и встречные «рыночные» заявки трейдеров начинают сметать очередь ожидающих заявок. Те рыночные заявки которые успели найти «очередника» — исполнились и соответственно изменили цену последней сделки на свою, те кто не успел — встают в очередь со своим направлением, тем самым сокращая спред. И как только сила движения иссякла — спред возвращается к своим средним значениям. Внимательно следя за «модифицированным стаканом», я заметил, что иногда за самой лучшей заявкой в стакане образуется пустота на 5-6-7 шагов цены, и как только эту заявку кто-нибудь «съедает» спред резко расширяется в эту сторону, и в большинстве случает провоцирует сужение так же в эту сторону. Пригла в голову идея, отслеживать такие пустоты, съедать эту заявку и сразу же выставлять заявку-тэйкпрофит на 10 п выше (в случае первоначальной покупки), в расчете на то, что сужающийся спред (а это ничто иное как встречные заявки) исполнят этот тэйкпрофит, т.к. пустота за первоначальной одинокой заявкой в стакане была больше чем размер тэйкпрофита. Теория-скальпинг получилась стройная и интересная, и я приступил к работе. В результате родился код.
Код доступен только зарегистрированным пользователям:
Код несколько сумбурный, т.к. делался для себя. Но постоянные посетители, после прочтения и осваивания предыдущих уроков разберутся
В итоге у меня случился аврал на основной работе и я так толком и не смог протестировать этого робота. Он у меня заработал, отслеживал стакан, находил эти одинокие заявки. но вот сделать его стабильно прибыльным у меня не хватило времени.
Кстати, обратите внимание на условие исполнения ордеров — FILL_OR_KILL, сейчас оно закомментарено, но попробуйте с ним и без него. В общем вот такая идея, если у вас возникнут соображения каким образом довести ее до логического стабильного результата — пишите в личку.
А можно узнать судьбу комментария?
Евгений Reply:
января 27, 2010 at 13:44
Ответил вам в почту!
Евгений добрый день,юзаю робота три дня ,увеличел тек профит и лосс чтоб на шумах не срывало лосс,раньше профита уменьшил разнецу в лоссе между стопом и ценой исполнения, пробовал разные значения,пока остановился так:профит 50,лосс 300 разница между стоп ценой и ценой в лосс =0,не могу добится чтобы тек профит всегда выстовлялся равный заданному, в данном случае 50,выставляется 50,50,50,и вдруг 150,а цена доходитдо 135,из 10 лосей 7 таких.добится четкого выстовления задонного профита,и можно подключать на реал,
грешу на связь, тест подключен на средне скоростной канал,бывают тормоза и видно сразу три заявки , потом срабатывает профит или лосс,и ценна несется дальше,а заявка на покупку ,продажу остается не использовонной.
Евгений Reply:
февраля 11, 2010 at 22:31
Привет.
я думаю 50 это очень большой ТП для этой стратегии, 10 самое то. В роботе алгоритм такой:
если находится пустота. значит покупаем крайнюю заявку и сразу выставляем ордер на продажу по цене покупки плюс 10. Откуда берется тройной отступ как в вашем случае не понимаю. Скорее связь тут свою лепту вносит...
после обеда пошли сплошные лоси,судя по сделкам бот все делал наоборот, может поменять бай с селом,
Привет.
Раз уж вы заговорили о связи, какой она должна быть?
я думаю что «скорость» в килобайтах тут значения не играет, а важен пинг
до сервера.
Понятно, что gprs и спутники отпадают сразу из-за большого пинга, а у проводных соединений пинг будет меньше 100мс. Как считаете 100мс это хорошо или плохо?
Евгений Reply:
февраля 12, 2010 at 19:05
Тут сложно сказать. Чем быстрее тем лучше!
Привет, по поводу связи ,канал по любому должен быть скоростной при любой торговли. а при скальпенге тем более,у меня сейчас на тесте из за тормозов по связи сработала заявка ТП,и пошел нарезаться убыток,стоп стоит, но сдругой стороны,так что скорость в килобайтах играет и существенно,при сильных движениях заявки не виснут,кстати и прислабом тоже.
Привет,Евгений на учебном счете наверно эту стратегию не доведеш до стабильно прибыльной,порядок исполнения заявок не позволяет,алогоритм проверить можно,наверно все быстрые стратегии надо доводить на реале,да и по сделкам я сегодня подклучил реал и тест с одними параметрами,за 30 минут работы на реал 5 сделок, на тесте штук 50,
Евгений,
А не могли бы вы закомментировать каждый блок. Хотя бы что за что отвечает. Так будет гораздо проще разобраться. Моя манера написания программ на qpile несколько отличается от вашей.
+ возник вопрос, а достаточно ли обновления одного раза в секунду для подобного робота??
Как быстро выставляются заявки??? Успевает ли бот своевременно исполнять их?
Евгений Reply:
марта 2, 2010 at 18:43
Привет.
Со временем сделаю — сейчас завал.
1 секунда конечно маловато для такого робота, но тем не менее он работает. Заявки исполняет не робот, а сервер биржи. Успевает.
А как можно узнать комментарии к 91,95,190,201,204,215,как работает FILL_OR_KILL
Евгений Reply:
марта 9, 2010 at 18:11
Это строки кода?
vladislav Reply:
марта 9, 2010 at 21:31
ДА
Евгений Reply:
марта 9, 2010 at 21:43
91 — получаем из стакана значение бида
95 — оффера.
Эти два параметра можно еще получить из таблицы текпараметров.
190 — код функции покупки.
стоп...вы про символ «'»??? Это обозначение комментария. т.е. если поставить символ апострофа перед строкой то робот ее не обрабатывает.
как работает FILL_OR_KILL лучше прочитать в руководстве по квику:
● «Немедленно или отклонить» – заявка исполняется только полностью, т.е. при наличии в торговой системе встречных заявок по цене, не хуже указанной и с количе-ством бумаг, превышающим объем заявки.