Блог им. CamarillaDaily

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возможно, у вас тоже можно отделить алгоритм, процессы его тестирования и базовые операции друг от друга. Хотя бы разнести на разные файлы.
avatar
Спасибо, в принципе я и сам знал ответ на свой вопрос. Функциональность и структурированность… Но это мой косяк и сейчас и всегда был с института. Всегда валю все в кучу. Понимаю, что не профессионально. Хорошо хоть сейчас стал комментарии писать почти на каждую строку. Раньше и этого не делал…
avatar
Если идей много и все разные, то можно, например самому себе в почту отправить последний рабочий вариант перед изменением. И резервная копия сохранится и откатить потом будет проще. Также знакомо, что пока проверяешь новые мысли, старые рабочие подходы теряются за кучей изменений.
avatar
Qpile — это не язык, не нужно мучиться с ним! Можно писать на нормальном языке (С++, С#) в удобной среде разработки, типа Visual Studio, и пусть дергает QUIK через интерфейс, выставляет заявки…
avatar
Romanio, Не согласен. Когда мне нужно будет вырыть котлован — я найму экскаватор. А если мне нужно посадить дерево — я воспользуюсь лопатой.
avatar
CamarillaDaily, независимо от объёма кода, на Qpile писать оочень неудобно, и С# это не эксковатор =)) один раз переделать робота под него, приделать интерфейс квика, и дальше никаких проблем… пишите и наслаждаетесь, отлаживаетесь. Можно и систему котроля версий поставить, чтобы вести разработу с сохранением всех промежутчных этапов, с возможностью отката и т.п…
avatar
Romanio, Стар я для этого. 40 лет. И 17 лет забвения С++.
avatar
CamarillaDaily,

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

попробуй.
avatar
Всем плюсы в этом топике!!!
avatar
По дополнению:
Есть разные способы делать одно и то же ;) Но основное правило — логически связанные куски надо выносить в подпрограммы. Даже если эта п/п вызывается только в одном месте, это (вкупе с хорошим названием п/п) повысит читабельность кода. Только не надо доходить до экстремизма — нормальный размер п/п 10-30 строк.
avatar
думаю вас спасет контроль версий, например через SVN
avatar
Лучше использовать разные версия кода, как было сказано выше — модно использовать систему контроля версий типа SVN (например — code.google.com).

Читайте на SMART-LAB:
Фото
Как заработать на росте цен на удобрения
Дарья Фёдорова Конфликт на Ближнем Востоке и перекрытие Ормузского пролива вызвали ралли не только цен на нефть и газ, но также алюминий и...
Фото
«Дом.РФ» — интересный фининститут с потенциалом роста
Аналитики «Финама» добавили в покрытие бумаги «Дом.РФ». Эксперты положительно оценивают перспективы бизнеса эмитента, одного из ключевых...
Фото
Денежный рынок vs облигации: фокус смещается
В период роста ключевой ставки Банка России фонды денежного рынка стали весьма популярны. За это время они обеспечили инвесторам высокую...
Фото
Гендиректор Инарктики продал свои акции компании. Что это может значить?
Вечером в пятницу (6 марта ) вышел сущфакт о том, что Соснов Илья Геннадьевич, гендиректор Инарктики, продал свои акции компании. В нашем...

теги блога CamarillaDaily

....все тэги



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