pessimist
pessimist личный блог
16 июня 2021, 10:44

Нужны советы по формализации алгоритмов

Всем, приветы! Удачи и профита!

На старости лет, решил упростить себе жизнь на бирже с помощью скриптов на QLUA под QUIK. Пока скрипты были простые — все шло хорошо.

Однако, все течёт, все меняется и простыми скриптами зарабатывать как раньше не получается.

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

Нужны советы по формализации алгоритмов



То есть, пока алгоритм помещался в голове — все было славно, но как только скрипт начал превращаться в программу из нескольких модулей — начались проблемы. То забуду для чего писал какой-то кусок кода, то утону в дебрях оптимизации...

Попробовал начертить на бумажке блок-схему работы программы, но когда вышел за пределы формата А1 — понял, что этот путь мне не годится. Понимаю, что я морально устарел и, возможно существуют другие подходы к алгоритмизации решения задачек.

Нужны советы по формализации алгоритмов



Дорогие Смартлабовцы, с удовольствием приму ваши советы по этой проблеме и прочту изложение вашего собственного опыта.

Есть ли какие-то программы (желательно бесплатные) для составления и формализации алгоритмов? Или вы просто прописываете в форме текстового изложения план работы программы? Или другие варианты?

Короче, кто добрый — поможите чайнику разобраться.

Нужны советы по формализации алгоритмов


167 Комментариев
  • Андрей К
    16 июня 2021, 10:56
    Блок схемы — это одно из правильных приведений мыслей в порядок по полочкам. Если А1 не достаточно, то нужно разбивать алгоритм на модули, как вы сделали и чертить блок схему модульно. От глобального и все ниже к локальной формализации
      • Андрей К
        16 июня 2021, 11:00
        pessimist, конечно есть. С Microsoft я закончил на уровне Microsoft Visio. Я уже года 3-4 на Linux, тут чуть по другому.
      • Artem Lobziq
        16 июня 2021, 14:27
        pessimist, umlet бесплатная программа для подобных диаграмм
      • Petr S
        16 июня 2021, 14:35
        pessimist, хм… я надеюсь вы хотя бы до процедурного программирования то дошли?  все что может быть вынесено в функции — должно быть вынсеено в функции. В итоге у вас остается модулек для входа в позицию, для выхода, для контроля позиции  и еще может какие — модульки небольшие, запутаться очень сложно то. Ну а ежели конечно весь код напихать в одно место — то это одно место конечно превратится в Ж и блок-схему Ж рисовать бесполезно  ;)
          • Йоганн
            17 июня 2021, 04:58
            pessimist, модулечек простенький. просто прога должна сэйвить свои выполненные шаги в файл.
      • Gregori
        16 июня 2021, 21:39
        pessimist,  есть. гуглите case средства. целый класс ПО. только там обычно на более высоком уровне абстракции- взаимодействие модулей, потоков данных, диаграммы классов. это для крупных проектов актуально. Это для проф разработки. А так-- Visio или бесплатный DIA.

      • Йоганн
        17 июня 2021, 04:54
        pessimist, да программы есть и очень удобные, причем, лет 20 как — гугли, не помню…
  • ves2010
    16 июня 2021, 10:58
    ха... 
    вот поэтому я и пользую тслаб и все делаю из стандартных кубиков — чтоб ограничить полет буйной фантазии

    вообще годный алгоритм записывается крупным текстом на половинке спичечного коробка
      • ves2010
        16 июня 2021, 11:13
        pessimist, нет
      • ezomm
        16 июня 2021, 11:39
        pessimist, Согласен с ves2010. Лучший сиг ЦЗ2УПП. Это результат 25 летнего опыта. Про RSI и другие осцилляторы я забыл в 2007 г когда расстался с Метасток 7.2.
        • Gregori
          16 июня 2021, 21:41
          ezomm, а можно поподробней что за зверь такой? гугл молчит
          • ezomm
            17 июня 2021, 00:08
            Gregori, цена закрытия во 2м угле правого плеча.
            • Gregori
              17 июня 2021, 09:11
              ezomm, к сожалению я не совсем понимаю что это значит. точнее- из фразы понял только «цена закрытия» ))
              • asfa
                17 июня 2021, 19:41
                Gregori, там своя система как вообще движется цена — вероятно есть у коллеги в постах.
                • Gregori
                  17 июня 2021, 21:26
                  asfa, у ezomm ? 
                  • asfa
                    17 июня 2021, 21:44
                    Gregori, да.
                    Но понять её сложно, т.к. все детали никто не раскрывает.
    • Двоечник
      16 июня 2021, 11:05
      ves2010, далёк от всего этого… но спрошу, Тслаб бесплатный для «пробы пера»? для того чтобы попробовать како-нибудь алгоритм.протестировать на демо...?.. или всё платно
      • Андрей К
        16 июня 2021, 11:06
        Двоечник, для попробовать бесплатно. Для запустить в бой у брока платно
          • ves2010
            16 июня 2021, 11:16
            pessimist, да 
             в тслабе самый низкий порог входа в алго
            там навороченно овердокуя всего...
            просто доку прочти…
          • monte_carlo
            16 июня 2021, 11:23
            pessimist, там и тратить особо нечего. За день можно освоить базовые функции. В целом в ТСЛабе многое реализовано через жопу, но лучшего все равно ничего нет, если для нас чайников рассматривать.
              • monte_carlo
                16 июня 2021, 11:29
                pessimist, по деньгам не знаю. Я только для тестов использую. Торгую исключительно вручную!
                  • monte_carlo
                    16 июня 2021, 11:35
                    pessimist, да было бы за что)
              • Сергей Гутторов
                16 июня 2021, 11:42
                pessimist, все без платы, скачал, поставил и вперед… плата только в случае подключения потоковых данных с биржи, а так сколько угодно алго запускаете…
              • Андрей К
                16 июня 2021, 11:45

                pessimist, на кубиках прогнать простые идеи и осмотреть результаты, наверное проще пока не придумали для неподготовленного человека. Я им очень часто пользовался для теста, даже писал на их форуме и даже что то выкладывал из своих кубиков. Пока мои идеи не спустились глубоко внутрь секунды.

                ТСЛАб очень долго не поддерживал котиры с миллисеками и тем более с наносеками. Может уже сделали.

                  • Андрей К
                    16 июня 2021, 12:53
                    pessimist, Плаза вроде тоже наносеки не умеет. Только Fast и Twime.

                    Конкретно проверить в тслаб внутри секи я пытался и в 2017 и в 2018, забывая, что не умеет. Потом бросил. На самом деле, мало кто умеет так тестить. А кто более умеет хотя бы микросеки, тот делает это очень тяжело.
                • ves2010
                  17 июня 2021, 08:04
                  Андрей К, тслаб поддержиает счас тики и vsa
                  • Андрей К
                    17 июня 2021, 08:15
                    ves2010, да, vsa индюки я еще застал. Но их нельзя было трейдить. Приходилось писать свои vsa индюки с возможностью торговли.

                    А не подскажите, если я ему подкину тики с временем до микросек или наносек, он схватит это время? Раньше нет. Если я накину два инструмента с микросеками и построю между ними спред, он построит его криво, так как их засинхронит только на уровне секунд, не микросекунд
                    • ves2010
                      17 июня 2021, 08:24
                      Андрей К, это надо в техподдержку написать…

                      там проблема в том, что нет у тебя никаких микросекунд ...  задержки в 1000 раз больше =  пинг 10000мксек + задержка данных 2000 как минимум+ время выставления заявок 25000мксек

                      кроме того стакан могут двигать без сделок… т.е стакан сместился а цены ты не увидишь
                      • Андрей К
                        17 июня 2021, 08:31
                        ves2010, про задержки я понимаю. Мне чисто прогнать бектест )
              • ves2010
                16 июня 2021, 13:53
                pessimist, обычный 4000 в месяц
                и 1000 руб в месяц с ограничениями на объем...
                но там легко обходится — просто пускаешь кучу ботов
                  • ves2010
                    16 июня 2021, 14:12
                    pessimist, по разному… у них есть канал в телеграм и форум и техподдержка и документация на русском языке
              • Gregori
                16 июня 2021, 21:44

                pessimist, абонентка, насколько мне известно.
                Ну да и какое им дело- у Вас рой алегоритмов заявки на покупку/продажу генерят или один.

                была бы «за алгоритм» прятали бы трейдеры в одной функции проверки по каждому из них 

                  • ves2010
                    17 июня 2021, 08:06
                    pessimist, там ставится кастрированный квик и тслаб взаимодействует с ним… но есть норм брокеры со своим апи
          • Gregori
            17 июня 2021, 09:14
            pessimist, я думаю смотря для кого. Для меня не владеющего qlua- да. либо его крутить, либо извращаться с интеграцией с пайтона.
            А у Вас опыт то куда приличней в этом. Скорее всего какие то вещи можно будет делать куда быстрей, но с меньшей гибкостью в плане каких то нестандартных вещей.
      • monte_carlo
        16 июня 2021, 11:19
        Двоечник, для тестов на исторических данных — бесплатный. Для торговли — платно.
        • Двоечник
          16 июня 2021, 12:29
          monte_carlo, Т.е можно сделать скринер на индюках? на 100 например активов, на ТФ Н1, Н4, Д 
          • monte_carlo
            16 июня 2021, 12:53
            Двоечник, индюки все основные есть. Также можно с форума загружать пользовательские библиотеки. Или самому писать. Там достаточно просто всё. Даже для гуманитариев таких, как я. ТФ любые — хоть Н8. Короче, исторические данные с финама качнул — и вперёд)
    • ezomm
      16 июня 2021, 11:40
      ves2010, +
    • виталюня
      17 июня 2021, 00:13
      ves2010, 
      Рад что мои мои идеи сходны с идеями гуру рынка.
      Я бы пошептался с вами, да уровни разные.
      Это как студент с академиком.

  • fdsf fdsf
    16 июня 2021, 10:59
  • Vatokat
    16 июня 2021, 11:11
    Есть алгоритм «Купи и держи». Я пока не запутался)
      • LeO
        16 июня 2021, 12:08
        pessimist, «Купи и держи» со временем превратится «Купи и терпи»)) 
          • LeO
            16 июня 2021, 13:39
            pessimist, 
          • Сергей К.
            16 июня 2021, 13:42
            pessimist, на кошках тренироваться)
              • Сергей К.
                16 июня 2021, 14:00
                pessimist, имел в виду, что для роботов завести небольшой счет и баловаться, а купить и держать на отдельном купидержательном счете

  • Value
    16 июня 2021, 11:16

    По-моему, Вы усложняете. Драйвер какой-то… Вашей программе не должно быть до этого дела. Нельзя объять необъятное. 

     

    Разносите по разным уровням архитектуры. Получатся изолированные части, работающие через интерфейсы. Lua, конечно, не самый выразительный язык. Осознанно называйте объекты, пишите комментарии. Если код не понятен — переписывайте пока не станет понятным.

     

    Я не видел, чтобы кто-то успешно применял визуальные модели. Обычно, сложность нарастает и всё быстро превращается в кашу.

      • Value
        16 июня 2021, 11:32

        pessimist, программисты пишут черные ящики. Написал, работает — забыл. Если потом находят баг — разбираешься заново. Отсюда вывод: писать надо так, чтобы можно было разобраться.

         

        То забуду для чего писал какой-то кусок кода, то утону в дебрях оптимизации...

         

        Ну напишите комментарий что оно делает, если по коду непонятно. =)

         

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

      • Gregori
        17 июня 2021, 09:22

        pessimist, так и работают.
        абстракция, декомпозиция, модифицируемость программ в приоритете.
        Чем большей  и сложней программа тем это важней. 
        Разбили на части (то бишь декомпозицию сделали). В простейшем случае на функции/процедуры. Сложней вариант- на библиотеки под программ (модули), более модный- классы (объекты). но это при разработке больших программ нужно.
        сделали эти части по возможности более универсальными. то что можно не задавать константой-не задаете а выносите  как параметры процедуры или свойства свойства класса. 

  • nicknh
    16 июня 2021, 11:21

    Здесь надо разделять техническую составляющую работы скрипта и алгоритмы принятия торговых решений. В общем случае, техническая часть пишется один раз (условно), т.к. методики контроля, выполнения торговых действий однотипные. Поэтому ее расписывать особо не надо каждый раз. А вот торговые алгоритмы — да, надо нарисовать. Хотя проще написать.

    Сложнее всего когда этот алгоритм не твой, а тебе его надо реализовать. Сложность при этом не в нем самом (обычно все однотипно и не сложно), а в согласовании терминов. Понять что имеется ввиду — отдельная задача.

    • nicknh
      16 июня 2021, 12:18

      pessimist, Техническая часть сложная, но она не имеет отношения к алгоритму, т.к. одинаково необходимо отследить выполнение задачи, поданной командой через интерфейс, так и алгоритмически. Принять решения о дальнейших действиях, при ошибках.

       

      Эта часть требует формализации, да. При этом, мое мнение, что самое сложное — это написать для себя что может быть, а не расположить это в виде блок схемы. А то часто сталкиваюсь с мнением, что все должно быть идеально, а то что у нас клиент-серверная архитектура с кешированием на клиенте — уже не важно. А это как раз самое важное.

        • nicknh
          16 июня 2021, 13:09
          pessimist, Зачем, если можно проверить, что нет торгов. Если их нет, то нет.
            • Сергей К.
              16 июня 2021, 13:26
              pessimist, например, считать таблицу торгов, оттуда можно получить статус инструмента: торгуется он или нет
                • Hired
                  16 июня 2021, 14:58
                  pessimist, финам тоже по выхам другое время рисует, статус отображается вроде правильный. проверьте
                    • Hired
                      16 июня 2021, 15:18
                      pessimist, так же пользуюсь контролем времени, но с целью начать спамить заявки на открытие, чтобы успеть встать в очередь в стакане :) потому как статус сессии обновляется по параметру «запрашивать данные раз в ...» в настройках квика и для торгов на открытии не подходит
                        • Hired
                          16 июня 2021, 16:18

                          pessimist, так же собираю по крупицам знания со смартлаба. от вас не раз получал полезную информацию! например махинации с фикс курсом цб и облигами в $  правда ни разу не пользовался этим методом. Хотелось бы помочь, чем смогу, но сам новичок в алго теме и поэтому могу ошибаться в каких то глубоких моментах.

                          вы правы. можно слать одну заявку и проверять таблицу заявок в по параметрам: активная + цена (и например + инструмент) и если заявка присутствует — выставлять лесенки заявок по всем нужным инструментам. НО дело в том что таблица заявок отображается с задержкой, на глаз пример 0.5-1 секунд и поэтому опять же не подходит для торгов на открытии. Возможно вы имеете ввиду «ту самую функцию», которая скажет: отклонена или прошла заявка. Если честно я ей не пользовался, слышал что эти скрытые «пингующие» и «заказывающие стаканы и графики» функции иногда дают сбои :) Возможно ими стоит пользоваться.

                          Спам заявок это топорный метод, но пожалуй самый надёжный, потому что простой. Часто заявки дублируются из за лага появления их в таблице заявок или же просто перестаёт хватать ГО для новых заявок.
                          Ещё недостаток: штрафы от биржи (неэффективные транзакции), но в этой теме досконально не разбирался, т.к. много сделок и руками не посчитать все комиссии. Брокер вроде ничего не говорит, комиссия вроде сходится +-.

                          То что у ВТБ 3 транзакции в сек — это же крайне мало? или я не правильно понимаю. Отклики это когда заявки выставляются с задержкой уже после выполнение скрипта?

                        • nicknh
                          16 июня 2021, 17:29

                          pessimist, Контроль времени — это дополнительный, запасной вариант. Время сервера может приходит с ошибкой. Если получать статус сессии, то сразу по получению статуса активной сессии можно начать ставить заявки. Опередить участников рынка, расположенных у ядра биржи, все одно не получится.

                          Пинговать заявками — это смелый поход. Очень смелый.

                            • nicknh
                              16 июня 2021, 17:57

                              pessimist, Так дело даже не в штрафе, он от брокера может зависеть.

                              Дело в том, что клиент-серверная архитектура предполагает запрос: ответ. Когда нет торгов, то заявка не пройдет сервер брокера и придет такой ответ. А когда сессия уже началась, то будет только успешный ответ, если с параметрами заявки все хорошо.

                               

                              Но при этом важно дождаться ответа от транзакции, прежде чем отправлять новую. Если же не ждать, а просто отправлять, то очень вероятная ситуация, когда все они и пройдут. Если цель все их поставить, то да, ок. Но если это «потыкать палочкой», то он очень дорогим может отказаться. Ответ от сервера может идти неопределенно долго. Может за 200 мс, а может и за 10 минут, как это было в марте 2020.

                               

        • Hired
          16 июня 2021, 14:55

          pessimist, в квике есть параметр TRADINGSTATUS / session_status (и ещё какой то 3й вариант) чтобы проверить: проходят торги, клира, выходные

          или вы в курсе об этом?

  • супертрейдер
    16 июня 2021, 11:33
    Совет: нет никаких формализаций на рынке))
      • супертрейдер
        16 июня 2021, 11:44
        pessimist, Вы выдумываете свои понятия. Сочиняет сказки. На основе этого бульона хотите бота сделать. И просите совета. На совет с критикой, вы пишите бред. Почему? Потому что вы окрылённы сказками. Чем вам помочь, хз. Не слушаете, кто умнее. Тогда мудрите дальше. Может получится что-то, но вероятность крайне мала.
        Смысл заработка не в том, чтобы супер измудриться, а найти простую стратегию рабочую, как табуретка. В прочем ваша жизнь и ваше право.
  • u-gyn
    16 июня 2021, 11:36
    То есть, написать просто словами в форме изложения, я правильно понял?

    Да. ТС это же по сути описание «если… то» и ничего больше.

    Вот самая примитивная и при этом работающая ТС:

    Таймфрейм: 1W
    Инструмент: акции из индекса ммвб без префов
    Индикаторы: MACD (12,26,9), ADX (14)

    При пересечении macd снизу вверх на закрытии пятницы при растущем ADX покупка на открытии понедельника. Продажа — при пересечении macd сверху вниз.
    Шорта нет.


    p.s. ts lab действительно очень полезная вещь, особенно если не лениться и доделывать до конца, не бросая на этапе «ну это работает и так понятно»
  • Petrov
    16 июня 2021, 11:38
    Красивая блок-схема. ))
    ; р))
  • Сергей Гутторов
    16 июня 2021, 11:39
    ТС лаб
  • PERSEUS
    16 июня 2021, 11:42
    За свою карьеру программиста я написал столько кода и разной логики, что со временем приходя в пн на работу я абсолютно не помню, что я делал в пт.
    То с чем вы имеете дело — повседневность.

    Советы такие:
    1. Пишите комменты в коде, что это и зачем
    2. Пишите понятный и говорящий код в котором быстро можно разобраться. Если вы смотрите на код и в течении 3х секунд и не можете понять, что тут происходит, то это плохой код его необходимо делать проще.
    3. Учитесь читать и понимать код быстрее. Хороший программист, это тот кто может разобраться в чужом (своем/устаревшим/и.т.д.) коде быстро и внести туда правки.
    • Vkt
      16 июня 2021, 11:57
      PERSEUS, есть ли образец такого кода, просто чтобы понимать к чему стремиться. Желательно кусок робота на QLUA ни или индикатор на худой конец.

  • Karim
    16 июня 2021, 11:49
    Объектно-ориентированное программирование вам в помощь, на линейном далеко не уедете. Только простые проги.
    • Value
      16 июня 2021, 12:10

      Karim, Линус Торвальдс с Вами бы не согласился. =)

        • Value
          16 июня 2021, 13:01
          pessimist, я к тому, что объектно-ориентированное программирование — не серебряная пуля. Там своих заморочек хватает.
      • Value
        16 июня 2021, 13:06
        pessimist, я бы не писал что-то сложное на Луа. Ну индикатор — можно. Но бот… Взял бы коннектор, вывел данные в нормальный язык. При всем уважении к Луа, ей категорически не хватает выразительности. Да и с инструментами разработки всё плохо.
      • Karim
        16 июня 2021, 13:09
        pessimist, С линейного и начинают учить еще в школе. Ваша блок-схема и есть линейное программирование. Сложный алгоритм закодить очень сложно, да и зачем, когда можно упростить себе задачу.
        Торговый робот это «движок» плюс стратегия. Два объекта и у каждого свои события и реакция на них. 
          • nicknh
            16 июня 2021, 17:33
            pessimist, Никто не мешает не использовать колбеки. То, что они есть — это не значит, что их надо использовать. Тем более, что у них есть масса нюансов.
              • nicknh
                16 июня 2021, 18:00
                pessimist, Ответ на транзакцию Вы можете получить только через колбек, т.к. доступа к таблице транзакций из языка нет. А вот поймать новый ордер, вполне можно и без них. Что даже надежней.
                  • nicknh
                    16 июня 2021, 19:35

                    pessimist, Это надежней колбека, т.к. колбек может не прийти, приходит несколько раз, после падения Квика все колбеки сессии могут прийти заново. А по поводу скорости, не надо читать всю таблицу, достаточно понять, что там появилась новая запись(си) и прочесть только новое. Также запись в таблице может появится раньше чем придет колбек.

                    Впрочем, это дело вкуса, не более. Скрипт большую часть времени все одно ничего не делает.

  • Bearminator
    16 июня 2021, 12:01

    Придется учиться программировать, либо заказывать платно у кого-то разработку. 

     

  • Серёга Ростовский
    16 июня 2021, 12:53
    Х****** быть по пояс деревянным.
    Это я про себя.
  • Сергей К.
    16 июня 2021, 13:14
    Комментарии в коде сильно упрощают жизнь, причем, чем подробнее комментарии, тем проще потом разбираться в кодах.

    Одинаковые или однотипные блоки выносить в отдельные процедуры или функции с параметрами — это тоже упрощает.

  • CloseToAlgoTrading
    16 июня 2021, 13:45
    Рисовать блоксхемы это муторное занятие… Но если все же хотите и если диаграмы не для презентации готовите, попробуйте pluntuml, это сократит время в разы для описания ваших идей в формате блокдиаграм, и его, время, можно будет использовать для обдумывания новых идей или же реализации уже существующих.
  • Сергей К.
    16 июня 2021, 13:47
    На мой взгляд, формализовать надо не алгоритм, а торговую стратегию, которую потом и перекладывать на программный код.
      • Сергей К.
        16 июня 2021, 14:17
        pessimist, я в прошлом программист (1с), мне не сложно писать такие коды, в которых я легко разбираюсь
  • принц Оранский
    16 июня 2021, 17:07
    Мне кажется, что при достаточно сложной задумке — рисовать блок-схемы, будет очень заипательным занятием.
    Наверное проще разделить всю задачу на блоки — понять что каждый блок должен делать, и потом все связать — собственно в ЛУА похоже как раз заложен данный подход — так как функции в нем — напоминают по смыслу подпрограммы.
  • принц Оранский
    16 июня 2021, 17:59
    Нужно так масштабировать блоки — чтоб их композиция не занимала больше определенного формата бумаги, например А1 🤣🤣

    То есть если все блоки не влазят — значит нужно увеличивать «вместимость» блока 
  • Андрей Хрущев
    16 июня 2021, 18:40

    Как и большинство профессиональных программистов не люблю блок схемы. Совсем. Лучше без них!
    Алгоритм должен помещаться в голове. Хотя бы блоками. Этот совет и вам для рисования блок-схем. На одном уровне до десятка квадратиков, не больше. Крупноблочно, например: «открываем позицию лонг». А потом, на следующем уровне детализации, этот квадратик разрисовываем подробно. Например: «вычисляем уровень стопа, вычисляем уровень тейка, вычисляем размер позиции, отправляем заявку брокеру, проверяем ответ»...

    Вы совершенно правы, в утверждении что шевелить мозгами полезно. Согласен на все 100.

    А вот денег там нет.
    Увы :(
    Иначе бы профессиональные программисты их давно забрали )

    Кажется, у Кургузкина в лабиринте иллюзий, встречал. Одно из распространенных заблуждений. Надеюсь, Вы не примете на свой счет. Это психология. Она для всех людей работает. Даже для тех кто знает про это искажение.
    Тем кто слаб в каком-то инструменте, кажется что усилия по его освоению  (иснтрумента) будут вознаграждены с торицей. На самом деле это не так. Рынку плевать 10 часов вы потратили на луа или 1000. Он ничего вам за это не должен.

    Удачи!

  • iddqd3n
    16 июня 2021, 18:46
    Начинал с lua, но даже средненький алгоритм требует кучи кода для поддержания простых вещей. В результате переписал всё на с++ — теперь легко и удобно поддерживается и расширяется.

    Вся система разбита на независимые взаимодействующие блоки, каждый из которых по отдельности довольно прост, и нет необходимости держать в голове все алгоритмы разом, это попросту невозможно (без специальных веществ).
  •    С перерывами в работе кода (пропал интернет и проч.) можно бороться легко — записывайте в файл изменение состояния программы (заявка, цена — те параметры, которые важны в алгоритме). При перезапуске программа считывает файл и продолжает работу. 
       Используя стандартные модули сторонних разработчиков вы лишаете себя возможности сделать «свои плюшки».
       Если слова объектно-ориентированное программирование вам мало о чем говорит, то проще со своей блок-схемой и алгоритмом нанять квалифицированного программиста для реализации кода. В этом случае требуйте обязательно подробные комментарии в коде. Потому что править (улучшать, менять что-то и проч.) вам все равно будет нужно 100 %.
      • pessimist, Насчет «много файлов...». Советую критически отнестись к набору параметров, которые надо писать в файл. Большинство из них будет расчетное или браться из системы квика, тем более, что перезапуск будет осуществлен через какое-то время, и параметры надо будет обновлять. Вам надо записывать только «управляющие» параметры, которые управляют алгоритмом. Много файлов и параметров для записи — не оптимальный путь.  
           Насчет «чужого кода». Имел ввиду предложения типа ТСЛАБа, которые вам давали в комментариях.
           Насчет «объектно-ориентированного программирования». В принципе, если вы программировали на паскале, понять это не составит для вас особого труда. Погуглите. В общих чертах, объект это примерно как функция, но позволяет создать иерархию классов. Например, вы для одного интервала создали алгоритм расчета каких то параметров. Этот расчетный алгоритм и будет объектом. И вызывая его для разных интервалов вы будете создавать массивы параметров по одинаковому расчетному алгоритму. В старом паскале вам потребовалось бы ввести соответствующие массивы и вызвать для них функцию. А в случае объектно-ориентированного программирования массивы будут создаваться автоматически при вызове объекта с новым классом переменной (в моем примере — новым интервалом). Сам прошел через эту стадию понимания такого программирования. Трудно, но реально, если у вас был опыт программирования раньше. 
           Насчет блок-схемы. Для ее создания главное — не умение программировать, а ясное понимание логики расчета и принятия решений.
           Не судите строго за длинный комментарий. Посоветовал, как мог ))) 
    • pessimist, Зачем связывать количество файлов сохранения промежуточного положения кода с количеством сохраняемых параметров? Все можно уместить в одном файле, соблюдая четкую последовательность записи-чтения параметров. Ну и еще раз о критическом переосмысливании этих параметров. Например, положение окна — это точно не тот параметр, который надо сохранять в файле промежуточного состояния. В коде изначально задается положение окна на экране. Если вы окно потом переместили, какой смысл запоминать это? Ну, после перезапуска еще раз переместите окно мышкой...
         А последовательность принятия решений и действий — это должен быть ваш продукт, ваши идеи. Так же, как и расчетная часть (или что там еще у вас, не знаю сути вашей идеи) алгоритма. В интернете или в литературе вы найдете только общие слова о риск-менеджменте, условиях входа-выхода и проч. Как эти общие слова реализовать — это вопрос к вашему творчеству и интеллекту.
          Если бы все это было формализовано, да еще верно, так все бы трейдеры заколачивали мешки денег регулярно ))) 
         Удачи в этом нелегком деле
  • Jkrsss
    17 июня 2021, 09:42
    Проектирование это отдельная наука. В крации надо уметь смотреть(простраивать планы) через Объекты(существительное), функции(процессы), организация(управления), материалы. В радиотехнике есть принципиальная схема, функциональная схема, математическая схема, а есть еще сами материалы. 
      • Jkrsss
        17 июня 2021, 10:00
        pessimist, ну это просто формула i=u/r cosfi, плюс селективность. На рынке это формула риска плюс правила теор вероятности(типа когда зависимые события то умножаются когда не зависимые складываются).
    • pessimist, Вы, на мой взгляд, уже сформировали представление о том, как должна «выглядеть на экране» ваша программа и как выполняется алгоритм. Это нормально. Но часто мешает переосмыслить взгляд на вещи, который уже в сознании считается окончательным. Поверьте, в процессе написания программы появятся моменты, которые заставят что-то менять, и даже частично переделывать логику. Потому, что вы столкнетесь с проблемами как чисто программного характера, так и параллельно увидите проблемы, связанные с ними или с логикой вариантов сценария, которые всплывут в процессе написания и осмысления кода. Насчет файлов и множества параметров — я спорить и настаивать не буду, я уже высказал свой совет, тут ведь еще дело вкуса каждого. Но в качестве иллюстрации — про окна — какая разница сколько окон, каждое окно в программе изначально создается в заданном месте экрана. Изначально задали эти места в нужном вам порядке, и вопрос решен, смысл запоминать эту информацию. Несколько экранов, различающихся размером и шрифтом? Не проблема — задайте параметр в исходных данных (например, он равен либо 1, либо 2), а в программе задайте два набора мест расположения окон (для экранов 1 и 2). При запуске задайте значение исходного параметра типа экрана и окна будут размещены нужным вам образом. И сохранять эту информацию не надо....
         Формализация — это своего рода искусство, а потому этот процесс разные люди реализовывают по разному даже в рамках одинаковых критериев. И еще — порой формализовать даже простые для человеческого мозга вещи — абсолютно не тривиальная задача. В качестве примера могу привести вопрос формализации тренда, да и тот же риск-менеджмент. Как "… наглядно и внятно изобразить (формализовать)..." условия вы нигде и не найдете по этим причинам, да потому, что такого представления нет, и быть не может (как минимум — на текущем этапе), иначе всем ими бы и руководствовались. 
         «Все тейдеры» — существуют просто потому, что они физически есть. Согласен, что их задачи не тождественны полностью, но каждый из них стремится получить прибыль. И если бы существовал абсолютно гарантированный способ такой торговли, да еще описанный в массах, да еще и формализованный — все бы торговали в плюс. Вопрос только в том, кто бы тогда обеспечивал их прибыль денежным ресурсом ))) Я считаю, что в самом общем смысле рынок всегда позволяет заработать, независимо от размеров ДЕПО и проч., вопрос в том, чтобы увидеть эту возможность и успеть ею воспользоваться в моменте, а не пост-фатум. 
         Еще раз оговорюсь — моя писанина — это не нравоучение и т.п., просто делюсь собственным опытом в общих чертах, возможно он будет как-то полезен. ))) 
    • asfa
      09 августа 2021, 22:47
      pessimist, бодрый вечер!
      Удалось реализовать задуманное? 
        • asfa
          10 августа 2021, 08:41
          pessimist, понятно.

          Вопрос. Надо автоматизировать простую штуку: при снижении до определенного уровня надо продавать фьючерс. Но если при обратном движении будет достижение/превышение уровня, тогда нужно откупать на том же уровне. И так неограниченное число раз.

          Lua-скрипты умею запускать, формулы и простой код понимаю 
          Что можете посоветовать?
            • asfa
              10 августа 2021, 09:05
              pessimist, напишу, спасибо!

              Самое сложное в Вашей штуке...

              всё просто — это одно число, которое задаётся руками на долгое время = до экспирации, т.е. на 3 месяца.
              Т.е. п.2)
  • alexmiramax
    19 июня 2021, 19:22
    Блоксхемы — это зло. Запрограммировать простую логику можно, как только она усложняется появляется много ветвлений которые невозможно удерживать в фокусе внимания, здесь подойдет классическое программирование algotrading101.com/learn/backtrader-for-backtesting/

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

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