УРОК 2Переменные в MQL4Если вы читали и делали все, что написано в постах выше, вы должны уже уметь
1) открывать редактор
2) компилировать код
3) запускать скрипт на графике.
Теперь начнем изучать непосредственно сам код.
Весь код вашей программы может состоять только из тех символов, с которыми редактор знаком, если редактор не знаком с каким-нибудь словом, буквой и т.д. - мы должны его познакомить с этим элементом (переменные).
Все знакомые редактору слова обычно выделены определенным цветом, а если вы начнете писать это слово - редактор вам поможет посредством вывода на экран окна с возможными вариантами слова, которое вы, возможно, пытаетесь ввести. Например в случае с функцией
Messagebox вы могли просто ввести Mes .. и затем нажать Enter.
Давайте подробнее остановимся на таких элементах кода как
переменные. Пусть вас не пугает это трудное слово, оно означает лишь некий элемент, который редактор изначально не знает, но можно познакомить редактор с этой переменной, и он будет ее легко узнавать и производить с ней различные действия. Обычно переменные используют, чтобы присваивать им какие-либо значения и изменять эти значения для определенных целей.
Например, как нам заставить редактор посчитать количество бычьих свечей на графике из 20 свечей? Давайте пока без кода скрипта, напишем его чуть позже. Итак, мы должны сказать скрипту, чтобы он сравнил
Open (цена открытия) и
Close (цена закрытия) свечи, если цена открытия выше, чем цена закрытия, то у нас медвежья свеча, если наоборот - то бычья. Чтобы редактор не путался,
предусмотрена система нумерации по порядковым номерам, самый новый элемент (свеча, значение индикатора и т.д.) имеет всегда значение 0, запомните это. И далее идет порядковая нумерация, то есть предыдущая свеча будет иметь номер 1, третья по счету от конца будет иметь значение 2 и т.д. То есть Начинается нумерация с самого нового элемента и проходит справа налева, от более нового к более раннему, самый правый элемент получает номер 0, второй с конца - 1 , третий 2, благодаря чему последний элемент в последовательности из 20 свечей будет 19-тый по номеру. Надеюсь понятно. Но с этим чуть позже разберемся.
Вернемся к подсчету бычьих свечей. Ведь если вы попробуете посчитать их, вы тоже будете действовать по определенному алгоритму. Сначала вы анализируете самую новую свечу. Сравниваете Open и Close, если свеча медвежья - вы пропускаете ее и переходите на следующую. Снова анализируете. Если на этот раз свеча бычья, вы пишите на листочке плюс. после того, как вы прошли все свечи, у вас определенное количество "плюсов", подсчитав их, вы будете знать, сколько бычьих свечей в последовательности.
Теперь к чему я это. Редактор знает все слова, которые вы будете использовать для теста свечей, он знает слова
Close,
Open, знаки <, >, = и другие, но он не сможет вести подсчет этих свечей, так как ему негде записывать бычьи свечи, если он их найдет. То есть нет "листка" для записи. В качестве такого листка вы можете использовать переменную, скажем b, и присвоить ей значение 0. То есть нужно познакомить редактор с b и сказать ему, что b=0. Зачем? Все просто - при каждом нахождении программой бычьей свечи мы должны сказать скрипту, чтобы он прибавлял к b единицу. Таким образом, после того, как скрипт просмотрит все свечи - переменная b уже изменит значение (на то она и переменная) и ее значение будет равно количеству найденных свечей.
Затем мы используем уже знакомую функцию
MessageBox и выведем эту переменную в конце подсчета на экран. Окно покажет нам значение переменной и мы будем знать сколько бычьих свечей было из 20 протестированных.
Таким образом в переменных можно хранить различные данные, изменять их и использовать для вычислений и других действий. Кстати, для того, чтобы написать этот скрипт, мы должны ввести аж две переменные. Первая для подсчета бычьих свечей, а вторая для подсчета количества свечей, которые скрипт анализирует, ведь откуда он узнает, что надо протестировать именно 20 свечей?
Представьте, что скрипт умеет производить одно и то же действие множество раз. Как нам заставить скрипт анализировать свечи поочередно? Нужно опять же ввести переменную, равную нулю (допустим переменную а, которая равна 0), и сказать скрипту - проанализируй свечу а (скрипт поймет это как "проанализируй элемент 0", ведь а=0), затем мы скажем скрипту : как проанализируешь свечу а, прибавь к а единицу и снова проанализируй свечу а, на этот раз скрипт будет смотреть на другую свечу, так как он изменит а с 0 на 1. Думаю это ясно. И теперь осталось сказать ему: "когда а будет = 19 остановись". Так как нумерация элементов идет с 0, то когда а будет равна 19, скрипт закончит анализировать двадцатую свечу.
Этот скрипт мы напишем в следующий раз, когда изучим типы данных в языке MQL4, пока поймите, что такое переменная. Это очень важно.
----------------
Если кому-то есть что написать для новичков в этой теме - все будут рады, только постепенно с пошаговостью и размерностью, и без перегрузки информацией - этого полно в учебниках. Спасибо
[b]УРОК 2[/b]
[b]Переменные в MQL4[/b]
Если вы читали и делали все, что написано в постах выше, вы должны уже уметь
1) открывать редактор
2) компилировать код
3) запускать скрипт на графике.
Теперь начнем изучать непосредственно сам код. [i]Весь код вашей программы может состоять только из тех символов, с которыми редактор знаком[/i], если редактор не знаком с каким-нибудь словом, буквой и т.д. - мы должны его познакомить с этим элементом (переменные).
Все знакомые редактору слова обычно выделены определенным цветом, а если вы начнете писать это слово - редактор вам поможет посредством вывода на экран окна с возможными вариантами слова, которое вы, возможно, пытаетесь ввести. Например в случае с функцией [i][color=#0040FF]Messagebox [/color][/i]вы могли просто ввести Mes .. и затем нажать Enter.
Давайте подробнее остановимся на таких элементах кода как [i]переменные[/i]. Пусть вас не пугает это трудное слово, оно означает лишь некий элемент, который редактор изначально не знает, но можно познакомить редактор с этой переменной, и он будет ее легко узнавать и производить с ней различные действия. Обычно переменные используют, чтобы присваивать им какие-либо значения и изменять эти значения для определенных целей.
Например, как нам заставить редактор посчитать количество бычьих свечей на графике из 20 свечей? Давайте пока без кода скрипта, напишем его чуть позже. Итак, мы должны сказать скрипту, чтобы он сравнил [color=#FF4040]Open [/color](цена открытия) и [color=#FF4000]Close [/color](цена закрытия) свечи, если цена открытия выше, чем цена закрытия, то у нас медвежья свеча, если наоборот - то бычья. Чтобы редактор не путался, [b]предусмотрена система нумерации по порядковым номерам, самый новый элемент (свеча, значение индикатора и т.д.) имеет всегда значение 0[/b], запомните это. И далее идет порядковая нумерация, то есть предыдущая свеча будет иметь номер 1, третья по счету от конца будет иметь значение 2 и т.д. То есть Начинается нумерация с самого нового элемента и проходит справа налева, от более нового к более раннему, самый правый элемент получает номер 0, второй с конца - 1 , третий 2, благодаря чему последний элемент в последовательности из 20 свечей будет 19-тый по номеру. Надеюсь понятно. Но с этим чуть позже разберемся.
Вернемся к подсчету бычьих свечей. Ведь если вы попробуете посчитать их, вы тоже будете действовать по определенному алгоритму. Сначала вы анализируете самую новую свечу. Сравниваете Open и Close, если свеча медвежья - вы пропускаете ее и переходите на следующую. Снова анализируете. Если на этот раз свеча бычья, вы пишите на листочке плюс. после того, как вы прошли все свечи, у вас определенное количество "плюсов", подсчитав их, вы будете знать, сколько бычьих свечей в последовательности.
Теперь к чему я это. Редактор знает все слова, которые вы будете использовать для теста свечей, он знает слова [color=#FF4000]Close[/color], [color=#FF4000]Open[/color], знаки <, >, = и другие, но он не сможет вести подсчет этих свечей, так как ему негде записывать бычьи свечи, если он их найдет. То есть нет "листка" для записи. В качестве такого листка вы можете использовать переменную, скажем b, и присвоить ей значение 0. То есть нужно познакомить редактор с b и сказать ему, что b=0. Зачем? Все просто - при каждом нахождении программой бычьей свечи мы должны сказать скрипту, чтобы он прибавлял к b единицу. Таким образом, после того, как скрипт просмотрит все свечи - переменная b уже изменит значение (на то она и переменная) и ее значение будет равно количеству найденных свечей.
Затем мы используем уже знакомую функцию [color=#0040FF]MessageBox [/color]и выведем эту переменную в конце подсчета на экран. Окно покажет нам значение переменной и мы будем знать сколько бычьих свечей было из 20 протестированных.
[b]Таким образом в переменных можно хранить различные данные, изменять их и использовать для вычислений и других действий. [/b]
Кстати, для того, чтобы написать этот скрипт, мы должны ввести аж две переменные. Первая для подсчета бычьих свечей, а вторая для подсчета количества свечей, которые скрипт анализирует, ведь откуда он узнает, что надо протестировать именно 20 свечей?
Представьте, что скрипт умеет производить одно и то же действие множество раз. Как нам заставить скрипт анализировать свечи поочередно? Нужно опять же ввести переменную, равную нулю (допустим переменную а, которая равна 0), и сказать скрипту - проанализируй свечу а (скрипт поймет это как "проанализируй элемент 0", ведь а=0), затем мы скажем скрипту : как проанализируешь свечу а, прибавь к а единицу и снова проанализируй свечу а, на этот раз скрипт будет смотреть на другую свечу, так как он изменит а с 0 на 1. Думаю это ясно. И теперь осталось сказать ему: "когда а будет = 19 остановись". Так как нумерация элементов идет с 0, то когда а будет равна 19, скрипт закончит анализировать двадцатую свечу.
Этот скрипт мы напишем в следующий раз, когда изучим типы данных в языке MQL4, пока поймите, что такое переменная. Это очень важно.
----------------
Если кому-то есть что написать для новичков в этой теме - все будут рады, только постепенно с пошаговостью и размерностью, и без перегрузки информацией - этого полно в учебниках. Спасибо