πŸ“˜ ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° MQL5: с нуля Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совСтника


На Π³Π»Π°Π²Π½ΡƒΡŽ > Π‘Π»ΠΎΠ³ > ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ > πŸ“˜ ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° MQL5: с нуля Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совСтника

mql5

ВступлСниС: ΠΏΠΎΡ‡Π΅ΠΌΡƒ MQL5 β€” это язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ стоит Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ‚Ρ€Π΅ΠΉΠ΄Π΅Ρ€Ρƒ

MetaTrader 5 β€” это Π½Π΅ просто Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» для Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΠΈ. Π­Ρ‚ΠΎ полноцСнная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ совСтников, ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, скрипты ΠΈ Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ. Π―Π·Ρ‹ΠΊ MQL5 ΠΏΠΎ синтаксису Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ C++, Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π² освоСнии, Π° ΠΏΠΎ возмоТностям прСвосходит ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π—Π°Ρ‡Π΅ΠΌ Ρ‚Ρ€Π΅ΠΉΠ΄Π΅Ρ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? Π§Ρ‚ΠΎΠ±Ρ‹:

  • ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ (ΡƒΠ±Ρ€Π°Ρ‚ΡŒ эмоции)
  • Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅ΠΈ Π½Π° истории (бэктСстинг)
  • Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (Π½Π΅ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°ΠΌ)
  • Π­ΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ часы Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΡ€ΠΎΠ²Π΅Π΄Ρƒ вас ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ нуля Π΄ΠΎ написания ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ скрипта. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ синтаксис, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Ρƒ с функциями ΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅, Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ автоматичСской Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΠΈ.

Β«MQL5 β€” это Π½Π΅ магия. Π­Ρ‚ΠΎ просто Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС, Ρ‡Π΅ΠΌ Π²Ρ‹ успСваСтС ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ. НачнитС с ΠΌΠ°Π»ΠΎΠ³ΠΎ, ΠΈ Ρ‡Π΅Ρ€Π΅Π· мСсяц Π²Ρ‹ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅ΡΡŒ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅Β».

1. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ знакомство: интСрфСйс MetaEditor ΠΈ установка

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ Π½Π° MQL5 ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π²ΠΎ встроСнном Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ β€” MetaEditor. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ MT5 Ρ‡Π΅Ρ€Π΅Π· мСню «БСрвис» β†’ Β«Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ MetaQuotes LanguageΒ» ΠΈΠ»ΠΈ просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F4 .

Π§Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅:

  • πŸ“ Навигатор β€” список Ρ„Π°ΠΉΠ»ΠΎΠ² (совСтники, ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, скрипты).
  • πŸ“ Рабочая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ β€” здСсь ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄.
  • πŸ› οΈ ПанСль инструмСнтов β€” компиляция, поиск, ΠΎΡ‚Π»Π°Π΄ΠΊΠ°.
  • πŸ“„ Окно Π²Ρ‹Π²ΠΎΠ΄Π° β€” ошибки компиляции ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.
πŸ“‚ ВаТная ΠΏΠ°ΠΏΠΊΠ°: ВсС Ρ„Π°ΠΉΠ»Ρ‹ хранятся Π² MQL5/Experts (для совСтников), MQL5/Indicators (для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²) ΠΈ MQL5/Scripts (для скриптов). ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Β«Π€Π°ΠΉΠ»Β» β†’ Β«ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…Β».

2. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° MQL5: Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π›ΡŽΠ±Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° MQL5 состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй: Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² прСпроцСссора (настройки), объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ .

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #property β€” настройка внСшнСго Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹


//+------------------------------------------------------------------+
//|                                          FirstProgram.mq5        |
//|                                                       Your Name  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Your Name"              // Автор
#property version   "1.00"                   // ВСрсия
#property script_show_inputs                 // ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ:

  • Π‘ΠΎΠ²Π΅Ρ‚Π½ΠΈΠΊ (Expert Advisor) β€” запускаСтся Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΈ Ρ‚ΠΎΡ€Π³ΡƒΠ΅Ρ‚ автоматичСски. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ OnInit(), OnTick(), OnDeinit() .
  • Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Indicator) β€” рисуСт Π»ΠΈΠ½ΠΈΠΈ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ OnInit(), OnCalculate() .
  • Π‘ΠΊΡ€ΠΈΠΏΡ‚ (Script) β€” выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ OnStart() .
🎯 Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°: НачнитС со скриптов β€” ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡ‰Π΅. А ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΉΠΌΡ‘Ρ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ совСтникам.

3. Бинтаксис MQL5: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…


int      lotSize = 1;           // Ρ†Π΅Π»ΠΎΠ΅ число
double   entryPrice = 1.23456;   // число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ
string   symbol = "EURUSD";      // строка
bool     isTrendUp = true;       // истина ΠΈΠ»ΠΈ лоТь
datetime openTime = D'2025.01.01 12:00'; // Π΄Π°Ρ‚Π° ΠΈ врСмя
color    myColor = clrRed;       // Ρ†Π²Π΅Ρ‚

ΠœΠ°ΡΡΠΈΠ²Ρ‹ (для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ)


double prices[10];               // статичСский массив ΠΈΠ· 10 элСмСнтов
int    myArray[];                // динамичСский массив (Ρ€Π°Π·ΠΌΠ΅Ρ€ задаётся ΠΏΠΎΠ·ΠΆΠ΅)
ArrayResize(myArray, 100);       // выдСляСм ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ 100 элСмСнтов

// ОбъявлСниС и заполнСниС
double closePrices[] = {1.2345, 1.2348, 1.2350};

УсловныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (Π»ΠΎΠ³ΠΈΠΊΠ°)

double rsi = 25.0;
if(rsi < 30)
{
    Print("RSI Π² Π·ΠΎΠ½Π΅ пСрСпроданности");
    // Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ€Π΄Π΅Ρ€ Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ
}
else if(rsi > 70)
{
    Print("RSI Π² Π·ΠΎΠ½Π΅ пСрСкуплСнности");
}
else
{
    Print("RSI Π² Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅");
}

Π¦ΠΈΠΊΠ»Ρ‹ (ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ дСйствия)

for(int i = 0; i < 10; i++)
{
    Print("ИндСкс: ", i);
}

int count = 0;
while(count < 5)
{
    Print("Π‘Ρ‡Ρ‘Ρ‚Ρ‡ΠΈΠΊ: ", count);
    count++;
}

4. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ: ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°

Ѐункция β€” это Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΎ основа ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ программирования.


// Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли RSI Π½ΠΈΠΆΠ΅ уровня oversold
bool IsRSI_Oversold(double rsiValue, double level = 30.0)
{
    if(rsiValue < level)
        return true;
    else
        return false;
}

// ИспользованиС в основном кодС
double rsi = 28.0;
if(IsRSI_Oversold(rsi))
    Print("Π‘ΠΈΠ³Π½Π°Π» Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ");

ВстроСнныС Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (самоС Π²Π°ΠΆΠ½ΠΎΠ΅)

// ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΎΡ€Π΄Π΅Ρ€Π° Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ
void SendBuyOrder()
{
    MqlTick tick;
    SymbolInfoTick(_Symbol, tick);
    
    double price = tick.ask;
    double sl = price - 50 * Point();
    double tp = price + 100 * Point();
    
    int ticket = OrderSend(_Symbol, OP_BUY, 0.1, price, 3, sl, tp, "MyOrder", 0, 0, clrGreen);
    if(ticket < 0)
        Print("Ошибка открытия ΠΎΡ€Π΄Π΅Ρ€Π°: ", GetLastError());
}

5. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: скрипт для расчёта ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅ΠΉ срСднСй

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ запускС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SMA 50 для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°. Π­Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для быстрого Π°Π½Π°Π»ΠΈΠ·Π°.


//+------------------------------------------------------------------+
//|                                                SMA_Calculator.mq5|
//|                                                       Your Name  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Your Name"
#property version   "1.00"
#property script_show_inputs

//--- Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ запускС)
input int InpMAPeriod = 50;      // ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅ΠΉ срСднСй

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
    // ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ хэндл ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° SMA
    int maHandle = iMA(_Symbol, _Period, InpMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
    
    if(maHandle == INVALID_HANDLE)
    {
        Print("НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ хэндл SMA. Ошибка: ", GetLastError());
        return;
    }
    
    // ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SMA для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π±Π°Ρ€Π°
    double smaBuffer[1];
    if(CopyBuffer(maHandle, 0, 0, 1, smaBuffer) == 1)
    {
        double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
        Print("=====================");
        Print("Π‘ΠΈΠΌΠ²ΠΎΠ»: ", _Symbol);
        Print("Π’Π°ΠΉΠΌΡ„Ρ€Π΅ΠΉΠΌ: ", EnumToString(_Period));
        Print("SMA ", InpMAPeriod, ": ", smaBuffer[0]);
        Print("ВСкущая Ρ†Π΅Π½Π°: ", currentPrice);
        
        if(currentPrice > smaBuffer[0])
            Print("Π¦Π΅Π½Π° Π’Π«Π¨Π• SMA β†’ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚Ρ€Π΅Π½Π΄ Π²Π²Π΅Ρ€Ρ…");
        else
            Print("Π¦Π΅Π½Π° ΠΠ˜Π–Π• SMA β†’ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚Ρ€Π΅Π½Π΄ Π²Π½ΠΈΠ·");
        Print("=====================");
    }
    else
    {
        Print("Ошибка получСния Π΄Π°Π½Π½Ρ‹Ρ… SMA");
    }
    
    // ОсвобоТдаСм хэндл ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°
    IndicatorRelease(maHandle);
}
🎯 Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ: Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ (F7), Π·Π°Ρ‚Π΅ΠΌ Π² ΠΎΠΊΠ½Π΅ «Навигатор» ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ скрипт Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊ. Π’ появившСмся ΠΎΠΊΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ SMA.

6. Π Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ: MqlTick, SymbolInfo ΠΈ CopyRates

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Ρ†Π΅Π½Ρ‹ ΠΈ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅. MQL5 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ для этого ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ структуры ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ .

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ†Π΅Π½Ρ‹ (структура MqlTick)


MqlTick tick;
if(SymbolInfoTick(Symbol(), tick))
{
    double bid = tick.bid;      // Ρ†Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ
    double ask = tick.ask;      // Ρ†Π΅Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ
    double spread = (ask - bid) / Point(); // спрСд Π² ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ…
}

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ послСдних N свСчСй (CopyRates)

MqlRates rates[];
ArraySetAsSeries(rates, true);  // индСксация ΠΎΡ‚ настоящСго ΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌΡƒ

// ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ 10 послСдних свСчСй с Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΉΠΌΡ„Ρ€Π΅ΠΉΠΌΠ°
int copied = CopyRates(Symbol(), Period(), 0, 10, rates);
if(copied == 10)
{
    double lastClose = rates[0].close;
    double lastHigh = rates[0].high;
    double lastLow = rates[0].low;
    Print("ПослСднСС Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅: ", lastClose);
}

7. ΠžΡ‚Π»Π°Π΄ΠΊΠ°: ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°Ρ‚ΡŒ ошибки

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· ошибок β€” это ΠΌΠΈΡ„. НуТно ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΡ… Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ инструмСнты ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ:

  • πŸ” Print() β€” Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ значСния Π² Β«Π–ΡƒΡ€Π½Π°Π»Β» Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.
  • πŸ” GetLastError() β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ послСднСй ошибки. ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹ΠΌΠΈ функциями.
  • πŸ” ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ β€” Comment("ВСкст") Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ тСкст прямо Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊ.
  • πŸ” Π Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (Debug) β€” пошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ· MetaEditor).

if(ticket < 0)
{
    Print("Ошибка ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΡ€Π΄Π΅Ρ€Π°. Код: ", GetLastError());
    // ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ошибок:
    // 10004 β€” Π½Π΅Ρ‚ связи с сСрвСром
    // 10006 β€” нСдостаточно срСдств
    // 10008 β€” стоп-лосс слишком Π±Π»ΠΈΠ·ΠΊΠΎ
}

8. Π‘ Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡƒΡ‡ΠΈΡ‚ΡŒ MQL5: рСсурсы ΠΈ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½

πŸ“š ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ источники (Π»ΡƒΡ‡ΡˆΠΈΠ΅):

  • Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ MQL5 (F1 Π² MetaEditor) β€” самый ΠΏΠΎΠ»Π½Ρ‹ΠΉ источник, с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Β«ΠžΡΠ½ΠΎΠ²Ρ‹ языка» .
  • Π‘Π°Π·Π° ΠΊΠΎΠ΄Π° (Code Base) Π½Π° mql5.com β€” тысячи Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… совСтников ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² с исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΉΡ‚Π΅, ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ.
  • Π€ΠΎΡ€ΡƒΠΌ MQL5 β€” Ρ‚Π°ΠΌ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π΄Π°ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка. Π—Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ вопросы, Ссли застряли.

πŸ“– ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°:

  1. Π”Π΅Π½ΡŒ 1-3: Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ синтаксис: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ†ΠΈΠΊΠ»Ρ‹. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ 5 ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… скриптов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто выводят тСкст.
  2. Π”Π΅Π½ΡŒ 4-7: ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ (SymbolInfoTick, CopyRates). Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ спрСд ΠΈ послСднюю Ρ†Π΅Π½Ρƒ закрытия.
  3. Π”Π΅Π½ΡŒ 8-14: Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ (iMA, iRSI). ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ RSI ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚, находится Π»ΠΈ ΠΎΠ½ Π² Π·ΠΎΠ½Π΅ пСрСкуплСнности/пСрСпроданности.
  4. Π”Π΅Π½ΡŒ 15-21: Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (OrderSend, CTrade). Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ простого совСтника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ сдСлку ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ условия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, RSI < 30).
  5. Π”Π΅Π½ΡŒ 22-30: Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рисками (расчёт Π»ΠΎΡ‚Π°, стоп-лосс, Ρ‚Π΅ΠΉΠΊ-ΠΏΡ€ΠΎΡ„ΠΈΡ‚). ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ совСтника Π² ВСстСрС Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΉ.
🎯 Π“Π»Π°Π²Π½Ρ‹ΠΉ совСт: НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ идСального совСтника с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π°. НачнитС с ΠΌΠ°Π»ΠΎΠ³ΠΎ β€” скрипта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считаСт SMA. ΠŸΠΎΡ‚ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ условиС. ΠŸΠΎΡ‚ΠΎΠΌ β€” Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΡŽ. УспСх ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ с ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: MQL5 β€” это ΠΊΠ»ΡŽΡ‡ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π½Π΅ волшСбная Ρ‚Π°Π±Π»Π΅Ρ‚ΠΊΠ°

MQL5 Π½Π΅ сдСлаСт ΠΈΠ· вас ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π΅Ρ€Π° Π·Π° ΠΎΠ΄Π½Ρƒ Π½ΠΎΡ‡ΡŒ. Но ΠΎΠ½ даст Π²Π°ΠΌ супСрсилу β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ свои Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. Π’Ρ‹ пСрСстанСтС Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‡ΡƒΠΆΠΈΡ… ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ совСтников, пСрСстанСтС ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° «сСкрСтныС стратСгии». Всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, β€” это Π»ΠΎΠ³ΠΈΠΊΠ°, ΡƒΡΠΈΠ΄Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ.

НачнитС сСгодня: ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ MetaEditor, создайтС Π½ΠΎΠ²Ρ‹ΠΉ скрипт, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с SMA. Π£Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ появляСтся ваш ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π­Ρ‚ΠΎ малСнькая ΠΏΠΎΠ±Π΅Π΄Π°, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ±Π΅Π΄ складываСтся мастСрство. А ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ своСго ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совСтника ΠΈ запуститС Π΅Π³ΠΎ Π½Π° Π΄Π΅ΠΌΠΎ-счётС β€” Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π΅ смоТСтС ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.

Π£Π΄Π°Ρ‡ΠΈ Π² ΠΊΠΎΠ΄ΠΈΠ½Π³Π΅, ΠΈ ΠΏΡƒΡΡ‚ΡŒ ваш Π΄Π΅ΠΏΠΎΠ·ΠΈΡ‚ растёт вмСстС с вашими Π½Π°Π²Ρ‹ΠΊΠ°ΠΌΠΈ!

Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° MQL5 β€” это ΠΊΠ°ΠΊ ΠΈΠ³Ρ€Π° Π½Π° ΠΏΠΈΠ°Π½ΠΈΠ½ΠΎ. Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π΄Π°Ρ‘ΡˆΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«Π§ΠΈΠΆΠΈΠΊ-ΠΏΡ‹ΠΆΠΈΠΊΒ», Π½ΠΎ Ссли Π½Π΅ Π±Ρ€ΠΎΡΠΈΡˆΡŒ β€” Ρ‡Π΅Ρ€Π΅Π· Π³ΠΎΠ΄ ΠΈΠ³Ρ€Π°Π΅ΡˆΡŒ Π¨ΠΎΠΏΠ΅Π½Π°. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” Π½Π°Ρ‡Π°Ρ‚ΡŒΒ».

 

Π”Π°Ρ‚Π° размСщСния ΡΡ‚Π°Ρ‚ΡŒΠΈ: 2026-05-26T06:11:18