FXOpen Broker

10+ years’
experience in FX

VISIT WEBSITE

Trading Accounts

ECN STP
Micro Crypto

START TRADING

Try Free Demo

Practice Forex trading
risk free

OPEN DEMO ACCOUNT

PAMM Technology

Become a Master
or a Follower

JOIN PAMM SERVICE
Results 16 to 22 of 22
Thread: MQL4 уроки от eevviill
  1. #16
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок7 - встроенные функции

    Сегодня разсмотрим встроенные функции. Они ничем не отличаются от пользовательских(написаных программистом) функций. Единственное отличие что само тело функции отсутвует в коде. Тело функции предварительно встроенно в терминал. Тоесть нам нужно только вызвать её. В MQL4 есть множество встроенных функций. В MetaEditor они подсвечиваются определённым цветом. Какие данные нужно передавать в встроенную функцию можно узнать нажав f1 на функции.
    PHP Code:
    ////////////////////////////////////
    void OnStart()
      {
     
    Alert("Hello!");

      } 
    1)
    Alert("Hello!");
    Мы уже встречали данную функцию. Она выводит на график какое то сообщение со звуковым оповещением. Само сообщение это то что мы передадим. В данном случае это Hello! Если мы напишем Alert(4+2); то в сообщении будет 6. Если напишем Alert(42); то выйдет 42 Если напишем Alert(4" "2); то выйдет сообщение 4 2.
    Похожие функции это Print()-пишет сообщение в журнал терминала и Comment()-пишет сообщение на графике.


    Есть ещё такие часто использующиеся встроенные функции:
    1) OrderSend()OrderClose()OrderModify() - открыть ордер закрыть ордер модифицировать ордер
    2) ObjectCreate()... - создать объект на графике
    3) NormalizeDouble() - округляет число до указанной точности десятичного дроба
    4) TimeCurrent()TimeLocal() - текущее время терминала текущее время ПК
    5) ArrayResize() - изменяет размер буфера
    6) MathMax()MathMin - большее из двух чисел меньшее из двух чисел
    7) AccountBalance()AccountEquity() - баланс счёта еквити счёта
    стандартные данные - BarsOpen[]Close[]High[]Low[]Bid - количество баров графика цена открытия определённого бара цена закрытия определённого барацена хай определённого барацена лоу определённого бара цена Бид
    Last edited by eevviill; 10-26-2016 at 09:36 PM.

  2. The Following User Says Thank You to eevviill For This Useful Post:

    andref (10-27-2016)

  3. #17
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок8 - скрипт для открытия ордера(без внешних переменных)

    Сегодня будем разсматривать скрипт для открытия ордера бай. Параметры ордера будут записаны сразу в функцию открытия ордера. В следующем уроке будет скрипт которому будут переданы параметры с внешних переменных.

    PHP Code:
    ///////////////////////////////////////////
    void OnStart()
    {
    OrderSend(Symbol()OP_BUY0.01Ask000"ScM"70clrBlue);
       

    1)
    OrderSend()
    Встроенная(не пользовательская) функция которая открывает ордер с указанными параметрами.
    Параметры мы должны указать.
    -Символ по которому нам нужно открыть ордер. Symbol() встроенная функция которая возвращает символ графика на котором мы запускаем программу.
    -Тип ордера который мы хотим открыть. В данном примере OB_BUY значит что мы откроем ордер на покупку(бай). Есть такие типы ордеров OP_BUYOP_SELLOP_BUYSTOPOP_SELLSTOPOP_BUYLIMITOP_SELLLIMIT.
    -Объём.
    -Цена открытия. Бай ордер открывается по цене Аск. Ask встроенная переменная которая хранит цену Аск по текущему символу(символ графика на котором работает программа).
    -Максимально допустимое проскальзывание(в пунктах).
    -СтопЛос. Цена(именно цена как 1.23603) стопЛоса для бай ордера.
    -ТейкПрофит. Цена(именно цена как 1.23903) тейкПрофита для бай ордера.
    -Коментарий к ордеру(будет виден в терминале).
    -Меджик. Это число которое прикрепляется к ордеру. Необходимо например для того чтобы 2 советника различали свои ордера. Один будет работать только с ордерами с Меджиком 7 а второй с Меджиком 788.
    -Дата експирации для отложенных ордеров. Именно дата типа 2017.02.18 23:00 Но стоит отметить что брокеры имеют ограничене для близость во времени между текущим временем открытия ордера и датой експирации. Например 8 часов. Значит что если сейчас 2017.02.18 06:00 то в ордере дата експирации должна быть не раньше 2017.02.18 14:00
    -Цвет стрелки на графике после открытия ордера.


    P.S.
    -Чтобы записать дату в коде нужно это сделать так D'2017.02.18 23:00'
    -Все цвета в коде начинаются с clr. Например clrBlue clrRed clrGreen
    MQL4 programmer


  4. #18
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок9 - скрипт для открытия ордера(с внешними переменными)

    Сегодня будем разсматривать скрипт для открытия ордера с внешними переменными. Тоесть перед открытием мы укажем тип ордера объём проскальзывание комментарий меджик.

    PHP Code:

    #property strict
    #property show_inputs

    extern ENUM_ORDER_TYPE ord_type OP_BUY;
    extern double lot 0.01;
    extern int slippage 0;
    extern string comment "Scm2";
    extern int magic 8;

    ///////////////////////////////////////////
    void OnStart()
    {
    double price=Ask;
    if(
    ord_type==OP_SELLprice=Bid;

    OrderSend(Symbol()ord_typelotpriceslippage00commentmagic0clrBlue); 

    1)
    #property show_inputs
    Настройка указывает на то что при прикреплении скрипта к графику появится окно с настройками. Используется только в скриптах.
    2)
    extern ENUM_ORDER_TYPE ord_type = OP_BUY;
    extern double lot = 0.01;
    extern int slippage = 0;
    extern string comment = "Scm2";
    extern int magic = 8;

    Эти настройки мы сможем поменять при использовании скрипта. Про тип переменной ENUM в следующем уроке.
    3)
    double price=Ask;
    if(ord_type==OP_SELL) price=Bid;

    Как мы знаем БАЙ ордера открываются по ASK цене а СЕЛЛ ордера по BID.
    Здесь мы переменной присвоили по умолчанию цену Ask. Ниже указали что если мы будем открывать ордер СЕЛЛ то переменная price будет иметь значение цены Bid.
    4)
    OrderSend(Symbol()ord_typelotpriceslippage00commentmagic0clrBlue);
    В функцию открытия ордера мы передали напрямую с внешних переменных(extern) параметры ордера.
    MQL4 programmer


  5. #19
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок10 - тип переменной enum

    Тип переменной ENUM это список в котором хранится ограниченное количество целых(int) чисел. Удобство заключается в том что значение переменных имеют названия. Есть встроенные переменные типа ENUM и созданные программистом.


    Встроенный ENUM тип ТаймФреймов. ТФ имеют значения в минутах тоесть 1515306024014401008043200
    Чтобы не запоминать и не писать числа нужно указывать тип переменной ENUM_TIMEFRAMES.
    На рисунке1 показано как будет выглядеть входная переменная TF с использованием ENUM и без.
    PHP Code:
    extern ENUM_TIMEFRAMES TF PERIOD_H4
    PHP Code:
    extern int TF PERIOD_H4
    Также есть такие распространённые втроенные ENUM типы: ENUM_MA_METHODENUM_APPLIED_PRICEENUM_ORDER_TYPE



    Созданный ENUM тип. Например нам нужно 3 режима отображения стрелок. Рисунок 2.
    PHP Code:
    enum arr_types 
    {
    LevelsDistanceCross
    };

    extern arr_types type Levels
    1)
    enum arr_types
    Тут мы указываем название нашего списка.
    2)
    LevelsDistanceCross
    Тут указываем название значений. Если не указывать то значения даются от 0 до... Тоесть Levels=0Distance=1Cross=2
    Если первому названию значения присвоить 1 то следующие будут увеличиватся на 1. Тоесть Levels=1Distance=2Cross=3
    Можно каждому названию значений присваивать разные числа. Тоесть Levels=10Distance=3Cross=8
    3)
    extern arr_types type = Levels;
    Указано что это внешняя переменная. Что это тип переменной enum с названием что мы создали. Дали название нашей переменной. Присвоили ей значение которое содержит enum с названием Levels.
    4)
    Дальше в коде можна сравнивать значение переменной type с enum списком.
    Например.
    PHP Code:
    if(type==Levels)... 
    Attached Thumbnails Attached Thumbnails ен.png   енО.png  
    Last edited by eevviill; 09-04-2017 at 11:45 AM.
    MQL4 programmer


  6. #20
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок11 - буфер

    Буфер это массив данных которые записаны в ячейках.
    Аналогией может быть ящик с напитком Pepsi в бутылках. Pepsi это тип данных(intbool...) ящик это буфер место для бутылок это ячейки бутылки с Pepsi это данные.


    Буфер объявляется так.
    PHP Code:
    int box[]; 
    Тоесть мы указываем тип и название буфера. [] означает что это буфер.
    На глобальном уровне(обычно сразу после внешних переменных) буферу можно указать размер.
    Наш буфер будет иметь 7 ячеек. (ящик на 7 бутылок)
    PHP Code:
    int box[7]; 
    Чтобы изменить размер буфера нужно использовать функцию
    PHP Code:
    ArrayResize(box7); 
    Первый елемент буфера хранится в 0-ой ячейке. Вообще в программировании всё начинается с 0-я а не с 1-ы.
    Тоесть если нам нужно записать данные в 1-ую ячейку то
    PHP Code:
    box[0]=8
    А если мы напишем
    PHP Code:
    box[7]=2
    то положим бутылку мимо ящика.

    Есть такие основные функции по работе с буфером.
    ArraySort - Сортировка числовых массивов по первому измерению
    ArraySize - Возвращает количество элементов указанного массива
    ArrayResize - Устанавливает новый размер в первом измерении массива
    ArrayInitialize - Инициализирует числовой массив указанным значением
    ArrayBsearch - Ищет указанное значение в отсортированном по возрастанию многомерном числовом массиве
    Last edited by eevviill; 09-12-2017 at 11:17 AM.
    MQL4 programmer


  7. #21
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок12 - цикл while

    Цикл это выполнение кода в теле до тех пор пока есть условие для выполнения цикла.
    Например нужно накидать яблоки в пустой ящик пока яблок в ящике меньше 23.



    PHP Code:
    int apples=0;
    while(
    apples<23)
    {
    apples++;

    1)
    int apples=0;
    Мы объявили переменную где будем подсчитывать яблоки. Так как изначально ящик пустой то в нём 0 яблок.
    2)
    while(apples<23)
    Указываем что это цикл. В скобках пишем условие до которого будет выполнятся код в теле цикла. В данном случае до того времени пока яблок в ящике будет меньше 23.
    3)
    apples++;
    Ну это собственно и есть само действие. Добавление 1-го яблока.


    Тоесть порядок в цикле while такой. Проверили есть ли условие для выполнения кода в теле цикла -выполнили код в теле цикла -проверили есть ли условие для выполнения кода в теле цикла -выполнили код в теле цикла...
    MQL4 programmer


  8. #22
    Moderator eevviill's Avatar
    Join Date
    Jul 2015
    Location
    Бандерівці
    Posts
    1338
    FXO Shares
    0
    FXO Bonus
    0.000
    Thanks
    863
    Thanked 635 Times in 537 Posts

    Default Урок13 - цикл for

    Цикл for по сути такой же как и цикл while только с другой формой записи.
    Итак. Будем делать то же самое с теми же параметрами но запишем в виде цикла for.
    Каждое выполнение кода циклом называется итерация.


    PHP Code:
    for(int apples=0;apples<23;apples++)
    {
    Alert(apples);

    1)
    for(int apples=0;apples<23;apples++)
    Как мы видим складывание яблок в ящик заняло у нас одну строку.
    Цикл(его объявление) for делится на 3 части.
    int apples=0 - объявление стартовой переменной. В процесе работы цикла она менятся не будет.
    apples<23 - условие до которого цикл будет выполнятся. Как только яблок станет 23(или больше) цикл прекращает выполнятся.
    apples++ - это увеличение на еденицу переменной apples

    2)
    Alert(apples);
    При выполнении цикла сработает Алерт 23 раза с числом от 0 до 22.

    3)
    Порядок выполнения кода на картинке.
    Attached Thumbnails Attached Thumbnails фо.png  
    Last edited by eevviill; 09-26-2017 at 08:48 AM.
    MQL4 programmer


Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Disclaimer
2026 © FXOpen All rights reserved.

Risk Warning:: Trading on the Forex market involves substantial risks including complete possible loss of funds and other losses and is not suitable for all members. Clients should make an independent judgment as to whether trading is appropriate for them in the light of their financial condition investment experience risk tolerance and other factors.

FXOpen is a member of The Financial Commission.

.

and is authorised and regulated by the Financial Conduct Authority (previously the Financial Services Authority) under firm reference number 579202.

FXOpen does not provide services for United States residents.

Join us