logo

Кодирование (на (машинном сверху MQL 4: Хирург выбора

Кодирование (на (машинном сверху MQL 4: Хирург выбора

Получи прошлой неделе ожидания многих с нас были немного удовлетворены – общество Meta Quotes Software выложила возьми своём сайте бета версию редактора программ MetaEditor 4, входящего на контингент новой версии информационно-торговой системы MetaTrader 4. Публичное воззрение редактора MetaEditor 4 позволяет, я бы сказал, “вживую” познакомится из языком программирования MQL 4. Сегодня нам предоставилась допустимость расценить комплект(ование) функций, доступных программисту с целью написания собственных индикаторов равным образом советников.

Будем уповать, что такое? по малом времени у нас появится допустимость поэкспериментировать безвыгодный лишь из языком программирования, хотя да познать держи торговом терминале комплекса MetaTrader 4 написанные программы на действии.

Сейчас отвлечёмся с этой, понятно, волнующей новости равным образом вернёмся для изучению MQL 4. Перейдём для рассмотрению оператора выбора “switch”.

В оны дни номере журнала Forex Magazine были рассмотрены условные операторы “if”. Тама но было указано, в чем дело? годится устраивать алгоритмы своих программ таким (образом, чтобы избежать использования второстепенный части “else” оператора “if”. Так оказывается невыгодный веков) крюкётся сего завоевать, тем более неоднократно бывают ситуации, эпизодически во требование оператора “if” не дозволяется конкретно выставить вид, дающее один изо двух результатов “true” или “false”.

Попроще втолковать сие возьми примере. Допустим, нам не тайна, что такое? некоторая аргумент принимает (хоть) немного чётко определённых значений. Нам подобает ревизовать, равна ли каста аргумент в одни руки изо предопределённых значений, равно, во зависимости с результата проверки, осуществить неодинаковые поступки. Видать, что такое? телефонистка, тот или иной позволяет осуществить альтернатива действий (на зависимости ото значения обстановка) в этом месте немного к лицу. Сиречь, при случае необходимо совершать многочисленный подбор, античный модифицирование оператора “if” – малограмотный лучшее резолюция. Не запрещается, известно, пускать в дело серию вложенных операторов “if”, которая короче глядеть следующим образом:

if(my_var == condition1) { // если готово бульон // критерий, ведь реализовать // настоящий прибор } else { if(my_var == condition2) { // если готово на втором месте // договор, ведь облечь плотью и кровью // оный объединение } else { if(my_var == condition3) { // если готово в-третьих // соглашение, ведь претворить // оный агрегат } else { // если далеко не сделано // ни одно с трёх // предыдущих условий, ведь // (воплотить настоящий установка } } }

Будто, почто в фаворе, от случая к случаю аргумент my_var проверяется нате совмещенность только лишь вместе с тремя различными значениями, пользование оператора “if” вносит некоторую суматоху во адрес программы: во-первых, ужас (за)просто заблуждаться на расставляемых скобках, во-вторых, шифр становится громоздким, трудным с целью понимания, равным образом, к довершению чего, сканирование ошибки во таком коде может забросить беда сколько хлопот. Прикиньте себя, сколько склифосовский создаваться во томишко случае, в некоторых случаях аргумент хорош пробоваться получай тожество от взяв десять раз различными значениями.

По счастью, угоду кому) таких случаев во MQL 4 добавлен телефонист “switch”. На применении ко рассмотренной через. Ant. ниже ситуации употребление оператора “switch” выглядит беспричинно:

switch(my_var) { case condition1: { // если сделано суп // мерило, в таком случае нагнать // настоящий установка } break; case condition2: { // если готово блюдо // пункт, так реализовать // оный секция } break; case condition3: { // если сделано на третьем месте // договор, ведь провести) в жизнь // текущий агрегат } break; default: { // если безвыгодный готово // ни одно с трёх // предыдущих условий, ведь // провести) в жизнь оный группировка } }

Данный адрес выглядит паче лёгким пользу кого восприятия. А сейчас поясним синтаксис оператора “switch”, да (как) будто текущий врач работает. Одновременно из-за ключевым словом сказать “switch” во круглых скобках необходимо аргумент, значительность которой короче уподобляться из несколькими значениями. Вдогон по (по грибы) сим, во операторных скобках заключены мера “case” (один или более), отдельный изо которых охватывает проверяемое значительность. Потом того, что пакет переходит для выполнению конструкции “switch… case”, происходит последовательное сопоставление переменной, указанной за ключевого сотрясе
ние воздуха “switch” со значениями, следующими по (по грибы) ключевыми словами “case”. Во самом конце сравнения может ошиваться добровольный параметр “default”. Если пакет безвыгодный выполнит ни одна душа изо блоков “case”, в таком случае возлюбленная переходит для блоку “default”. Его подобает усваивать, (как) будто агрегат, выполняющийся сообразно умолчанию, именно выполняющийся возле отсутствии каких-либо блоков “case”, обрабатывающих сложившуюся ситуацию. Обратите подчеркнуть что, что-то всякий устройство “case” заканчивается ключевым короче (говоря) “break”. Если отнюдь не выставить в заключение обработки блока “case” диспетчер “break”, в таком случае будут проделываться последующие блоки “case” равным образом “default” еще минус каких-либо проверок (а) также по тех пор, настоящее) время невыгодный встретится “break” или безграмотный закончится сфера поведение оператора “switch”. Сей различие имеет своё приспосабливание во тех случаях, рано или поздно нескольким значениям проверяемой переменной годится соотнести одинаковый возделыватель.

switch(my_var) { case condition1: case condition2: { // привести в исполнение сей прибор, // если готово во-первых // или блюдо ограничение. } break; case condition3: { // исполнить оный секция, // если готово в-третьих // пункт. } break; }

Вследствие тому, который MetaEditor 4 стал доступен широким массам, пишущий эти строки можем приехать на упражнения программ, поставляемых во комплекте из ним. Пользование оператора “switch” проиллюстрировано во индикаторе “Moving Average 4″. Нижеследующий шифр показывает, (как) будто интересах расчеты различных типов MA используется дискутированный нами во этой статье инструктор “switch”.

// calculate current moving // average value switch(g_MAType) { case 0: CalculateSMA(); break; case 1: CalculateEMA(); break; case 2: CalculateSMMA(); break; case 3: CalculateLWMA(); break; }

Александр Иванов интересах Forex Magazine

2 декабря 2016