dr-mart

Вопрос тем, кто пишет торговых роботов

А вы составляете точный алгоритм до того как написать программу?
Если да, то как? Рисуете блок-схему на бумаге? Или может есть какие- то программы для визуального составления блок-схемы алгоритма…
Или шарашите код сразу? Всухача))
★26
50 комментариев
Составляю точный алгоритм и шарашу сразу код.
Алгоритм в любом случае подвергается доработкам во время тестов
Александр Муханчиков, ну так алгоритм то на бумажке рисуешь сначала, как в школе учили? С ромбиками и прямоугольниками?:)
Тимофей Мартынов, не, не делаю. в голове всё
Александр Муханчиков, нихера себе. А думаешь это эффективно? Ведь начнешь херачить код, а потом поймешь, что было бы гораздо эффективнее сделать чуточку по-другому, но переделывать уже радикально поздно…

Или ты гений просто?
Тимофей Мартынов, может у него алгоритм = пересечение мувингов :))) шучу, без обид.
avatar
Тимофей Мартынов, ты на бумажке никогда финальный вариант не задашь. Придётся менять во время тестов. Из начальной задумки может многое изменится.

Я просто программирую начальную задумку, начинаю тестить и меняю по ходу дела.
Тимофей Мартынов, на самом деле, если писать код правильно, то любое изменение, которое не меняет концепции, не должно приводить к тотальному переписыванию исходного кода.
avatar
Тимофей Мартынов, можно быстро блоками в трейдматике наваять а потом писать, тк трейдматик имеет много проблем
Тимофей Мартынов, радикально поздно не бывает, ленивые программисты сделали программы для бекапов и логируют все изменения :)
avatar
Тимофей Мартынов, код пишется так же легко как и прямоугольники рисуются
avatar
Тимофей Мартынов, да это вполне нормально! Я как то по началу пытался рисовать схему, и как то подумал себя на мысли что уже написал бы робота и начал тестировать за это же время.

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

Наверное это и есть моя блок схема, просто надо понимаю как работает программа, линейно или нет.
avatar
Тимофей Мартынов, Вы захотели, на основе своей системы сделать алгоритм на тиках/минутках?)
avatar
Тимофей Мартынов, тоже никаких схем не рисую. Обычно написание робота выглядит так: берёшь уже когда-то написанного робота и подправляешь в нём алгоритм в нужных местах. :))

В большинстве роботов меняется только условие открытия/закрытия позиции. Вся инфраструктура остаётся постоянной.
Сармин Алексей (escoman), +1
avatar
Тимофей Мартынов, Если только начинаете, то лучше конечно нарисовать на бумаге ромбики, прямоугольники. Можно по принципу — сначала блок-схема в общем и детализции некоторых блоков схемы. А вот с опытом начинаешь их строить в голове и сразу переносить на исходный текст.
avatar
Я пишу алгоритм. Стараюсь на бумаге сделать максимум. Блок схемы рисую иногда когда вдохновение есть) А по факту кода уже дорабатывается)
avatar
Если интересно про программки для диаграмм.

В своё время, правда, давно, много рисовал диаграм, как раз для софта, испробовал кучу программ. Вывод такой: реально пользоваться только 2-мя: MS Visio (входит в офис) или Dia (бесплатная) live.gnome.org/Dia

Но минимум в половине случаев побеждает с абсолютным перевесом «бумага+карандаш».
avatar
я никогда схем не рисовал, но если очень нужно Mindjet MindManager можешь попробовать
avatar
сразу с головы
если что то сложное — описываю как должно работать, с этого пишу код
блок схемы — трата времени (слишком трудоемко и слишком детально)
avatar
Достаточно описать на бумаге, то что Вы хотите. Программисты все остальное — то, что им нужно сделают сами. Если подойти более формально, то достаточно документа под названием «Требования к программному продукту», то есть то, что он (продукт) должен делать. Но сейчас в эпоху «Agile» и «Экстремального» программирования лучше всего будет работать с программистом в тесном контакте. В этом случае будете получать релиз примерно раз в неделю. При данном подходе Заказчик «созревает» вместе с программой.
ПС. Роботы не панацея.
avatar
открываем ТС ЛАБ и рисуем в визуальном редакторе.
А дальше дорабатываем тестируем оптимизируем переводим в код и тд и тп.

что душе угодно.
1. Рисуешь алгоритим или записываешь.
2. Создаешь тест на алгоритм и начинаешь смотреть убыточные сделки. Думаешь. идет пункт 1.
3. Код робота — это самое простое.
avatar
Если идея своя, то алгоритм «вынашивается» в голове и кодируется. Если идея заказчика, то без ручки и бумаги не обойтись.
avatar
Вот такой шаблон как-то попался, можете пользоваться, если кому надо:
avatar
Рисование блок-схем это какое-то идеалистическое представление написании программ. Типа «нарисовали красивую, полную и правильную схему по ГОСТу, правильно ее закодили и больше не меняли до следующего цикла». Подозреваю, что это было актуально годах в 70-80х. Сейчас так никто так не работает, это полная фигня. В основном сейчас все работают на принципах agile software development.

Что до ответа на вопрос: алго пишу по достаточно приблизительному черновому описанию, составленному самим себе в блокноте. При этом процесс написания, по сути, не останавливается никогда. Код постоянно дописывается и рефакторится по мере надобности. Живет, в общем. Собственно поэтому никакие блок-схемы и не нужны — они устареют практически на следующий день.
avatar
Все рабочие стратегии-идеи достаточно простые, чтобы их держать в голове и не тратить время на ерунду вроде блок-схем. Если идея усложнилась до того, что требует оформления на бумаге — в корзину такую идею, т.к. работать не будет.
Резюме: не пишу))
Всегда рисую алгоритм любой программы. Каждый узел, разумеется, детализируется по-разному, но в целом такой подход помогает более четко представить структуру будущей программы (не только запись самого алгоритма на понятном машине языке, но также систему именования идентификаторов, дерево вызовов, структуры данных и пр.)
avatar
всё зависит от уровня программиста. чем выше уровень тем быстрее он может писать сразу код. ну а так… обдумать можно. но без бумажек. обычно всё в голове.
avatar
Maaxee, ну, как бы, все наоборот. Чем выше проф. уровень программиста, тем больше он изложит на бумаге.
avatar
После того, как идея торговой системы определена, необходимо нарисовать блок схему того, как мы будем действовать.

Рисовать можно используя для этого специальные программы.

Краткий обзор программ, которые позволяют рисовать блок-схемы можно уведить по этой ссылке: www.analogs.ru/group/165

Можно использовать платную программу Microsoft Visio, которая входит в состав Microsoft Office.

Но мне больше нравится программа diaw — скачать её можно здесь: dia-installer.de/

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

Вкратце почитать про программу можно, к примеру, вот тут…
www.videouroki.net/view_post.php?id=93

более подробно написано тут: finlabportal.ru/2011/04/kod-torgovoj-sistemy-highlowlong-dlya-wealth-lab/
Дмитрий Власов, Первая ссылка там некорректная. Но как комментарий отредактировать — не знаю.
Тимофей, Устал руками торговать? хочешь уйти от эмоций?
avatar
Offload на бумагу всегда полезно делать. Перефразируя известную поговорку — чем больше бумаги тем чище мозг )
avatar
На бумажке А4 ручкой, основные состояния автомата в виде блоков и стрелочками переходы из состояния в состояние
Тимофей, ты сам говорил рынок иногда бывает непредсказуем или непредвиден. Что нужно систематизировать на рынке, правильно — только убытки. Осмелюсь предположить что блок схему для программы надо формировать из ограничения убытков, убытков и еще раз убытков. Простите за банальность фразы. А как формировать блок схему при бычьем рынке при резком провале цены ниже уровня тренда. Как формировать блок схему при медвежьем рынке при резких отскоках. Как нужно писать блок схему при долгосрочном формировании дна рынка (1, 2 месяца). Как нужно писать блок схему при дивидендных выплатах в марте – апреле месяце. Блог схемы полезны. Это неоспоримо. Блог схемы нужны и целесообразны. Однако состояние рынка медвежий тренд, бычий тренд, консолидация, паника, эйфория как все это описать в одной блок схеме? Думаю в одной схеме это крайне сложно. Остается писать блок схемы для каждой рыночной ситуации в отдельности. А трейдер будет сам решать в зависимости от своего убеждения, какую схему выбрать в данный период времени.
avatar
я тоже по старинке блок-схему рисую сначала, на ней сразу хорошо видно, что куда и почему, и где потом грабли искать или подкрутить чего
avatar
Один вопрос? Робот убыточный или прибыльный?
Если прибыльный — то задача не решается.
И вот почему, никаких роботов по сути не существует.
Сделка является реакцией на фиксацию некоторого события в фиде. Голова и плечи, облако Ишимоку, нити Гартли, объемы, тики, мувинги, ключевые слова в новостях и тд и тп.
avatar
Шарашу код сразу. Но я программист с 20 летним стажем :)
avatar
Пишу сначала на псевдокоде, простыми словами, вроде такого:

каждый тик
··если открыта позиция
····сопровождение открытой позиции
··иначе
····если характер рынка походит
······проверка возможности открытия позиции
Тимофей, у Вас же на РБК офигенный коллега-техник, Андрей Сапунов. Не проще у него спросить? Да и на курсы к нему сходить. ;)
avatar
Я бы разделил понятие алгоритма на внешнее и внутреннее.
Внешнее — это просто набор правил(чёткий) по которым должен функционировать робот. Эту часть составляет трейдер. Внутренний — это уже переложение внешнего алгоритма в программный код.
И ту и другую часть я обязательно рисую(не раз) на бумаге и маркерной доске.
Рисую, и откладываю в сторону на день или два.
Потом достаю и анализирую.
Обычно, за этот период возникают идеи которые и применяю.
Уверен, что визуализировать обязательно, потому что это облегчает восприятие, оптимизацию и развитие идеи.
Да и держать в голове кучу связей не нужно.
А где рисовать не так важно, главное чтобы было удобно.
avatar
Если в голове порядок и все по полочкам расставлено — сразу рисую то, что хочу.
Если некоторые вещи не понятны — рисую сначала блок схемы с пояснениями. и только потом переношу все программу с дополнениями по ходу.
avatar
Тимофей, Вы спрашиваете Кто как и что делает при разработке роботов. Вот Вам и написали тыщу вариантов. А нужно просто взять на вооружение методы, которые СЕЙЧАС в МИРЕ используются, популярны и доказали свою высокую эффективность в этой области ( разработке ПО ). Наберите в поисковике AGILE, SCRUM — и Вы увидите, что все уже давно придумано КАК ЭТО НАДО ДЕЛАТЬ СЕЙЧАС.
avatar
_sg_, allcaps-ом уже не пишут — ваши методы устарели)
avatar
ИМХО, описание обязательно, чем сложнее и непонятнее для вас система, тем больше ее нужно формализировать и описывать. Я программист, конечно с опытом мелкие задачи пишу сразу, ибо уже мыслю этими параметрами. Задачи побольше описывать алгоритмом, не блок-схемой, но что-то наподобии просто по пунктам. В таких ситуациях если неописывать совсем, не разбивать работу на части, будет больше ошибок, код будет более путанным и тестить его будет сложнее! Для больших и стратегически важных задач,uml — диаграммы, ТС и IDEF — диаграммы предоставляют заказчики, либо делаешь сам))
avatar
Чем сложнее логика, тем актуальнее подготовка в виде блок-схемы. Зачастую уже на этом этапе обнаруживаются ошибки:) А вообще код не проблема, проблема — работоспособная идея.
avatar

теги блога Тимофей Мартынов

....все тэги



UPDONW
Новый дизайн