понедельник, 29 марта 2010 г.

Для чего же нужен робот

Прочитав (и отписав, куда ж я без своего мнения) топики http://www.stockportal.ru/forum/index.php?showtopic=12851 и http://quoteforum.ru/index.php?showtopic=4190 (последний выглядит как жуткий стеб, так что воспринимайте данный топик с некой щепоткой скептицизма), я пришел в выводу, что роботы в торговле на российском рынке еще долгое время не смогут конкурировать с людьми.

И так, основные доводы и причины, почему трейдер хочет перевести или уже перевел свою торговлю на автоматизированную:

  1. Отсутствие эмоционального напряжения.
  2. Возможность освободить себя от торговли, отдав всю работу роботу.
  3. Увеличить доход путем увеличения количества сделок.
  4. Об этом говорят многие, уже есть и компании предлагающие свою услуги по автоматизации. Значит это популярно, а популярность не растет на пустом месте.

Видите уже себя? Ага, а теперь вот мое мнение на эти четыре пункта - ПОЛНАЯ БРЕХНЯ:

  1. Тоесть, себе вы доверить не можете торговлю, а роботу да? С учетом того, что робот торгует или с ошибками (если самописный), или с непонятной порой логикой (если купленный, особенно когда он разработан не профессиональными командами, а форумными завсегдатаями). Робот, чем у него сложнее логика и чем он быстродейственней (а в другом случае и создавать нет причин программу), требует все больше и больше внимания. И я сильно сомневаюсь, что видя, как робот начинает медленно сливать, вы не потянитесь в заветной кнопке Стоп.

  2. Прочитали первый пункт? Ну и как, готовы освободить себя, уйдя, допустим в магазин за покупками, вместо сидения за монитором? Это в лучшем случае, если при случившемся изменении на рынке робот просто выкинет ошибку и прекратит свою работу. В худшем - продолжит торговать дальше. И такое он вам наторгует...

  3. Делая 10 сделок за день, я получаю X денег. Делая 10 * 100 сделок в день я буду получать в 1000 раз больше. Логично с математической точки зрения. А вот в реальности или заплатите еще и за комиссию, или получите те же X денег.

  4. Действительно, говорят об этом многие. Меньше говорят те, кто от этого получил выгоду (поговорить то могут все), еще меньше скажут, что это было положительным решающим фактором для их бизнеса. На фоне популярности обсуждений естественно рождаются компании-разработчики. Такие компании, как правило, или предлагают свои услуги по созданию роботов, или продают готовый софт. Если вы выбрали разработку на заказ, то вам придется столкнутся с такими перипетиями разработки ПО на заказ, что вы еще не раз проклянете себя за данное решение.

    Допустим, вы успешно пройдете путь создания своего робота, и в итоге получите ожидаемое. ВНИМАНИЕ, это еще не значит, что данный продукт принесет автоматически профит. Людям из компаний-разработчиков не интересны ваши гениальные стратегии, не приносящие ничего, кроме убытков. Им интересны ваш деньги, которыми вы будете оплачивать их жизнь.

    Очень, очень сложно грамотно поставить процесс, и получить действительно полезную вещь. Вот вам ссылка на мое обсуждение - http://forex.kbpauk.ru/showflat.php/Cat/0/Number/289931/an/0/page/0#Post289931 (читать с поста Bell-а, к слову. "нанять программеров" забавная тема).

    Если Вы захотели купить готового робота, то вот вам простое замечание. Стоящую стратегию никто вам продавать не будет (возможно, есть и исключения, но я их не встречал). Это если действительно ноу-хау, которое приносит деньги. А если и будут продавать, то это или ненужная разработка с сомнительным профитом, или обычная вспомогательная утилита, например, как привод. Кстати, последний может быть и полезен, но только это нисколько не робот, а лишь удобное расширение вашего терминала.

А теперь мое имхо, для чего нужно переводить торговлю на автоматизацию:

  1. Торговую стратегию невозможно реализовать ручным трейдингом. Например, высокочастотный трейдинг, сложный аналитический процесс и т.д.

  2. Минимизировать человеческий фактор. Например, когда идет с высокой частотой рутинная работа с копированием и вставкой параметров из одной программы в другую программу (например, одна вычисляет по формулам значения, другая по этим значениям и рынку анализирует, что сейчас необходимо делать).

Как видно из моих причин, все они исходят от одного слова - «Надо». В отличие от тех самых первых причин, ведущих свое происхождение от слова «Хочу». Уже видна разница: «Хочу» и «Надо».

Итог. Когда вы почувствовали, что вот оно, желание автоматизировать, в первую очередь задайте себе вопрос, а действительно ли оно «Необходимо», или же вам просто «Хочется» попробовать, не зная четко преимуществ в результате, как и за счет чего они будут достигнуты.

четверг, 11 марта 2010 г.

Асинхронные заявки

Поделились со мною программой, которая четка показала - асинхронные заявки через Квик быстрее асихнронных заявок через .NET. Поясню, что значит последнее. Допустим, в программе необходимо заложить логику, которая бы мгновенно отправляла заявки на регистрацию, не дожидаясь подтверждения. Такое может потребоваться при написании привода, когда нужно максимально быстро послать запрос и возвратить пользователю управление (иначе GUI будет подтормаживать). Вот как это делается сейчас:
new Action(() => _trader.RegisterOrder(order)).BeginInvoke(null, null);

Довольно быстро. Но одному из пользователей S# потребовалась еще более быстрая скорость, и он попросил добавить поддержку асинхронных заявок в QuikTrader именно через механизм Quik API. Да не просто попросил, а аргументированно-программно доказал всю мою неправоту, прислав тестовую программу. Так как я раньше думал, что регистрация заявок через асинхронный механизм .NET имеет такую же скорость, что и через квиковский. Вот показатель разных способов:

1. Синхронный способ (QuikTrader.RegisterOrder) - 2-3 заявки в секунду.

2. Асинхронный способ .NET (Delegate.BeginInvoke) - 4-5 заявок в секунду.

3. Асинхронный способ Квик - 7-8 заявок в секунду.

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