Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме
Страница 1 из 121
1 2 11 ... Последняя ◄╝

Показаны сообщения: с 1 по 20 из 2401

Тема: MQL4 для начинающих

 Перейти в классический вид темы
     
  1. ТОП сообщений
    2018-04-05   07:16
    Лучший ответ #1
    Накопленные выплаты 27419 RUB

    зря Вы так, я вчера, к примеру, взял о перегрузил операторы == и != чтобы было удобнее логику поиска паттернов видеть а на следующей неделе планирую сделать универсальный класс для Ренко - графиков, чтобы любой советник можно было на виртуальном Ренко-графике запустить

    2010-04-26   23:58
    Лучший ответ #2
    Накопленные выплаты 3750 RUB

    Вы должны понять важную вещь. То, что будет написано в MetaEditor'e, - это исходный код. То есть последовательность команд, которую будет выполнять терминал одну за другой сверху вниз. Но терминал не может выполнять исходные коды. Исходный код понятен вам, но не MetaTrader'у. Чтобы исходный код был понятен терминалу, его нужно "перевести" на соответствующий "язык". Чтобы это сделать, нужно нажать на клавишу F5 в MetaEditor'е. После этого будет выполнена компиляция исходного кода в исполняемый файл. Компиляция - это процесс "перевода" исходного кода, написанного вами и понятного вам, в специальный исполняемый файл, который понимает и способен выполнить MetaTrader. Проверьте это сами. Создайте новый скрипт под названием Test1 и сохраните, но не компилируйте. Запустите терминал и, используя Навигатор, зайдите в раздел "Скрипты". Как видно, скрипта с названием Test1 нет: После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:


    Теперь скомпилируйте скрипт (клавиша F5):

    Опять загляните в терминал. Скрипт Test1 появился:

    Двойной клик на названии скрипта в Навигаторе терминала - и он запускается. Но ничего не происходит, так как скрипт пуст. Вы уже должны представлять, на что похож процесс написания скрипта: вы пишете исходный код, компилируете, запускаете скрипт в терминале, смотрите на результат, изменяете исходный код, компилируете, смотрите ... и так - до тех пор, пока не получите нужный результат.

    2010-04-30   00:35
    Лучший ответ #3
    Накопленные выплаты 3750 RUB

    Итак, Вы узнали много нового. Однако, чтобы детально разобраться в программировании MQL 4 необходимо потратить больше времени, нежели Вы потратили на прочтение данного материла. Поэтому, перечитывайте текст, запоминайте, практикуйтесь и вникайте в суть и тогда Вы сможете на практике применять знания полученные в материалах, посвященных MQL 4. То, что описано в этой статье, - основа всего языка MQL4. Чем лучше Вы освоите этот материал, тем проще Вам будет учиться дальше. Учебник «Программирование на алгоритмическом языке MQL4» Скачать

    2010-04-27   23:45
    Лучший ответ #4
    Накопленные выплаты 3750 RUB

    Не пугайтесь. Это очень просто. Смотрите. Допустим, вы хотите запомнить пять цен. Как можно поступить? Ну, можно вот так: double price1 = 1.2341; double price2 = 1.2321; double price3 = 1.2361; double price4 = 1.2411; double price5 = 1.2301; У нас получается пять переменных, которые имеют один тип данных и описывают один и тот же параметр - цену. Но можно поступить иначе, используя массив. Массив - это всего лишь серия переменных, которые отличаются между собой индексами, но имеют одно общее название. Посмотрите, как нужно объявлять массив из пяти элементов: double price; Общая форма: (тип массива) (название массива) ; В нашем случае: тип массива - double, название - price, количество элементов - 5. Давайте посмотрим, как можно обратиться к элементам массива: double price; // объявляем массив из 5 элементов price = 1.2341; // обращаемся к первому элементу массива и // присваиваем ему цену. Обратите внимание // на то, что индекс первого элемента // начинается с 0. Это важная особенность, // к которой нужно привыкнуть. price = 1.2321; // обращаемся ко второму элементу price = 1.2361; // и так далее price = 1.2411; price = 1.2301; С элементами массива можно проделывать любые операции, как и с обычными переменными. Собственно, элементы массива - и есть обычные переменные: double price; price = 1.2234; price = 1.2421; MessageBox("Middle price is " + (price + price) / 2.0,"middle price"); При объявлении массива можно также присвоить всем элементам начальные значения: double price = {1.2234, 1.2421}; Мы просто перечисляем через запятую начальные значения элементов в фигурных скобках. В таком случае вы можете даже не указывать количество элементов, компилятор автоматически вставит нужное значение: double price[] = {1.2234, 1.2421}; Это всё, безусловно, очень хорошо, но... К сожалению, бесполезно. Нам нужно как-то добраться до реальных данных! Например, текущих цен, времени, количества свободных денег и так далее.

    2010-04-26   23:52
    Лучший ответ #5
    Накопленные выплаты 3750 RUB

    Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли - автотрейдинг. Теперь трейдер может реализовать свои идеи в виде прикладной программы - самостоятельно написать пользовательский индикатор, скрипт для выполнения разовых операций или создать советник - автоматическую торговую систему (торговый робот). Советник может работать круглосуточно без постороннего вмешательства - отслеживать все изменения цен финансовых инструментов, отправлять сообщения по электронной почте, SMS-сообщения на мобильный телефон, а также выполнять множество других полезных действий. Основным достоинством прикладных программ является возможность совершать торговые операции в соответствии с алгоритмом, заданным трейдером по своему усмотрению. Любые идеи, которые возможно изложить на языке алгоритмов (пересечение двух скользящих средних или цифровая обработка сигналов, три экрана Элдера или фрактальный анализ Петерса, нейронная сеть или геометрические построения), можно заложить в прикладную программу и затем использовать её в практической торговле. Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4, освоив который, можно самостоятельно создавать эксперты, скрипты и индикаторы, воплощая в них свои идеи - алгоритмы прибыльной торговли. Для начала давайте разберемся, что Вы можете делать с помощью этого языка: создать скрипты, пользовательские индикаторы, советники и библиотеки. Скрипты - это последовательности команд, программы, которые выполняются только один раз по вашему запросу. Они могут заменять действия, которые вы выполняете каждый день при торговле. Например, открывать ордера. Они также могут выполнять специфические действия - например, исследовать графики и выводить статистическую информацию. Пользовательские индикаторы - это технические индикаторы, написанные в дополнение к встроенным в терминал индикаторам. Они выводят графики или другую визуальную информацию. В отличие от скриптов, пользовательские индикаторы выполняются при каждом изменении цены, то есть на каждом тике. То, что будут выводить индикаторы, зависит только от вас. Это может быть бесполезный график синуса или что-то, что будет помогать вам ориентироваться в ситуации на рынке. Например, если вы точно знаете, при каких условиях на рынке тренд, а при каких флэт, то это наверняка можно написать в виде индикатора. Советники - это механические торговые системы, которые привязаны к любому финансовому инструменту. Подобно пользовательским индикаторам, советники выполняются при каждом новом тике, но в отличие от первых могут информировать вас о состоянии рынка (например, давать конкретные советы о покупке или продаже) или торговать самостоятельно без вашего участия. Терминал поддерживает тестирование стратегий, что позволяет быстро оценить прибыльность вашего советника. Вы описываете свою стратегию на языке MQL4, а терминал хладнокровно выполняет все ваши указания. Библиотеки - это наборы функций для выполнения специфических задач. Например, один из ваших советников может использовать специальные математические функции для принятия решения о том, когда выполнять покупку, а когда - продажу. Для того, чтобы написать обычные скрипты необходимо научиться использовать специальную программу - редактор MetaEditor 4, встроенную в терминал MetaTrader 4. Чтобы её запустить, нажмите на клавишу F4 при открытом клиентском терминале. Чтобы создать новый скрипт, нажмите в редакторе MetaEditor 4 на кнопки меню File->New или используйте сочетание клавиш Ctrl+N на клавиатуре:


    После этого появится окно, в котором вам следует указать, что вы собираетесь создать. Выбираем Script и жмём на кнопку Далее:

    В следующем окне следует ввести название скрипта в поле Name. Укажите свое имя в поле Author и e-mail или адрес вашего веб-узла в поле Link. Далее нажимаем на кнопку Готово:

    После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:

    Обратите внимание, что даже пустой, ничего не делающий скрипт включает в себя какой-то код. Теперь всё готово для начала программирования. Но, к сожалению, вы не имеете представления, как это делается. Давайте попробуем исправить ситуацию.

    2010-04-27   23:28
    Лучший ответ #6
    Накопленные выплаты 3750 RUB

    Что такое переменная? Попробуйте сами ответить на этот вопрос, а я вам помогу. Сколько вам лет? Сколько вам будет лет через пять лет? Теперь смотрите: возраст - это и есть переменная. Возраст изменяется с течением времени, как и любая другая переменная. То есть первая особенность переменной заключается в её изменении с течением времени. Другой пример: какой был ваш рост в пять лет? Очевидно, намного меньше, чем сейчас. Рост - ещё один пример переменной. Но есть важное отличие. Обратите внимание на то, что возраст мы измеряли, используя целые числа. Рост намного удобнее измерять, используя десятичные дроби ("числа с плавающей точкой"). Возраст: 20 лет, 30 лет. Рост: 1,8 метра, 1,95 метра. Это очень важная особенность: каждая переменная относится к определённому типу. Давайте посмотрим, какие еще бывают типы переменных. Вы можете описать числами многие параметры, но как представить текст? Для этого используются специальные типы - строковые. Эти типы переменных хранят только строки.Теперь давайте посмотрим, как можно создать и описать переменную на языке MQL4. int age = 25; Здесь мы объявили переменную целого типа (int - integer - целое число). int - это ключевое слово языка MQL4, которое указывает, что мы используем тип целых чисел. Дальше мы написали age (возраст) - это название переменной, то есть слово, по которому мы будем обращаться к значению, хранящемуся в этой переменной. Затем мы присвоили переменной значение 25, используя символ "=". После каждой инструкции ставится точка с запятой, что мы и сделали. Обратите внимание - объявление и инициализация любой переменной сводятся к такой форме: = ; Кстати, присваивать какое-то значение переменной (совершать инициализацию) необязательно, вы могли бы написать и так: int age; Еще один пример: double height = 1.95; Здесь мы объявляем переменную с названием height (рост), которая хранит значения типа double (число с плавающей запятой, десятичная дробь) и которой мы сразу присваиваем значение 1.95, используя оператор "=". Теперь рассмотрим строковую переменную: string name = "Janet"; string - тип переменной, name - название переменной, "Janet" - значение переменной. Обратите внимание, что значения для переменной типа string размещаются между двойными кавычками ("). Существует еще один очень полезный тип переменной - bool. Переменные этого типа могут принимать только два значения: либо true (правда), либо false (ложь). bool trend = false; Теперь вам нужно запомнить несколько важных вещей. Язык MQL4 - это регистрозависимый язык, то есть имеет большое значение, ПРОПИСНЫМИ буквами вы пишете код или строчными. Например, если вы объявите несколько переменных с одинаковыми названиями, но разным регистром, то это будут совершенно разные переменные: double HIGHTPRICE; double hightprice; double HightPrice; double hightPrice; Вышеприведённый код создаст четыре совершенно разных переменных. Также обратите внимание на то, что все ключевые слова языка MQL4 пишутся строчными буквами. Следующий пример: DOUBLE hightPrice1; Double hightPrice2; Вышеприведённый код работать не будет, потому что слово double не будет воспринято как ключевое слово языка MQL4. Ещё один важный момент заключается в том, что названия переменных не могут начинаться с цифр или специальных знаков (*,&, ,%,$). Например: double 1price; double %price; Ещё один элемент языка - комментарии. Если вы напишете "//" перед строкой, то она целиком закомментируется. Это значит, что при компиляции она будет игнорироваться. Например: // this is a comment // это комментарий Теперь вы должны заметить, что код пустого скрипта включает в себя много комментариев, которые несут информативный характер. Комментируйте свой код, иногда это может сэкономить вам много времени.

  2. Линк#1
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Торговый терминал MetaTrader 4 по достоинству оценили сотни тысяч трейдеров во всем мире. Использование встроенного языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли - автотрейдинг. Теперь трейдер может реализовать свои идеи в виде прикладной программы - самостоятельно написать пользовательский индикатор, скрипт для выполнения разовых операций или создать советник - автоматическую торговую систему (торговый робот). Советник может работать круглосуточно без постороннего вмешательства - отслеживать все изменения цен финансовых инструментов, отправлять сообщения по электронной почте, SMS-сообщения на мобильный телефон, а также выполнять множество других полезных действий.

    Основным достоинством прикладных программ является возможность совершать торговые операции в соответствии с алгоритмом, заданным трейдером по своему усмотрению. Любые идеи, которые возможно изложить на языке алгоритмов (пересечение двух скользящих средних или цифровая обработка сигналов, три экрана Элдера или фрактальный анализ Петерса, нейронная сеть или геометрические построения), можно заложить в прикладную программу и затем использовать её в практической торговле.

    Составление прикладных программ для торгового терминала MetaTrader 4 требует знания языка MQL4, освоив который, можно самостоятельно создавать эксперты, скрипты и индикаторы, воплощая в них свои идеи - алгоритмы прибыльной торговли.

    Для начала давайте разберемся, что Вы можете делать с помощью этого языка: создать скрипты, пользовательские индикаторы, советники и библиотеки.
    • Скрипты - это последовательности команд, программы, которые выполняются только один раз по вашему запросу. Они могут заменять действия, которые вы выполняете каждый день при торговле. Например, открывать ордера. Они также могут выполнять специфические действия - например, исследовать графики и выводить статистическую информацию.
    • Пользовательские индикаторы - это технические индикаторы, написанные в дополнение к встроенным в терминал индикаторам. Они выводят графики или другую визуальную информацию. В отличие от скриптов, пользовательские индикаторы выполняются при каждом изменении цены, то есть на каждом тике. То, что будут выводить индикаторы, зависит только от вас. Это может быть бесполезный график синуса или что-то, что будет помогать вам ориентироваться в ситуации на рынке. Например, если вы точно знаете, при каких условиях на рынке тренд, а при каких флэт, то это наверняка можно написать в виде индикатора.
    • Советники - это механические торговые системы, которые привязаны к любому финансовому инструменту. Подобно пользовательским индикаторам, советники выполняются при каждом новом тике, но в отличие от первых могут информировать вас о состоянии рынка (например, давать конкретные советы о покупке или продаже) или торговать самостоятельно без вашего участия. Терминал поддерживает тестирование стратегий, что позволяет быстро оценить прибыльность вашего советника. Вы описываете свою стратегию на языке MQL4, а терминал хладнокровно выполняет все ваши указания.
    • Библиотеки - это наборы функций для выполнения специфических задач. Например, один из ваших советников может использовать специальные математические функции для принятия решения о том, когда выполнять покупку, а когда - продажу.

    Для того, чтобы написать обычные скрипты необходимо научиться использовать специальную программу - редактор MetaEditor 4, встроенную в терминал MetaTrader 4. Чтобы её запустить, нажмите на клавишу F4 при открытом клиентском терминале. Чтобы создать новый скрипт, нажмите в редакторе MetaEditor 4 на кнопки меню File->New или используйте сочетание клавиш Ctrl+N на клавиатуре:






    После этого появится окно, в котором вам следует указать, что вы собираетесь создать. Выбираем Script и жмём на кнопку Далее:






    В следующем окне следует ввести название скрипта в поле Name. Укажите свое имя в поле Author и e-mail или адрес вашего веб-узла в поле Link. Далее нажимаем на кнопку Готово:






    После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:






    Обратите внимание, что даже пустой, ничего не делающий скрипт включает в себя какой-то код. Теперь всё готово для начала программирования. Но, к сожалению, вы не имеете представления, как это делается. Давайте попробуем исправить ситуацию.


  3. post_thanks Получено лайков: 11

    big-fan (27.03.2018), Djvanmukta (05.01.2016), Epiharia (03.10.2013), Forewoman (24.01.2011), ipb (06.12.2010), ogarew2009 (08.04.2012), polkiloqq (23.02.2012), Smont (09.05.2013), Trendsistem (09.06.2012), voinG (13.01.2020), ораз (31.05.2012)

    Crypto
  4. Линк#2
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Использование языка программирования MQL4 выводит трейдеров на качественно новый уровень торговли - автотрейдинг. Теперь трейдер может реализовать свои идеи в виде прикладной программы - самостоятельно написать пользовательский индикатор, скрипт для выполнения разовых операций или создать советник - автоматическую торговую систему (торговый робот). Советник может работать круглосуточно без постороннего вмешательства - отслеживать все изменения цен финансовых инструментов, отправлять сообщения по электронной почте, SMS-сообщения на мобильный телефон, а также выполнять множество других полезных действий.

    Данный инструмент безусловно привлекает опытных трейдеров и стимулирует их достижения на рынке ФОРЕКС. Для новичков же язык MQL станет целью и проводником в мир ФОРЕКС, где становится возможным управлять отдельными течениями.


    Последний раз редактировалось ppvic; 13.10.2011 в 18:31.

  5. post_thanks Получено лайков: 5

    DIIIVERGENT (17.02.2015), endru (26.11.2012), Epiharia (03.10.2013), exoxol (13.04.2012), polkiloqq (23.02.2012)

  6. Линк#3
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Вы уже заметили, что пустой скрипт содержит в себе определённый код. Но в каком месте вам следует вписывать исходный код, чтобы он работал? Его нужно вписывать между строками int start(){ и return(0);}, как показано на рисунке:






    Всё, что я дальше буду вам предлагать писать, размещайте в этом месте - и всё будет работать. Позже мы рассмотрим более детально, что означают все эти строки.


  7. post_thanks Получено лайков: 5

    77павел (20.04.2013), Epiharia (06.10.2013), exoxol (13.04.2012), ogarew2009 (08.04.2012), polkiloqq (23.02.2012)

  8. Линк#4
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Вы должны понять важную вещь. То, что будет написано в MetaEditor'e, - это исходный код. То есть последовательность команд, которую будет выполнять терминал одну за другой сверху вниз. Но терминал не может выполнять исходные коды. Исходный код понятен вам, но не MetaTrader'у. Чтобы исходный код был понятен терминалу, его нужно "перевести" на соответствующий "язык". Чтобы это сделать, нужно нажать на клавишу F5 в MetaEditor'е. После этого будет выполнена компиляция исходного кода в исполняемый файл. Компиляция - это процесс "перевода" исходного кода, написанного вами и понятного вам, в специальный исполняемый файл, который понимает и способен выполнить MetaTrader. Проверьте это сами. Создайте новый скрипт под названием Test1 и сохраните, но не компилируйте. Запустите терминал и, используя Навигатор, зайдите в раздел "Скрипты". Как видно, скрипта с названием Test1 нет:

    После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:






    Теперь скомпилируйте скрипт (клавиша F5):






    Опять загляните в терминал. Скрипт Test1 появился:






    Двойной клик на названии скрипта в Навигаторе терминала - и он запускается. Но ничего не происходит, так как скрипт пуст.

    Вы уже должны представлять, на что похож процесс написания скрипта: вы пишете исходный код, компилируете, запускаете скрипт в терминале, смотрите на результат, изменяете исходный код, компилируете, смотрите ... и так - до тех пор, пока не получите нужный результат.

    Последний раз редактировалось ppvic; 13.10.2011 в 18:27.

  9. post_thanks Получено лайков: 15

    77павел (20.04.2013), al22bag (20.08.2011), Alexaya (07.10.2010), Epiharia (06.10.2013), exoxol (13.04.2012), FX-trader93 (11.06.2012), gastyc (09.12.2016), Hamedoreja (22.10.2010), MaximUA (07.07.2010), Oper (26.10.2010), polkiloqq (23.02.2012), S312 (24.04.2011), Trendsistem (09.06.2012), ZULULANDER (19.08.2011), Вirballa (12.11.2015)

  10. Линк#5
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Что такое переменная? Попробуйте сами ответить на этот вопрос, а я вам помогу. Сколько вам лет? Сколько вам будет лет через пять лет? Теперь смотрите: возраст - это и есть переменная. Возраст изменяется с течением времени, как и любая другая переменная. То есть первая особенность переменной заключается в её изменении с течением времени. Другой пример: какой был ваш рост в пять лет? Очевидно, намного меньше, чем сейчас. Рост - ещё один пример переменной. Но есть важное отличие. Обратите внимание на то, что возраст мы измеряли, используя целые числа. Рост намного удобнее измерять, используя десятичные дроби ("числа с плавающей точкой"). Возраст: 20 лет, 30 лет. Рост: 1,8 метра, 1,95 метра. Это очень важная особенность: каждая переменная относится к определённому типу. Давайте посмотрим, какие еще бывают типы переменных. Вы можете описать числами многие параметры, но как представить текст? Для этого используются специальные типы - строковые. Эти типы переменных хранят только строки.Теперь давайте посмотрим, как можно создать и описать переменную на языке MQL4.

    Код:
    int age = 25;
    Здесь мы объявили переменную целого типа (int - integer - целое число). int - это ключевое слово языка MQL4, которое указывает, что мы используем тип целых чисел. Дальше мы написали age (возраст) - это название переменной, то есть слово, по которому мы будем обращаться к значению, хранящемуся в этой переменной. Затем мы присвоили переменной значение 25, используя символ "=". После каждой инструкции ставится точка с запятой, что мы и сделали. Обратите внимание - объявление и инициализация любой переменной сводятся к такой форме:

    Код:
    [тип переменной] [название переменной] = [значение переменной];
    Кстати, присваивать какое-то значение переменной (совершать инициализацию) необязательно, вы могли бы написать и так:

    Код:
    int age;
    Еще один пример:

    Код:
    double height = 1.95;
    Здесь мы объявляем переменную с названием height (рост), которая хранит значения типа double (число с плавающей запятой, десятичная дробь) и которой мы сразу присваиваем значение 1.95, используя оператор "=".
    Теперь рассмотрим строковую переменную:

    Код:
    string name = "Janet";
    string - тип переменной, name - название переменной, "Janet" - значение переменной. Обратите внимание, что значения для переменной типа string размещаются между двойными кавычками ("). Существует еще один очень полезный тип переменной - bool. Переменные этого типа могут принимать только два значения: либо true (правда), либо false (ложь).


    Код:
    bool trend = false;
    Теперь вам нужно запомнить несколько важных вещей. Язык MQL4 - это регистрозависимый язык, то есть имеет большое значение, ПРОПИСНЫМИ буквами вы пишете код или строчными. Например, если вы объявите несколько переменных с одинаковыми названиями, но разным регистром, то это будут совершенно разные переменные:

    Код:
    double HIGHTPRICE;
    double hightprice;
    double HightPrice;
    double hightPrice;
    Вышеприведённый код создаст четыре совершенно разных переменных. Также обратите внимание на то, что все ключевые слова языка MQL4 пишутся строчными буквами.
    Следующий пример:

    Код:
    DOUBLE hightPrice1; 
    Double hightPrice2;
    Вышеприведённый код работать не будет, потому что слово double не будет воспринято как ключевое слово языка MQL4. Ещё один важный момент заключается в том, что названия переменных не могут начинаться с цифр или специальных знаков (*,&, ,%,$). Например:

    Код:
    double 1price;
    double %price;
    Ещё один элемент языка - комментарии. Если вы напишете "//" перед строкой, то она целиком закомментируется. Это значит, что при компиляции она будет игнорироваться. Например:

    Код:
    // this is a comment
    // это комментарий
    Теперь вы должны заметить, что код пустого скрипта включает в себя много комментариев, которые несут информативный характер. Комментируйте свой код, иногда это может сэкономить вам много времени.


  11. post_thanks Получено лайков: 7

    Epiharia (12.10.2013), exoxol (13.04.2012), Fuji snail (23.10.2016), kalabster (10.06.2012), polkiloqq (23.02.2012), Zarj (25.04.2015), Вirballa (12.11.2015)

  12. Линк#6
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Теперь давайте разберёмся, что можно делать с переменными после того, как мы их объявили. Рассмотрим простой пример:

    Код:
    double a = 50.0;// объявляем переменную с плавающей запятой и
                    // присваиваем ей значение 50
    double b = 2.0;
    double c;
    
    c = a + b;		// присваиваем переменной c сумму переменных
                    // a и b. Теперь значение с равно 52. Как и
                    // после любой другой инструкции, ставим точку
                    // с запятой (";")
    
    c = a - b;      // вычитание, с = 48
    c = a*b;        // умножение, с = 100
    c = a / b;      // деление, c = 25
    c = (a + b)*a;  // в скобках нужно размещать операции, которые
                    // должны выполняться в первую очередь. Так, в
                    // нашем случае сначала будет найдена сумма a и
    				// b, а потом эта сумма умножена на а и присвоена с
    
    // если есть несколько операций в кавычках, то они
    c = (a + b) / (a - b);
                           // будут выполняться слева направо
    
    // в соответствиями с правилами математики, сначала будет
    // найдено
    c = a + b*3.0;
                           // произведение b и 3, а уже потом сумма
    Если нужно выполнить какую-то операцию с переменной и присвоить ей же результат, например, увеличить на 5, то поступают одним из следующих способов:

    Код:
    int a = 5;
    a = a + 5;  // увеличиваем a на 5
    a += 5;     // аналогично 
    a = a*5;
    a *= 5;     // умножаем а на 5 и присваиваем ей же
    a /= 5;     // делим и присваиваем
    Если хотите увеличить или уменьшить переменную на 1, используйте такой метод:

    Код:
    int a = 5;
    a++;  // увеличиваем а на 1, это называется инкремент
    а--;  // уменьшаем а на 1, это декремент
    Это всё очень хорошо, но вы при выполнении подобных скриптов можете только догадываться, правильно всё работает или нет, так как на экране ничего не происходит. Поэтому удобно выводить результаты. Для этого существует встроенная функция MessageBox().


  13. post_thanks Получено лайков: 6

    Epiharia (17.10.2013), exoxol (13.04.2012), FX-trader93 (11.06.2012), kalabster (10.06.2012), polkiloqq (23.02.2012), Вirballa (12.11.2015)

  14. Линк#7
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Функция - это какой-то набор инструкций, который принимает параметры и в зависимости от них выводит результат. В нашем случае функция MessageBox() принимает два параметра: первый - текст сообщения, второй - текст заголовка. Вот пример использования функции:


    Код:
    MessageBox("Hello, World! There is some text.","caption")

    Чтобы вызвать функцию, сначала пишут её название. Не забывайте про регистр! Потом открываются скобки, и в них через запятую пишутся параметры. В нашем случае параметры имеют строковый тип. Как мы помним, все строки пишутся между двойными кавычками ("). Как в любой инструкции, в конце ставим точку с запятой. Чтобы окончательно разобраться, посмотрите на рисунок. Он показывает, как связаны код и результат:




    Да, это всё, конечно, хорошо. Но как можно вывести переменные других типов? Очень просто - мотайте на ус:

    Код:
    int a = 50;
    int b = 100;
    MessageBox("It is very simple. a+b=" + (a + b), "a+b=?");

    В результате получим:


    Как вы уже догадались, MQL4 устроен таким образом, что когда мы пытаемся добавить к строке какой-то другой числовой тип, то он автоматически переводит числа в строки и объединяет их. Это действительно замечательное свойство! Подобные операции вы можете делать и с переменными-строками:


    Код:
    int a = 50;
    int b = 100; 
    string str1 = "a + b ="; 
    str1 += a + b; // теперь str1 = "a + b = 150"
    // теперь используем переменную str1 в качестве 
    // первого параметра
    MessageBox(str1, "a + b = ?");

    Теперь вы знаете, как можно выводить различные данные с помощью функции MessageBox(). Но какой интерес выводить результаты элементарных математических операций? Нам ведь MQL4 нужен не для того, чтобы находить суммы и произведения, не так ли?


  15. post_thanks Получено лайков: 3

    exoxol (13.04.2012), polkiloqq (23.02.2012), Вirballa (12.11.2015)

  16. Линк#8
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Не пугайтесь. Это очень просто. Смотрите. Допустим, вы хотите запомнить пять цен. Как можно поступить? Ну, можно вот так:


    Код:
    double price1 = 1.2341;
    double price2 = 1.2321; 
    double price3 = 1.2361; 
    double price4 = 1.2411; 
    double price5 = 1.2301;

    У нас получается пять переменных, которые имеют один тип данных и описывают один и тот же параметр - цену. Но можно поступить иначе, используя массив. Массив - это всего лишь серия переменных, которые отличаются между собой индексами, но имеют одно общее название. Посмотрите, как нужно объявлять массив из пяти элементов:


    Код:
    double price[5];

    Общая форма:


    Код:
    (тип массива) (название массива) [количество элементов];

    В нашем случае: тип массива - double, название - price, количество элементов - 5. Давайте посмотрим, как можно обратиться к элементам массива:


    Код:
    double price[5];   // объявляем массив из 5 элементов
                      
    price[0] = 1.2341; // обращаемся к первому элементу массива и 
                       // присваиваем ему цену. Обратите внимание 
                       // на то, что индекс первого элемента 
                       // начинается с 0. Это важная особенность, 
                       // к которой нужно привыкнуть. 
    
    price[1] = 1.2321;  // обращаемся ко второму элементу 
    price[2] = 1.2361;  // и так далее 
    price[3] = 1.2411; 
    price[4] = 1.2301;

    С элементами массива можно проделывать любые операции, как и с обычными переменными. Собственно, элементы массива - и есть обычные переменные:


    Код:
    double price[2];   
    price[0] = 1.2234; 
    price[1] = 1.2421; 
    MessageBox("Middle price is " + (price[0] +
                price[1]) / 2.0,"middle price");


    При объявлении массива можно также присвоить всем элементам начальные значения:


    Код:
    double price[2] = {1.2234, 1.2421};

    Мы просто перечисляем через запятую начальные значения элементов в фигурных скобках. В таком случае вы можете даже не указывать количество элементов, компилятор автоматически вставит нужное значение:


    Код:
    double price[] = {1.2234, 1.2421};

    Это всё, безусловно, очень хорошо, но... К сожалению, бесполезно. Нам нужно как-то добраться до реальных данных! Например, текущих цен, времени, количества свободных денег и так далее.


  17. post_thanks Получено лайков: 12

    Alexander 45 (08.11.2016), exoxol (13.04.2012), Fuji snail (23.10.2016), FX-trader93 (11.06.2012), Grifelek (16.07.2018), kalabster (10.06.2012), ogarew2009 (08.04.2012), polkiloqq (23.02.2012), rvv (07.04.2018), Vol (30.12.2010), Вirballa (12.11.2015), Незарегистрированный (1 пользователь)

  18. Линк#9
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Конечно же, без реальных данных не обойтись. Чтобы получить к ним доступ, достаточно обратиться к соответствующему предопределённому массиву. Таких имеется несколько, например:

    Код:
    High[0];   // обращаемся к последней максимальной цене, 
               // которой достиг бар на текущем таймфрейме  
               // и текущей валютной паре. Валютная пара и  
               // таймфрейм зависят от графика, на котором  
               // вы запустили скрипт. Это очень важно 
               // запомнить! 
    Low[0];    // минимальная цена последнего бара на 
               // текущем графике.  
    Volume[0]; // объём последнего бара на текущем графике.
    Чтобы окончательно разобраться в предопределённых массивах и индексах, посмотрите на это:
    Как видите, индекс (номер) последнего бара - 0, предпоследнего - 1 и так далее. Также существуют предопределённые обычные переменные. Например, Bars показывает, сколько баров загружено на текущем графике. То есть это самая обычная переменная, но её объявили до вас и вне вашего скрипта. Эта переменная существует всегда, как и любые другие предопределённые массивы и переменные.


  19. post_thanks Получено лайков: 6

    exoxol (13.04.2012), Grifelek (16.07.2018), MurZicK (25.01.2013), polkiloqq (23.02.2012), Zarj (27.04.2015), Вirballa (12.11.2015)

  20. Линк#10
    Свой человек
    vasili приемлемый уровень репутации Аватар для vasili
    Регистрация:
    16.03.2010
    Пол:
    Мужчина
    Сообщений:
    698
    Деньги за посты (Подробнее):
    7978 RUB
    Поставил лайков:
    28
    Получено лайков:  189
    в 161 сообщениях
    27%
    Что качает массивов я думаю будет интересно знать следующее:
    уже готовые
    Low[] массив содержащий минимальные цены;
    Open[] массив содержащий цены открытия;
    Close[] массив содержащий цены закрытия;
    High[] массив содержащий максимальные цены ;
    Time[] массив содержащий время открытия каждого бара;
    Volume[] массив с объемами каждого бара.

    я думаю это поможет
    Нам нужно как-то добраться до реальных данных! Например, текущих цен, времени, количества свободных денег и так далее.
    извиняюсь не заметил пост:
    https://forexdengi.com/showthread.php?t=830
    там про этого уже касались...

    Последний раз редактировалось vasili; 28.04.2010 в 08:12.
    пишу советники (скрипты,индикаторы) за еду...тут

  21. post_thanks Получено лайков: 2

    exoxol (13.04.2012), polkiloqq (23.02.2012)

  22. Линк#11
    Свой человек
    vasili приемлемый уровень репутации Аватар для vasili
    Регистрация:
    16.03.2010
    Пол:
    Мужчина
    Сообщений:
    698
    Деньги за посты (Подробнее):
    7978 RUB
    Поставил лайков:
    28
    Получено лайков:  189
    в 161 сообщениях
    27%
    Если позволите небольшое дополнение.
    Также обратите внимание на то, что все ключевые слова языка MQL4 пишутся строчными буквами.
    Далеко не все(для некоторых нужна первая заглавная): к примеру print() не закомпилирует правильнее Print();
    Да и вообще при кодировании через MetaTraider при вводе первых символов предлогается на выбор ключевые слова(см.рис).
    Если вы напишете "//" перед строкой, то она целиком закомментируется. Это значит, что при компиляции она будет игнорироваться.
    Если необходиом закомментировать большую часть кода продуктивнее использовать /* <комментарий> */
    Спасибо.
    paperclip Миниатюры Нажмите на изображение для увеличения
Название: print.jpg
Просмотров: 194
Размер:	290.3 КБ
ID:	3674  


    пишу советники (скрипты,индикаторы) за еду...тут

  23. post_thanks Получено лайков: 3

    exoxol (13.04.2012), polkiloqq (23.02.2012), Вirballa (12.11.2015)

  24. Линк#12
    Свой человек
    vasili приемлемый уровень репутации Аватар для vasili
    Регистрация:
    16.03.2010
    Пол:
    Мужчина
    Сообщений:
    698
    Деньги за посты (Подробнее):
    7978 RUB
    Поставил лайков:
    28
    Получено лайков:  189
    в 161 сообщениях
    27%
    Господа помогите чего размер массива у меня пишет 4319???


    #property indicator_separate_window
    #property indicator_buffers 2
    #property indicator_color1 White
    double ExtMapBuffer1[];
    int init()
    {
    IndicatorShortName("eurchf_vasay");
    SetIndexStyle(0,DRAW_LINE);

    SetIndexBuffer(0,ExtMapBuffer1);


    return(0);
    }
    int start()
    {
    int i;

    i=10;
    while(i>=0)
    {

    ExtMapBuffer1[i]=1;
    i--;
    }
    Print(ArraySize(ExtMapBuffer1));
    return(0);
    }

    пишу советники (скрипты,индикаторы) за еду...тут

  25. post_thanks Получено лайков: 2

    endru (26.11.2012), polkiloqq (23.02.2012)

  26. Линк#13
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Допустим вы решили посчитать среднее значение максимальных цен всех баров на графике. Для этого вы поочерёдно добавляете каждый элемент к какой-то переменной, например, так:


    Код:
    double AveragePrice = 0.0;   
    AveragePrice += High[0]; 
    AveragePrice += High[1]; 
    AveragePrice += High[2]; 
    AveragePrice += High[3]; 
    AveragePrice += High[4];   // ... и так далее 
    AveragePrice /= Bars;

    Скажу вам одно: это может сработать, но это - очень глупо. Для таких целей существуют циклы. Обратите внимание, что все операции абсолютно одинаковы, лишь индекс изменяется от 0 до значения переменной Bars-1. Было бы намного удобнее каким-то образом определить счётчик и с его помошью обращаться к элементам массива. Вот как можно решить эту же задачу, используя циклы:

    Код:
    double AveragePrice = 0.0; 
    for(int a = 0; a < Bars; a++) 
    { 
        AveragePrice += High[a]; 
    }
    Рассмотрим каждую строку:

    Код:
    double AveragePrice = 0.0; // тут всё и так понятно 
    // а это самый настоящий цикл.
    for(int a = 0; a < Bars; a++)
    Как видите, цикл начинается с ключевого слова for. (Существуют и другие типы циклов, например, while, но их мы пока не будем рассматривать.) Далее следуют кавычки, в которых размещаются последовательно через точку с запятой счётчик, условие выполнения цикла и операция увеличения счётчика. В общем случае это может быть представлено в виде:

    Код:
    for(объявление счетчика; условие выполнения цикла; 
        изменение счетчика) 
      { 
         // между фигурными скобками размещается исходный код, 
         // который будет повторяться 
      }

    Рассмотрим каждую стадию объявления цикла более детально.

    Объявление счетчика: используется тип int для счётчика. Название переменной-счётчика не имеет никакого значения. Также обязательно производите инициализацию начального значения, например, нулём.

    Условие выполнения цикла: тут всё очень просто. Здесь определяется условие, и если оно истинно, то цикл продолжается. Иначе - цикл заканчивается. Например, в нашем случае:


    Код:
    a < Bars
    Видно, что пока переменная-счётчик а будет меньше, чем переменная Bars, то цикл будет выполняться дальше. Допустим, переменная Bars=10, тогда с каждым проходом по телу цикла переменная а будет увеличиваться на 1, пока не достигнет 10, после чего цикл прекратится.

    Изменение счетчика: если мы не будем изменять счётчик каким-то образом (в нашем случае не будем его увеличивать), то цикл никогда не закончится, так как условие никогда не будет выполнено. Чтобы лучше понять суть цикла, я написал код, который будет выполнять цикл с поясняющими комментариями:


    Код:
    // этот цикл:				
    // double AveragePrice=0.0; 
    // 							
    // for(int a=0;a> 			
    // { 						
    //   AveragePrice+=High[a]; 
    // }						
    //							
    // будет будет выполнен следующим образом: 
    //							
    							
    double AveragePrice=0.0;    
    int a=0;					
     
    AveragePrice+=High[a];		
    a++;              // теперь а=1, предположим, что Bars=3. 
                      // Тогда, так как Bars больше чем а,    
                      // то цикл продолжается                  
     
    AveragePrice+=High[a];									  
    a++;                   // а=2							  	
     
    AveragePrice+=High[a]; 
    а++;                   // a=3 
     
    // но так как условие уже не выполняется, то цикл  
    // прекращается, ведь теперь и а, и Bars равны трём.

    Теперь вы должны понимать, как работает цикл. Но нужно знать ещё несколько моментов.
    Условие выполнения цикла может быть другим. Например, таким:

    Код:
    a>10    // цикл выполняется, пока a больше 10	
    a!=10   // цикл выполняется, пока а не равно 10 
    a==20   // пока а равно 20						
    a>=2    // пока а больше или равно 2			
    a<=30   // пока а меньше или равно 30

    Изменение счётчика может производиться и по-другому. Например, вам необязательно увеличивать его каждый раз на 1. Вы можете поступить иначе:


    Код:
    a--     // счётчик будет каждый раз уменьшаться на 1
    a += 2  // счётчик будет каждый раз увеличиваться на 2

    Кроме того, вы можете разместить изменение счётчика внутри тела цикла. Например, так:


    Код:
    for(int a=0; a
    

    Аналогично - необязательно объявлять переменную-счётчик в цикле. Можно сделать иначе:


    Код:
    int a = 0; 					
    							 
    for(;a < Bars;) 			
     {							
       AveragePrice += High[a]; 
       
       a++; // счётчик изменяется внутри тела цикла
     }

    Если тело цикла содержит всего один оператор, например, вот так:


    Код:
    for(int a = 0; a < Bars; a++)					
     {                                              
       AveragePrice += High[a];                     
     }

    то фигурные скобки писать необязательно:


    Код:
    for(int a = 0; a < Bars; a++)                   
        AveragePrice += High[a];

    Пока это - всё, что касается циклов. Есть и другие виды циклов, но о них мы поговорим на следующем уроке. Сейчас вы должны уяснить, когда нужно использовать циклы, и запомнить их синтаксис. Попробуйте самостоятельно написать несколько циклов, которые бы выводили значения счётчика функцией MessageBox(). Попробуйте написать бесконечный цикл и посмотрите, что произойдет, если его запустить.


  27. post_thanks Получено лайков: 4

    endru (26.11.2012), exoxol (13.04.2012), polkiloqq (23.02.2012), Вirballa (19.11.2015)

  28. Линк#14
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Осталась ещё одна важная вещь, которую вы будете постоянно использовать, - условия. В нашей жизни много условий и действий, которые следуют за этими условиями. Мы очень часто даже мыслим условными предложениями. Например: "Если у меня будет достаточно времени, я успею прочитать эту книгу. Если нет, то, пожалуй, лучше полистать свежий журнал. " Вы и сами можете придумать сотни подобных условий и действий. Но как записать их на MQL4? Вот пример:


    Код:
    // конечно, писать условия нужно на языке MQL4 
    if( у меня будет достаточно времени )    
      {  
        // а тут мы размещаем любые действия, команды на MQL4 
        то дочитаю эту книжечку; 
      } 
    // если первое условие не выполняется, то выполняется  
    // второе условие 
    else   
      { 
        полистаю свежий журнальчик;  // код 
      }

    Теперь вы должны понимать синтаксис условий. Давайте посмотрим на условия, полностью написанные на языке MQL4:


    Код:
    int a = 10;	
    int b = 0;	
    				
    if(a > 10 ) 
      {			
        b = 1;  
      }			
    else        
      {			
        b = 2;  
      }			
    			
    MessageBox("b=" + b,".");

    Всё довольно-таки просто. Чему равно b после выполнения? Конечно, b = 2, потому что условие a > 10 не выполняется. Это элементарно. Кстати, использовать ключевое слово else (иначе) необязательно:


    Код:
    int a = 10;   
    int b = 0;	  
     
    if(a > 10)    
      {           
        b = 1;    
      }

    В таком случае, если условие не выполняется, блок кода, который следует после условия между фигурными скобками, пропускается. В нашем случае после выполнения b = 0. Также следует обратить внимание на то, как строятся условия. Нам известно, что разные типы переменных могут принимать разные значения, например:
    • int - целые значения (1, 60, 772);
    • double - с плавающей запятой (1.0021, 0.221);
    • string - только строки ("Word", "Some text.");
    • bool - только правда или неправда (true, false).


    Так вот, к чему я веду: в условиях сравнивайте переменные только с теми значениями, которые они могут принимать, например:


    Код:
    int Integer=10; 
    double Double=1.0; 
    string String="JustWord"; 
    bool Bool=true; 
     
    if(Integer<10) // условие построено правильно  
    { 
      MessageBox("It works!","Really!"); 
    } 
     
    if(Double!=1.0) // условие построено правильно 
    { 
       MessageBox("works!","Simple!"); 
    } 
     
    if(String==10) // а вот это уже полный бред!!  
                   // Мы определили переменную  
                   //String с типом string, а 10 это int 
    { 
       MessageBox("Wrong type","u can't c this"); 
    } 
     
    if(String!="Word") // другое дело 
    { 
      // ... 
    } 
     
    if(Bool==true) // правильно 
    { 
      // ... 
    }

    Обратите внимание, что мы производим сравнения при помощи условных операторов (==, !=, >, <, >=, <=). Для типов string и bool используйте только такие операторы сравнения как == и !=. Теперь вы должны ознакомиться с таким понятием, как вложенность. Да, вы можете использовать условия в циклах, а циклы в условиях; вы можете использовать в условиях другие условия и так далее. Например:


    Код:
    int a=0;
    double b=0.0;
    bool e;
     
    if(a==0)
    {
      for(int c=0;c500.0)
      {
         e=true;
      }
      else
      {
         e=false;
      }
    }

    Следующий пример показывает ещё один способ использования условий:


    Код:
    int a=0;
    int result;
     
    if(a==0)
    {
      result=1;
    }
    else if(a==1)
    {
      result=2;
    }
    else if(a==2)
    {
      result=3;
    }
    else
    {
      result=4;
    }

    Если при невыполнении какого-то условия у вас имеется другое условие, тогда напишите его после ключевого слова else, как в коде выше. Это тоже замечательно сработает. Количество других условий не ограничено. Если действия по выполнению условия умещаются в одну операцию, то фигурные скобки, как и в циклах, можно упустить:


    Код:
    if(a==1)
    { 
      b=2;
    }
     
    // а можно и так:
     
    if(a==1)
      b=2;


  29. post_thanks Получено лайков: 3

    endru (26.11.2012), exoxol (13.04.2012), polkiloqq (23.02.2012)

  30. Линк#15
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Часто одного условия бывает маловато. Приходится сравнивать много параметров, и в таком случае без сложных условий не обойтись. Например, если у меня будет достаточно времени и терпения, я выучу язык MQL4. Это можно записать в виде кода так:


    Код:
    if((достаточно времени) && (достаточно терпения))
    {
         я выучу язык MQL 4;
    }

    То есть сложное условие сначала нужно разбить на простые условия, заключить их в скобки, а потом между ними поставить && (логическое И) или || (логическое ИЛИ). Если нужно, чтобы оба условия были истинны, тогда используем && (И). Если нужно, чтобы истинным было или первое, или второе условие, то используем || (ИЛИ). Вот настоящий пример:


    Код:
    int a=10;
    int b=20;
     
    if((a>5) && (b<50))
      MessageBox("Its works!","Yes");

    Кроме того, вы можете вкладывать и объединять сколько угодно условий:


    Код:
    int a=10;
    int b=20;
     
    if ( ((a>5) || (a<15)) && ( b==20))
      MessageBox("It works, too!","Yes");


  31. post_thanks Получено лайков: 4

    DOCTORGAD (29.06.2017), exoxol (13.04.2012), kalabster (10.06.2012), polkiloqq (23.02.2012)

  32. Линк#16
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Используя вместе сложные и простые условия, а также циклы, вы можете написать очень сложный код. Практически любой алгоритм можно описать, используя эти незамысловатые структуры языка MQL4. Если вы поймете, как пишутся и работают эти простые вещи, вы поймёте половину из того, что из себя представляет MQL4 или любой другой язык программирования! Это действительно очень просто! Всё, что вам нужно, - это практика. Постарайтесь написать как можно больше скриптов, чтобы запомнить синтаксис языка и набраться опыта. Кроме того, просмотрите примеры, которые размещены в прикреплённом файле examples.mq4 и постарайтесь разобраться в них.


  33. post_thanks Получено лайков: 5

    DOCTORGAD (29.06.2017), Epiharia (03.10.2013), exoxol (13.04.2012), polkiloqq (23.02.2012), Val Stark (19.10.2012)

  34. Линк#17
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Вам уже известны массивы High[], Low[], Volume[] и переменная Bars. Ниже приведены еще некоторые полезные переменные:


    Код:
    double Open[]  // массив цен открытия баров текущего 
                   // графика
    double Close[] // массив цен закрытия баров текущего 
                   // графика
     
    double Bid // последняя известная цена покупки на 
               // текущей валютной паре
    double Ask // последняя известная цена продажи на 
               // текущей валютной паре


  35. post_thanks Получено лайков: 3

    Epiharia (06.10.2013), exoxol (13.04.2012), polkiloqq (23.02.2012)

  36. Линк#18
    Кандидат форумных наук
    Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Nick'Otin приемлемый уровень репутации Аватар для Nick'Otin
    Регистрация:
    16.12.2009
    Сообщений:
    2,320
    Деньги за посты (Подробнее):
    3750 RUB
    Поставил(а) лайков:
    74
    Получено лайков:  423
    в 216 сообщениях
    18%
    Итак, Вы узнали много нового. Однако, чтобы детально разобраться в программировании MQL 4 необходимо потратить больше времени, нежели Вы потратили на прочтение данного материла. Поэтому, перечитывайте текст, запоминайте, практикуйтесь и вникайте в суть и тогда Вы сможете на практике применять знания полученные в материалах, посвященных MQL 4. То, что описано в этой статье, - основа всего языка MQL4. Чем лучше Вы освоите этот материал, тем проще Вам будет учиться дальше.

    Учебник «Программирование на алгоритмическом языке MQL4» Скачать


  37. post_thanks Получено лайков: 12

    endru (26.11.2012), Epiharia (06.10.2013), exoxol (13.04.2012), GenGen (30.01.2012), Hunter x Hunter (20.01.2013), MasterDen (09.03.2015), niki1488 (30.05.2010), polkiloqq (23.02.2012), Robocop (30.11.2011), vezdehod (11.03.2012), VohaOd (28.10.2014), Иван Константинович (12.10.2011)

  38. Линк#19
    Кандидат форумных наук
    niki1488 стараюсь положительно себя зарекомендовать Аватар для niki1488
    Регистрация:
    29.05.2010
    Сообщений:
    1,054
    Деньги за посты (Подробнее):
    10243 RUB
    Поставил(а) лайков:
    16
    Получено лайков:  86
    в 66 сообщениях
    8%
    Спасибо большое. Скачаю и на досуге почитаю. А еще пару хороших учебников посоветуйте пожалуйста.


  39. post_thanks Получено лайков: 1

    polkiloqq (23.02.2012)

    <a href="https://www.mt5.com/ru/forex_analysis">Форекс портал</a>
  40. Линк#20
    Свой человек
    Псих
     
    Andruwka стараюсь положительно себя зарекомендовать Аватар для Andruwka
    Регистрация:
    27.05.2010
    Сообщений:
    594
    Деньги за посты (Подробнее):
    5564 RUB
    Поставил(а) лайков:
    39
    Получено лайков:  72
    в 55 сообщениях
    12%
    привет!
    нужна помощь, ищу исходники стандартных индюков мт4, может знаешь где их можно откопать?)

    Когда не знаешь, что делать, делай шаг вперед

  41. post_thanks Получено лайков: 1

    polkiloqq (23.02.2012)


Страница 1 из 121
1 2 11 ... Последняя ◄╝

Похожие темы

  1. Общие рекомендации для начинающих
    от Gold в разделе Трейдерские университеты
    Replies: 5774
    Последнее сообщение: 28.10.2019, 21:14
  2. Основы скальпинга на М1 для начинающих.
    от totsam в разделе Скальпинг и пипсовка
    Replies: 241
    Последнее сообщение: 18.06.2014, 18:17
  3. Топ-60 ошибок начинающих предпринимателей
    от Volangott в разделе Свободное общение
    Replies: 0
    Последнее сообщение: 30.01.2014, 18:42
  4. Форекс для начинающих
    от Sova в разделе Доска объявлений
    Replies: 2
    Последнее сообщение: 07.09.2011, 19:19
  5. Первые Шаги Для Начинающих
    от akella в разделе Доска объявлений
    Replies: 4
    Последнее сообщение: 05.10.2010, 23:38

Метки этой темы