[spoiler]
Итак, первое, что вы используете в коде ваших торговых систем, это синтаксис языка программирования. Как объявлять переменные, как присваивать им значения, как записывать условия, как работать с циклами - про это расскажет вам любой учебник по языку программирования. Если вы забыли что-то из основ языка, откройте учебник, сразу вспомните.
Более сложный вопрос описания логики и формул. Хорошо, если всю логику можно описать конструкцией если - то - иначе. А если логика сложна и нелинейна?
Дополнительную нагрузку на восприятие создают переменные. В процессе написания кода их становится катастрофически много. Как потом разобрать, чем переменная a1 отличается от переменной a2?
Я понимаю, что многие трейдеры не искушены в программировании, поэтому, лучше всего следовать старому доброму правилу KISS. Keep It Simple Stupid. Мягкий перевод звучит так: Делать как можно проще, или, другими словами, не усложнять. Чтобы вы смогли объяснить свой код ребенку или тетушке, далекой от программирования.
Начнем с того, что определимся с именами переменных. Например, в коде вашей идеальной торговой системы есть переменная isSignalBuy. Очень хороший вариант для разбора.
Переменные внутри любого блока я начинаю со строчной буквы. Каждое новое слово начинаю с заглавной буквы. Разделителей между словами не делаю.
Давайте сравним с другими распространенными правилами именования:
isSignalBuy - так я называю переменную
issignalbuy - все буквы строчные, мозгу сложнее разделить слова
is_signal_buy - разделители в виде нижнего подчеркивания делают переменную более громоздкой
Отдельно хочу сказать про аббревиатуры в названиях переменных. Например, название биржи ММВБ. У нее есть устойчивое английское название MOEX. Если бы его не было, то написал бы латиницей MMVB. Не рекомендую делать дословный перевод локальных аббревиатур. Аббревиатуры в переменных пишу большими буквами.
Например, время открытия биржи ММВБ я запишу так:
MOEXOpenTime - если работаю со временем в контексте биржи
openTimeOfMOEX - если работаю в контексте времени открытия разных бирж.
Главная сущность в имени идет первой. Правило достаточно заумное, поэтому отношусь к нему как к рекомендации.
Со временем вы увидите, что лучше написать код один раз, а затем его использовать в ваших торговых системах. Поэтому, вы будете группировать код по смыслам. Каждый смысл будете оформлять в виде класса.
Название класса я всегда пишу с заглавной буквы. Например, class Indicators.
Внутри класса как раз и будут содержаться ваши готовые кусочки кода. В разных языках это может называться методами или функциями.
Например, для класса Indicators можно сделать функции SMA, EMA, RSI, Stochastic.
Чтобы получить результаты на выходе функции, нужно что-то подать на ее вход. Например: RSI(Series Close, int Period).
Обратите внимание, что переменные на вход также пишутся с заглавной буквы. Если же я захочу посчитать какой-то период внутри функции, то объявлю его, например, вот так: int period = 3.
Здесь мы красиво подходим к сложному коду. Как его написать так, чтобы потом быстро разобрать?
Разбиваете сложную задачу на элементарные. Каждая из них не должна у вас вызывать трудностей. Для уверенности, пишите комментарии на каждой строке кода. Я для вас именно так и делаю. Каждая элементарная задача - это функция с результатом и переменными на вход. В точке входа в функцию вы просто последовательно вызовите элементарные задачи.
Надеюсь, что эти несложные правила именования переменных и написания кода помогут вам в нелегком деле написания торговых систем!