Тимофей Мартынов
Тимофей Мартынов личный блог
15 ноября 2012, 20:13

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

А вы составляете точный алгоритм до того как написать программу?
Если да, то как? Рисуете блок-схему на бумаге? Или может есть какие- то программы для визуального составления блок-схемы алгоритма…
Или шарашите код сразу? Всухача))
50 Комментариев
  • Александр Муханчиков
    15 ноября 2012, 20:15
    Составляю точный алгоритм и шарашу сразу код.
    Алгоритм в любом случае подвергается доработкам во время тестов
      • Александр Муханчиков
        15 ноября 2012, 20:17
        Тимофей Мартынов, не, не делаю. в голове всё
          • И. Алексей
            15 ноября 2012, 20:20
            Тимофей Мартынов, может у него алгоритм = пересечение мувингов :))) шучу, без обид.
          • Александр Муханчиков
            15 ноября 2012, 20:23
            Тимофей Мартынов, ты на бумажке никогда финальный вариант не задашь. Придётся менять во время тестов. Из начальной задумки может многое изменится.

            Я просто программирую начальную задумку, начинаю тестить и меняю по ходу дела.
          • Андрей Коган
            15 ноября 2012, 20:23
            Тимофей Мартынов, на самом деле, если писать код правильно, то любое изменение, которое не меняет концепции, не должно приводить к тотальному переписыванию исходного кода.
          • Тимофей Мартынов, можно быстро блоками в трейдматике наваять а потом писать, тк трейдматик имеет много проблем
          • Marsel Tazetdinov
            15 ноября 2012, 20:57
            Тимофей Мартынов, радикально поздно не бывает, ленивые программисты сделали программы для бекапов и логируют все изменения :)
          • Sergey F
            15 ноября 2012, 22:02
            Тимофей Мартынов, код пишется так же легко как и прямоугольники рисуются
          • Werner Heisenberg
            16 ноября 2012, 07:57
            Тимофей Мартынов, да это вполне нормально! Я как то по началу пытался рисовать схему, и как то подумал себя на мысли что уже написал бы робота и начал тестировать за это же время.

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

            Наверное это и есть моя блок схема, просто надо понимаю как работает программа, линейно или нет.
      • WaveCatcher
        15 ноября 2012, 20:32
        Тимофей Мартынов, Вы захотели, на основе своей системы сделать алгоритм на тиках/минутках?)
      • Сармин Алексей (escoman)
        15 ноября 2012, 20:36
        Тимофей Мартынов, тоже никаких схем не рисую. Обычно написание робота выглядит так: берёшь уже когда-то написанного робота и подправляешь в нём алгоритм в нужных местах. :))

        В большинстве роботов меняется только условие открытия/закрытия позиции. Вся инфраструктура остаётся постоянной.
      • UpReal
        15 ноября 2012, 20:37
        Тимофей Мартынов, Если только начинаете, то лучше конечно нарисовать на бумаге ромбики, прямоугольники. Можно по принципу — сначала блок-схема в общем и детализции некоторых блоков схемы. А вот с опытом начинаешь их строить в голове и сразу переносить на исходный текст.
  • Константин Б
    15 ноября 2012, 20:23
    Я пишу алгоритм. Стараюсь на бумаге сделать максимум. Блок схемы рисую иногда когда вдохновение есть) А по факту кода уже дорабатывается)
  • Swan
    15 ноября 2012, 20:25
    Если интересно про программки для диаграмм.

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

    Но минимум в половине случаев побеждает с абсолютным перевесом «бумага+карандаш».
  • Максим
    15 ноября 2012, 20:25
    я никогда схем не рисовал, но если очень нужно Mindjet MindManager можешь попробовать
  • xTestero
    15 ноября 2012, 20:27
    сразу с головы
    если что то сложное — описываю как должно работать, с этого пишу код
    блок схемы — трата времени (слишком трудоемко и слишком детально)
  • _sg_
    15 ноября 2012, 20:35
    Достаточно описать на бумаге, то что Вы хотите. Программисты все остальное — то, что им нужно сделают сами. Если подойти более формально, то достаточно документа под названием «Требования к программному продукту», то есть то, что он (продукт) должен делать. Но сейчас в эпоху «Agile» и «Экстремального» программирования лучше всего будет работать с программистом в тесном контакте. В этом случае будете получать релиз примерно раз в неделю. При данном подходе Заказчик «созревает» вместе с программой.
    ПС. Роботы не панацея.
  • Bobby Axelrod (ABN Capital)
    15 ноября 2012, 20:37
    открываем ТС ЛАБ и рисуем в визуальном редакторе.
    А дальше дорабатываем тестируем оптимизируем переводим в код и тд и тп.

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

    Что до ответа на вопрос: алго пишу по достаточно приблизительному черновому описанию, составленному самим себе в блокноте. При этом процесс написания, по сути, не останавливается никогда. Код постоянно дописывается и рефакторится по мере надобности. Живет, в общем. Собственно поэтому никакие блок-схемы и не нужны — они устареют практически на следующий день.
  • Кот Матроскин
    15 ноября 2012, 20:59
    Все рабочие стратегии-идеи достаточно простые, чтобы их держать в голове и не тратить время на ерунду вроде блок-схем. Если идея усложнилась до того, что требует оформления на бумаге — в корзину такую идею, т.к. работать не будет.
    Резюме: не пишу))
  • Антон Кротов
    15 ноября 2012, 21:11
    Всегда рисую алгоритм любой программы. Каждый узел, разумеется, детализируется по-разному, но в целом такой подход помогает более четко представить структуру будущей программы (не только запись самого алгоритма на понятном машине языке, но также систему именования идентификаторов, дерево вызовов, структуры данных и пр.)
  • Maaxee
    15 ноября 2012, 21:16
    всё зависит от уровня программиста. чем выше уровень тем быстрее он может писать сразу код. ну а так… обдумать можно. но без бумажек. обычно всё в голове.
    • Антон Кротов
      15 ноября 2012, 21:31
      Maaxee, ну, как бы, все наоборот. Чем выше проф. уровень программиста, тем больше он изложит на бумаге.
  • Дмитрий Власов
    15 ноября 2012, 21:16
    После того, как идея торговой системы определена, необходимо нарисовать блок схему того, как мы будем действовать.

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

    Краткий обзор программ, которые позволяют рисовать блок-схемы можно уведить по этой ссылке: 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/
    • Дмитрий Власов
      15 ноября 2012, 21:18
      Дмитрий Власов, Первая ссылка там некорректная. Но как комментарий отредактировать — не знаю.
  • Мурен(а)
    15 ноября 2012, 21:25
    Тимофей, Устал руками торговать? хочешь уйти от эмоций?
  • Изя 3%
    15 ноября 2012, 21:28
    Offload на бумагу всегда полезно делать. Перефразируя известную поговорку — чем больше бумаги тем чище мозг )
  • На бумажке А4 ручкой, основные состояния автомата в виде блоков и стрелочками переходы из состояния в состояние
  • 34
    15 ноября 2012, 22:29
    Тимофей, ты сам говорил рынок иногда бывает непредсказуем или непредвиден. Что нужно систематизировать на рынке, правильно — только убытки. Осмелюсь предположить что блок схему для программы надо формировать из ограничения убытков, убытков и еще раз убытков. Простите за банальность фразы. А как формировать блок схему при бычьем рынке при резком провале цены ниже уровня тренда. Как формировать блок схему при медвежьем рынке при резких отскоках. Как нужно писать блок схему при долгосрочном формировании дна рынка (1, 2 месяца). Как нужно писать блок схему при дивидендных выплатах в марте – апреле месяце. Блог схемы полезны. Это неоспоримо. Блог схемы нужны и целесообразны. Однако состояние рынка медвежий тренд, бычий тренд, консолидация, паника, эйфория как все это описать в одной блок схеме? Думаю в одной схеме это крайне сложно. Остается писать блок схемы для каждой рыночной ситуации в отдельности. А трейдер будет сам решать в зависимости от своего убеждения, какую схему выбрать в данный период времени.
  • Long Poberi
    15 ноября 2012, 22:59
    я тоже по старинке блок-схему рисую сначала, на ней сразу хорошо видно, что куда и почему, и где потом грабли искать или подкрутить чего
  • RU крыс
    15 ноября 2012, 23:24
    Один вопрос? Робот убыточный или прибыльный?
    Если прибыльный — то задача не решается.
    И вот почему, никаких роботов по сути не существует.
    Сделка является реакцией на фиксацию некоторого события в фиде. Голова и плечи, облако Ишимоку, нити Гартли, объемы, тики, мувинги, ключевые слова в новостях и тд и тп.
  • AIP
    15 ноября 2012, 23:25
    Шарашу код сразу. Но я программист с 20 летним стажем :)
  • Михаил Шершнев
    15 ноября 2012, 23:32
    Пишу сначала на псевдокоде, простыми словами, вроде такого:

    каждый тик
    ··если открыта позиция
    ····сопровождение открытой позиции
    ··иначе
    ····если характер рынка походит
    ······проверка возможности открытия позиции
  • Vision
    16 ноября 2012, 00:26
    Тимофей, у Вас же на РБК офигенный коллега-техник, Андрей Сапунов. Не проще у него спросить? Да и на курсы к нему сходить. ;)
  • FinSerfing
    16 ноября 2012, 09:15
    Я бы разделил понятие алгоритма на внешнее и внутреннее.
    Внешнее — это просто набор правил(чёткий) по которым должен функционировать робот. Эту часть составляет трейдер. Внутренний — это уже переложение внешнего алгоритма в программный код.
    И ту и другую часть я обязательно рисую(не раз) на бумаге и маркерной доске.
    Рисую, и откладываю в сторону на день или два.
    Потом достаю и анализирую.
    Обычно, за этот период возникают идеи которые и применяю.
    Уверен, что визуализировать обязательно, потому что это облегчает восприятие, оптимизацию и развитие идеи.
    Да и держать в голове кучу связей не нужно.
    А где рисовать не так важно, главное чтобы было удобно.
  • pashkins
    16 ноября 2012, 09:40
    Если в голове порядок и все по полочкам расставлено — сразу рисую то, что хочу.
    Если некоторые вещи не понятны — рисую сначала блок схемы с пояснениями. и только потом переношу все программу с дополнениями по ходу.
  • _sg_
    16 ноября 2012, 11:33
    Тимофей, Вы спрашиваете Кто как и что делает при разработке роботов. Вот Вам и написали тыщу вариантов. А нужно просто взять на вооружение методы, которые СЕЙЧАС в МИРЕ используются, популярны и доказали свою высокую эффективность в этой области ( разработке ПО ). Наберите в поисковике AGILE, SCRUM — и Вы увидите, что все уже давно придумано КАК ЭТО НАДО ДЕЛАТЬ СЕЙЧАС.
    • Жадный Яша
      16 ноября 2012, 13:55
      _sg_, allcaps-ом уже не пишут — ваши методы устарели)
  • InfantileCactus
    19 ноября 2012, 17:51
    ИМХО, описание обязательно, чем сложнее и непонятнее для вас система, тем больше ее нужно формализировать и описывать. Я программист, конечно с опытом мелкие задачи пишу сразу, ибо уже мыслю этими параметрами. Задачи побольше описывать алгоритмом, не блок-схемой, но что-то наподобии просто по пунктам. В таких ситуациях если неописывать совсем, не разбивать работу на части, будет больше ошибок, код будет более путанным и тестить его будет сложнее! Для больших и стратегически важных задач,uml — диаграммы, ТС и IDEF — диаграммы предоставляют заказчики, либо делаешь сам))
  • ipisarev
    19 ноября 2012, 20:12
    Чем сложнее логика, тем актуальнее подготовка в виде блок-схемы. Зачастую уже на этом этапе обнаруживаются ошибки:) А вообще код не проблема, проблема — работоспособная идея.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн