Блог им. Hummel
Пару лет назад, на одном иностранном сайте (ABC какойт-то там), я наткнулся на подборку неплохих уроков по easy/power language. После перевода с помощью гугл транслейт, они очень помогли мне освоить этот язык. Пожалуй выложу их здесь. Думаю кому нибудь пригодится.
Отлично, вот вы приступили к первому шагу на пути освоения программы Multicharts и Tradestation. Я очень рад отправиться вместе с вами в это увлекательное приключение.
В этом уроке я покажу вам основы работы с PowerLanguage и PowerLanguage Editor. Я много думал над тем как лучше сделать эти занятия. С одной стороны, мы бы могли сразу погрузиться в программирование, а теорию я бы объяснял попутно. С другой стороны, мне кажется что лучше, сначала рассказать об основах, и затем строить практику на этом фундаменте. И когда мы будем делать что-то на следующих уроках, у вас уже будет представление о том, что мы будем делать. И эта информация поможет вам в изучении.
Последний подход, по моему мнению, подойдет лучше для нашей учебы.
В этом уроке мы начнем знакомиться с PowerLanguage Editor. Вы увидите, какая разница между inputs (вводными) и variables (переменными). Как объявлять и включать их (и конечно, вы узнаете, что означают эти два слова). В конце этого урока вы узнаете о правилах хорошего кода, которые существенно облегчат вашу жизнь, в качестве программиста.
Имейте в виду, что я так же учусь преподавать, вместе с вами. Я постараюсь не загружать уроки техническими подробностями, но тем не менее кое что там будет. Если у вас есть идеи, как улучшить обучение и любые другие предложения, я буду очень рад.
Итак, достаточно разговоров, давайте начнем путешествие. Начнем с того, что компьютер не разговаривает на нашем языке. Он получает инструкции от машинного кода или промежуточного языка. Хотя мы можем программировать в этих языках, гораздо удобнее использовать специальный язык программирования. Например, PowerLanguage, который ближе к человеческому языку. Так же вам нужна программа, которая скомпилирует ваш код в то, что компьютер способен понять.
Давайте посмотрим на редактор Power Language, где и осуществляется кодирование и компиляция. Если редактор Power Language еще не запущен, то запустите его. Скорее всего, вы увидите подобную картину:
Главное окно пусто. Если у вас открыто studies, то оно должно отобразиться в этом окне. Окно navigator справа, позволяет вам быстро получить доступ к вашим studies, и словарю.
Словарь содержит все ключевые слова языка программирования. В сочетании с вводными и переменными, мы будем использовать эти ключевые слова, в нашем коде.
Нижнее окно отображает три различные вкладки:
Давайте создадим новый индикатор, нажав File > New в редакторе PowerLanguage. Это откроет диалоговое окно. Поставьте переключатель в значение Indicator, и нажмите “OK”.
Придумайте название для нашего индикатора. Единственное ограничение заключается в том, что это имя не должно использоваться в другом studies.
Например, вы можете назвать индикатор “ABC_PowerLanguage Lesson 01”. Это имя будет отображаться на графике, и поможет вам быстро сориентироваться, так как оно отображает цель исследования. Мне нравится использовать префикс ABC_ для обозначения study, которые я разработал для себя или для этого сайта. Для других работ я буду использовать другие названия, чтобы было легче найти то, что мне нужно.
Каждое study может иметь inputs (вводную), которым можно назначить значение по умолчанию. Например, вы можете использовать вводную для того чтобы задать значение длины скользящего среднего. Значения вводных для индикаторов и систем могут меняться после того как вы наложили их на график. Так что имеет смысл сделать несколько вводных, чтобы study сделать более удобными.
Когда вы объявляете вводную, дав ей имя и присвоив значение по умолчанию, вам необходимо определить тип вводной. Всего может быть три различных типа:
Чтобы объявить вводные, нужно использовать ключевое слово “Inputs” (или “Input”), затем “:”, а потом имя и значение по умолчанию в скобках. Вы можете объявить несколько вводных и отделять их запятыми.
Вот как должны выглядеть три различных вводных:
Попробуйте сделать это сами. Введите три Input, и когда закончите, нажмите Compile (или F3).
Вкладка Build в нижнем окне должна отображать что-то вроде этого:
Это окно показывает имя study, время начала и время окончания процесса компиляции. Сообщение указывает на то, что вы только что успешно создали свой первый индикатор в Power Language для Multicharts. Поздравляю!
Если вы получили сообщение об ошибке, значит что-то не так с вашим кодом. Сравните ваш код с кодом на скриншоте, и проверьте, есть ли какие-нибудь различия. Причина может оказаться в простой ошибке, например в пропущенной запятой или в незакрытой скобке.
Вы можете изменить значение вводной в ручную, но его нельзя поменять при помощи кода, и тогда в игру вступают variables (переменные).
Variables(Переменные) используются для хранения числовых, текстовых и логических (истина/ложь) значений. Значение, сохраненное в переменной можно найти в любом месте скрипта по имени переменной и изменить при помощи кода в любое время. Переменные должны быть объявлены перед использованием.
Ваш код может использовать переменные, для работы с данными. Они используются для хранения значений, и как следует из названия, эти значения могут меняться. Значения переменных могут меняться, когда ваше study запущенно. Так же значение переменных может быть цифровым, текстовым или логическим.
Так же как и вводные, переменные в Power Language могут быть трех типов:
Вы так же задаете тип переменной, и задаете значение по умолчанию. Так же вы можете указать, когда следует ей следует обновляться (во время бара или в конце бара) и номер передачи данных. Про это я расскажу подробно в следующем уроке.
Давайте добавим переменные в код. На скриншоте вы видите три разных вида переменных. После того как вы их объявили нажмите Compile (или F3).
Но, это не работает, как ожидалось. Что не так с этим кодом? Посмотрите на окно отладки. Оно даст вам ответ.
«Это слово уже определенно». Это относится ко второму названию переменной “A_Boolean_input”. Вы можете использовать только одно такое же имя внутри одного study. В Power Language нет зависимости от регистра.
Таким образом, для него нет разницы между “VariableName” и “VARIABLENAME”.
Измените имя переменной как на скриншоте ниже. Компиляция должна пройти без проблем.
Пока мы изучаем переменные и вводные, давайте рассмотрим некоторые тонкости в их наименовании.
Кроме зарезервированных ключевых слов, вы абсолютно свободны в выборе названия для переменных и вводных (за исключением специальных знаков, таких как %, & или $). Это означает, что вы можете назвать переменную var1 или WeightedAverage. Обе они могут хранить ту же самую величину. Тем не менее, последнее название дает представление о назначении переменной. Вы можете значительно облегчить вашу жизнь, когда вы будете использовать понятные имена для переменных и вводных.
Это пригодиться, когда вы бы будете просматривать свой код в поисках ошибки.
Var1 = Var2 + Var3 * (Var4 – Var2);
ExponentialAverage = Average1BarAgo + WeightingFactor * (PriceValue — Average1BarAgo);
Я считаю, что крайне полезно иметь определенную структуру кода. Это можно сделать при помощи пробелов. Отступы и пустые строки после блоков кода, облегчат вам жизнь, когда вы будете работать с кодом. Никто не запрещает вам написать весь код в одну строку. Однако, в таком коде гораздо труднее разобраться. Пробелы никак не скажутся на производительности вашего кода в Power Language редакторе, так как компилятор уберет их при компиляции кода, с которым будет работать MultiCharts.
Объявление наших переменных и вводных может выглядеть по-другому, но это не повлияет на результат. Но это будет гораздо труднее читать.
Мало того, что переменные и вводные имеют непонятные имена, но я так же поставил слишком большой пробел между строками, а там где он был действительно нужен, не поставил вовсе.
Я хочу завершить мой первый урок на комментариях и выскажу свое мнение о комментариях в коде. Вы можете добавить в код строки, которые будут игнорироваться компилятором. Это может оказать существенную помощь для программиста, для облегчения понимания кода. Комментарии никак не связанны с кодом, они предназначены только для вас и других программистов.
Существуют два типа комментариев:
Первый тип комментария начинается с «//», это означает, что вся строка будет отведена под комментарий.
Второй тип комментария будет начинаться с открывающей фигурной скобки «{» и заканчиваться закрывающей фигурной скобкой « }».
Эти комментарии нужны для того чтобы давать пояснения к вашему коду. Конечно, не нужно добавлять комментарии к каждой строке. Добавлять комментарии нужно в ключевых местах. В добавлении комментариев нет никаких четких правил. На мой взгляд, все, что помогает сделать код легче, для чтения и понимания полезно применять. Но оставьте писать романы для писателей, и не позволяйте комментариям чрезмерно разрастаться.
Иногда кусок кода понятен без дополнительных комментариев. В других случаях вам потребуется несколько строк, чтобы объяснить что-то. Не бойтесь писать слишком много комментариев, ведь хуже не использовать комментарии вовсе.
Понимание кода, без комментариев, без понятных имен переменных может занять очень много времени. Вместо этого я бы предпочел читать код, в котором слишком много комментариев.
Почему я должен использовать комментарии, значимые имена и пробелы, если я единственный, кто работает с кодом?
Вот и все для этого урока. Я надеюсь, что урок получился не слишком сухим, и я надеюсь, что он послужил хорошей отправной точкой. В следующем уроке будет больше практики.
В этом уроке вы познакомились с редактором PowerLanguage, и узнали, как подготовить study. Так же вы узнали, как объявить и инициализировать вводные и переменные трех типов. Затем во второй части вы узнали, как хорошие привычки кодирования улучшают читаемость кода. Использование пробелов, осмысленных имен и комментариев сделает вашу жизнь проще, так как это помогает сэкономить много времени в долгосрочной перспективе.