Блог им. turbo_pascal
В продолжение поста "Как покупать торговых роботов". Теперь о том, как их продавать.
«Ты кто такой, давай техзадание!
Ты кто такой, давай техзадание!
Он все тебе объяснить старается,
Отчет-аудит показать пытается,
Знаещщ, где рэальний дэло начинается?
Только там, где ТЗ появляется!
А теперь, товарищ, внимание!
Нет ТЗ — Давай Досвидания!» ©
Нужно помнить, что торговый робот — это в первую очередь код, а потому — садитесь и изучайте цикл создания программного продукта. Книжек — море.
Вам надо четко выделить 4 этапа, чтобы написать качественный код:
1) Бизнес-анализ. Вы должны получить (часто) абстрактные пожелания клиента о том, что он хочет. И превратить их в четкое техническое задание. Да, это должны сделать именно Вы! А не Заказчик. Вы должны предоставить Заказчику настолько четкий шаблон, чтобы ему пришлось там указать всё, что нам надо.
Это — основа дальнейшей работы, и исключение большого количества конфликтов и отрицательных отзывов о работе.
Хороший исполнитель, с высоты своего опыта, еще и сам может подсказать Заказчику, что именно ему надо, если понятно, что Заказчик хочет что-то бесполезное. Но это уже по желанию.
2) Разработка. Тут углубляться не буду. Ведем аккуратно код, отслеживаем версионность, при фиксации очередной версии (commit) подробно пишем, что и почему поменяли, кто это просил, даты, заказчик, причины. Это все потом очень понадобится, чтобы найти причины проблем. И даже, возможно, предъявить Заказчику претензии.
Отсутствие этих записей — переход от работы над кодом к разборкам «я этого не говорил». А этим Заказчики, бывает, очень грешат.
Зарабатывающих роботов мало, и когда Заказчик осознает что его алгоритм не приносит прибыли, возможно, он захочет найти виноватых. Вот тут все записи и пригодятся.
3) Тестирование. Прогоните робота на собственном счете. Избавьте его хотя бы от детских ошибок. Заказывал я тут у одного «как бы (простигосподи) программиста» код, он не запустился. И началось: «ой, да я вам библиотеку не ту дал, вот другая», «ой, я поправил, попробуйте еще раз», и так далее. Отвратительное ощущение от общения. Человек накидал код «на авось», и бросил Заказчику — «а, пусть запускает, там ошибки и вылезут».
Нет, тестируйте код у себя.
Если это HFT, то нужно будет не только функциональное тестирование, но и нагрузочное, чтобы дать четкие диапазоны параметров работы робота, и сразу сказать — что он может, а что уж нет.
4) Поддержка. Вы должны понимать, что если с нами хорошо отработают, то единовременной сдачей кода дело, скорее всего, не закончится. Обговаривайте заранее поддержку кода, обновления, срок этой поддержки и сколько она будет стоить Заказчику. Нормальная практика — это как минимум месяц-два бесплатной (включенной в начальную стоимость разработки) поддержка, дальше переводим на ежемесячные или ежеквартальные платежи.
Ну и дополнительные комментарии:
1) Цените конфиденциальность клиента и его данных. Малейшее подозрение, что код может слить наружу хоть какие-то данные (пусть даже бесполезные обезличенные логи, по которым Вы хотите посмотреть работу кода для отлова ошибок) — потеряете клиента навсегда, и многих других тоже.
2) Оформите хоть какой-то узнаваемый бренд для своих разработок. Это поможет в будущем лучше, чем «написано Уасей Пупковым в 2015 году».
3) Озаботьтесь механизмом мониторинга работоспособности своего кода. В код желательно встроить модули, которые тем или иным способом будут сигналить Заказчику о свой неработоспособности. Плохая практика — код остановился, клиент об этом узнал через сутки, когда (возможно) уже слил из-за этого кучу бабла. Код не только должен работать как заказывали, но и сигнализировать, если вдруг что-то пошло не так.
4) Нарабатывайте собственную библиотеку кода. Вы должны создавать «конструктор» сами для себя и для последующих доработок. Любый универсальные функции выносите в отдельные библиотеки.
5) Логи и сообщения об ошибках должны быть понятны, а не «Error 459-af, обратитесь к разработчику».
6) Обрабатывайте все exception. Проверяйте диапазоны значений. Не давайте дураку сломать работу. Если дурак сможет вписать ".Й" в поле, где должно быть число и код от этого рухнет, предъявят — Вам. Сделайте проверку «Тут.Й писать нельзя» :)
7) Хоть это и будет звучать как фраза из сраных «книжек по успеху» — делайте для Заказчика чуть больше, чем он ожидает. Нет ничего хуже, когда клиент видит, что работают с ним «на отъе*ись» (ага, опять привет «какбы кодеру»). Такой клиент не вернется.
8) Из предыдущего пункта: не занижайте цену, чтобы можно было спокойно сделать то, что хочет Заказчик, и немного больше, и при этом Вас не отвлекали голодные дети и бесшубная жена :) Для этого, конечно, по началу придется наработать авторитет и базу. Поверьте, многие клиенты готовы платить больше, за гарантию качественного результата.
9) Снабжайте код документацией, но не сложной. Плюс к этому нарабатывайте на своем сайте (а он, коню понятно, должен быть) «базу знаний» с описанием часто встречающихся ошибок.
В общем, вы должны стать миниатюрной софтверной компанией, и тогда роботостроительство пойдет в гору.
Понятно, что абсолютно все вышеперечисленное никто не соблюдает на 100%. Но ...
p.s. Ничего не продаю, семинаров не веду, каналов нет.
В теории звучит замечательно.
На практике садимся считать экономику процесса и получаем необходимость для клиента оплачивать минимум полноценный человекомесяц разработки. На что ясен пень никто идти не хочет. Потому что «дороХо».
К тому же все Заказчики абсолютно уверены, что придумали грааль и программист должен подорваться и побежать его кодить только за право подержать этот грааль за ручку.
В итоге относительно приемлемая цена может быть только у «массового» продукта. Сам написал робота, сам его продаешь в розницу. А дальше дилемма: либо робот какашка и продавать его позорно, либо робот хорош, но тогда продавать его уже нет желания.
В общем, есть нюансы.
Угу, было такое: предлагали закодить какую-то простейшую стратегию (типа пересечения машек) и последующими письмами типа «не отвечаешь — значит выкрал у меня прибыльную стратегию и уже зарабатываешь на ней» :)
Turbo Pascal, кстати, если верить ves2010, машки действительно работают. =)
Prophetic, это зависит от наличия автоматического дельта-хеджа и степени предварительной жадности. А также от наличия других торговых стратегий в портфеле.
Есть варианты, когда движение на рынке ого-го! а позиция практически не страдает при этом.
А вот что касается «неважности подхода», то это неправда. Как раз подход и определяет результат. Продать путы и молиться со словами «туда никогда не дойдет!»??? Да это вообще не торговля опционами, а упражнение в чудодейственности искренней молитвы.
Или как тут недавно новый проект начал пиариться. Для начала сделал позорный каминг-аут: «я слила 40% на фортс за пару месяцев и ТЕПЕРЬ понимаю важность торговой системы». =) тоже недурно для начала.
когда есть движуха — работают, нет движухи -отдаем рынку, но меньше, чем заработали))
все просто)
только сухие цифры, не более..
протестируйте и сами увидите, в чем проблема то?
вот очевидно можно сказать кто как тестирует, это да, тут можно согласиться))
Dio, ну, сухие цифры — это скучно. Если Вы хотите аргументировать, что «пересечение машек работает», то давайте Вы сначала: инструмент, таймфрейм, тип машек, интервал тестирования, количество сделок, количество убыточных кварталов, количество убыточных месяцев, средняя сделка, оценка доверительного интервала для матожидания одной сделки, график эквити. Понятно, все с учетом комиссии.
и что дальше?
мат ожидание положительное, если кратко)
Dio, =) не убедили. Если кратко.
С уважением.
сами дотукиваейтесь, дотестируестесть, проанализируейтесь ...
я вам должен что то рассказыкать и не дай Бог убеждать?))
ту не богадельня))
честно, — вопрос, когда вы купили или продали опцион и что был за актив?)
Dio, я этой ерундой занимался лет 10 назад и для себя все выводы сделал.
Ваш вопрос про опцион не понял. Я постоянно что-то делаю с опционами. В основном продаю.
я не собираюсь здесь ничего рассказывать и показывать!
я же сразу написал — и что дальше?
у меня все прекрасно работает, чего и вам желаю!
тут не богадельня ..
10 лет назад..)))
я первый опцион купил ещё в 1998 году, на сиплого и что?))потом продал, заработал и дальше что?))
Dio, Вы же «Управляющий активами». Напишите что-то умное содержательное и аргументированное, глядишь, инвесторов прибавится.
Кстати, уже прошли регистрацию как положено? Сильно там заморочно?
инвесторов хватает.
а умное здесь писать как то нет желания, прописные истины, их и так все знают мало мальски работающие на рынке.
Вам тем более объяснять что то умное бесполезно, вы и так умными здесь мыслями делитесь (не сарказм), неоднократно читал ваши баталия про теорвер и так далее!) Респект одним словом.
Не проходил регистрациб, как то все не соберусь, если вы о мамбе)
да для такой простейшей стратегии нет никакой надобности писать робота, она и так работает прекрасно (руками"), собственноручно проверял, сорри за тавтологию.))
А по постам (как покупать и продавать) зачет и респект! Профи!
Удачных трейдов, коллега!;)
Из нескольких обращений (разных людей), я только один раз столкнулся с ситуацией, когда человек смог более-менее внятно объяснить чего он хочет, и как себе это представляет. Да, в большинстве случаев, путем многократного задавания уточняющих вопросов, мне удалось реализовать то, что мне показалось плавильным алгоритмом задуманного заказчиком. Понять так ли это, или человек ожидал чего-то другого — я так и не смог.
1. Узнать свой баланс биржи по выбранному инструменту, например BTC/USD
2. создать Ордер на продажу
3. создать ордер на покупку
4. удалить ордер на продажу
5. удалить ордер на покупку
6. Прочесть текущую цену по инструменту.
— Все, больше вам ничего не нужно, далее придумываем свою стратегию торговли Лесенка, чудесенка и прочее дерьмо и пишем алгоритм используя только этот набор команд.
смотрим глубину падения инструмента и если она нас устраивает начинаем торговать инструмент на выбранный заранее объем, выставили ордер, продолжаем смотреть за глубиной падения, если ордер отработал и глубина падения продолжает расти — выставляем следующий ордер, если ордер не отработал, а глубина падения продолжает расти — снимаем ордер и выставляем новый ордер с новою ценой.
Magistr, уважаемый ТС уже выкладывал этот алгоритм в одном из предыдущих постов. В исходниках. Правда, для QLua, но пытливый ум мартингальщика без труда перепишет его под МТ или любую другую торговую платформу.
ПС Кстати, мартингейл — всего лишь продажа синтетических опционов. И имеет ровно те же самые проблемы, что и стратегия «продай опционы и молись». Депозит заканчивается намного раньше, чем рынок достигает разворотной точки.
Magistr, русскими буквами в коментах этот код выглядит просто. По факту: биржа может не прислать ответ на «выставить ордер», биржа может исполнить ордер, но вы только что отправили снять этот ордер, биржа может перестать транслировать данные (а вы только завтра об этом узнаете), биржа может сделать вашему ордеру reject либо вы превысите кол-во попыток для отправки ордеров,… продолжать?
После криптобирж я еще больше полюбил квик :-)))
зачем вы изначально строите ТС по принципу рулетки?
=) Одно время эту мелодию каждое утро ставил.