CamarillaDaily
CamarillaDaily личный блог
23 декабря 2011, 16:28

Вопрос опытным программистам (ну и остальных мнения интересны)....

Вопрос по сути в следующем:

    Когда вы пишете какую-либо программу (в нашем случае торгового робота), которая подразумевает постоянную доработку в части проверки новых идей, вы:
    Добавляете в код реализацию новой идеи, тестируете и, при отрицательном результате —

1. оставляете эту часть в коде, но выключаете ее, чтобы, возможно в дальнейшем, использовать в комбинации с новой идеей?
2. удаляете эту часть кода, чтобы его не перегружать?
3. ваш правильный профессиональный вариант.

   Сразу скажу — вариант с добавлением чего-то в виде функции — понятен. Просто не все можно реализовать в виде независимой функции.

   Поясню откуда вопрос.

   Мой код на Qpile распух от первоначальных рабочих 300 строк до 2500. Причем работают из них, наверное, те же 500-700. Ini-файл также представляет собой уже подобие реестра Windows))). Добавляется какая-то идея, проверяется — не работает, оставляется для возможности использования в дальнейшем, в ini-файле прописывается выключение этой идеи.
   Результат — перегруженность кода, задержки на проверку множества условий, большое количество перекрестных зависимостей в программе (да простят меня профи за не проф язык).
   Версии предыдущих программ, конечно,  сохраняются, но проблема в том, что последняя версия всегда актуальна не только по добавлению в нее новой идеи, но и по исправлению ошибок. В результате просто к предыдущей версии вернуться не могу.

  Дополню пост по результатам первых ответов.

  Предположим есть функуия выставления заявок Trans(Параметры).
  Проверяем идею: Ставить заявки лимитками или по рынку:
  В Ini файле признак Limit = 1
  Получаем (синтаксис условный):

  if Limit = 1
     Trans(лимитка)
  if Limit = 0
     Trans(порынку)

  И т.п… Таких вот if набирается очень много. Даже при том, что какие-то операции реализованы в виде функций…
17 Комментариев
  • Ильнур
    23 декабря 2011, 16:37
    в процессе тестирования, оптимизации — не нужный (временно) код //комментирую. возвращаюсь к нему по мере необходимости.

    если те или иные блоки не понадобятся мне в ближайшее время — выношу в отдельный файл.

    пишу на c#
  • novice
    23 декабря 2011, 16:41
    Все можно и нужно реализовывать в виде независимой функции (модуля, если язык позволяет). Любая программа должна писаться «сверху вниз». Структурное программирование — это наше все.
    • asf-trade
      23 декабря 2011, 18:53
      novice, и добавить то нечего…
  • itPiligrim
    23 декабря 2011, 16:41
    Я пишу своего робота на 1С, не потому, что она для этого наиболее подходит, а потому, что в совершенстве владею этой платформой. Мне быстрее написать на знакомом инструменте, чем изучать специализированные. Так вот в 1С я решил данную проблему просто:

    Сама программа отвечает только за базовые операции по совершению сделок, а сами правила совершения сделок вынесены в пользовательский режим. То есть, например, M стратегий — это M элементов справочника, при этом каждую стратегию я могу N раз теститировать с разными параметрами. Но я пока тестирую только базовые идеи, вроде «шортим по цене открытия, в конце дня закрываемся». На более сложные вещи пока не хватает времени, но описанной проблемы у меня нет.

    Возможно, у вас тоже можно отделить алгоритм, процессы его тестирования и базовые операции друг от друга. Хотя бы разнести на разные файлы.
  • alexv1975
    23 декабря 2011, 17:12
    Если идей много и все разные, то можно, например самому себе в почту отправить последний рабочий вариант перед изменением. И резервная копия сохранится и откатить потом будет проще. Также знакомо, что пока проверяешь новые мысли, старые рабочие подходы теряются за кучей изменений.
  • Romanio
    23 декабря 2011, 17:24
    Qpile — это не язык, не нужно мучиться с ним! Можно писать на нормальном языке (С++, С#) в удобной среде разработки, типа Visual Studio, и пусть дергает QUIK через интерфейс, выставляет заявки…
      • Romanio
        23 декабря 2011, 18:03
        CamarillaDaily, независимо от объёма кода, на Qpile писать оочень неудобно, и С# это не эксковатор =)) один раз переделать робота под него, приделать интерфейс квика, и дальше никаких проблем… пишите и наслаждаетесь, отлаживаетесь. Можно и систему котроля версий поставить, чтобы вести разработу с сохранением всех промежутчных этапов, с возможностью отката и т.п…
          • asf-trade
            23 декабря 2011, 18:53
            CamarillaDaily,

            я тоже думал что фиг что прошарю… за месяц воткнулся в С++ хотя тоже был перерыв значимый…

            попробуй.
  • novice
    23 декабря 2011, 17:30
    По дополнению:
    Есть разные способы делать одно и то же ;) Но основное правило — логически связанные куски надо выносить в подпрограммы. Даже если эта п/п вызывается только в одном месте, это (вкупе с хорошим названием п/п) повысит читабельность кода. Только не надо доходить до экстремизма — нормальный размер п/п 10-30 строк.
  • sam
    23 декабря 2011, 18:50
    думаю вас спасет контроль версий, например через SVN
  • Максим Милованов
    26 декабря 2011, 18:17
    Лучше использовать разные версия кода, как было сказано выше — модно использовать систему контроля версий типа SVN (например — code.google.com).

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

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