Autoapprendimento del linguaggio MQL5 da zero - pagina 9

 
Roman Shiredchenko:

Dico solo che è un po' tardi per imparare una lingua da zero quando si hanno dei nipoti...

Sì, hai ragione, Roman, un po' in ritardo.

Sapete perché le persone sono riluttanti ad essere assunte dopo i 45 anni? La risposta di un responsabile del personale mi ha colpito: a quell'età le persone sono poco formate e non aspirano all'autosviluppo, mentre noi abbiamo bisogno di dipendenti giovani e ambiziosi! Speriamo che ora sia chiaro il motivo per cui ho deciso di fare l'autoapprendimento. Se non capite, allora lasciate che lo dica senza mezzi termini: per provare a me stesso che tutte le età sono sottomesse all'autosviluppo (autoformazione).

Sinceramente, Vladimir.

 
Maxim Kuznetsov:

Per imparare MQL da zero, si dovrebbe prima fissare 0 a qualcosa di più grande.

Per esempio, prendete un po' di C# (universale dal main-stream) e con un sacco di tutorial iniziate a fare "cose utili" per voi stessi - moduli con calcoli, per esempio.
Non è necessario imparare il C++ perché 1) la maggior parte degli autori di tutorial sono interessati ai template e alla metaprogrammazione, non ai compiti pratici.
2) è richiesto un serio back-ground informatico.

Una volta che 0 non è più zero, passare al MQL applicato sarà facile. È semplice.

Ma tutto ciò che serve è il desiderio e la persistenza.

Sì, Maxim, sono totalmente d'accordo con te. Prenderò anche in considerazione la vostra opinione sul modo migliore di studiare da soli.

Saluti, Vladimir.

 
MrBrooklin:

Sì, hai ragione, Roman, è un po' tardi.

Sapete perché le persone sono riluttanti ad essere assunte dopo i 45 anni? La risposta di un responsabile delle risorse umane mi ha colpito - a quell'età le persone sono poco formate e non hanno voglia di autosvilupparsi, e noi abbiamo bisogno di lavoratori giovani e ambiziosi!!! Speriamo che ora sia chiaro il motivo per cui ho deciso di fare l'autoapprendimento. Se non capite, allora lasciatemi essere franco - per provare a me stesso che tutte le età sono sottomesse all'autosviluppo (autoformazione).

Sinceramente, Vladimir.

Non è mai troppo tardi)))) Ed è meglio di un semplice sudoku))))

 
MrBrooklin:


In alternativa, cerca su Internet un corso del centro di formazione specialistica della MGTU
Cerca "Specialista. Programmazione in C (Ci)"
È disponibile sui tracker. È l'insegnante con quella voce.

Ecco la prima lezione.
Naturalmente, la sintassi C è diversa da quella di Mql, ma la base per comprenderla è la stessa.


 
MrBrooklin:

Sono d'accordo, Valery, ma la domanda è stata posta su i++ e ++i. Anche per questo ho preso una D. Non è ancora chiaro. È così triste.

Sinceramente, Vladimir.

Fammi provare ))) Secondo me, ++ è molto semplice.

C'è una variabile a. C'è una variabile i = 1.

a = ++i è uguale a i = i + 1; e poi a = i; // come a = 2, i = 2

a = i++ è lo stesso di a = i; e poi i = i + 1; // infine a = 1, i = 2

 
Сергей Таболин:

Fammi provare )))) Secondo me ++ è molto semplice.

C'è una variabile a. C'è una variabile i = 1.

a = ++i è uguale a i = i + 1; e poi a = i; // come a = 2, i = 2

a = i++ è la stessa cosa di a = i; e poi i = i + 1; // alla fine a = 1, i = 2

Ciao Sergei!

Questo è stato un malinteso da parte mia perché la mia domanda era "Qual è la differenza tra i++ e ++i". Grazie per il chiarimento.

Saluti, Vladimir.

 
MrBrooklin:

Sì, hai ragione, Roman, è un po' tardi.

Sapete perché le persone sono riluttanti ad essere assunte dopo i 45 anni? La risposta di un responsabile delle risorse umane mi ha colpito - a quell'età le persone sono poco formate e non hanno voglia di autosvilupparsi, e noi abbiamo bisogno di lavoratori giovani e ambiziosi!!! Speriamo che ora sia chiaro il motivo per cui ho deciso di fare l'autoapprendimento. Se non capite, allora lasciate che lo dica senza mezzi termini: per provare a me stesso che tutte le età sono sottomesse all'autosviluppo (autoformazione).

Sinceramente, Vladimir.

Pitnitza))) Non potevo resistere))) Con il tuo approccio evidenziato - orto, cinema e domino. Non sono un giovane uomo, ma... I pensieri giusti sono: "un buon lavoratore quadro è un lavoratore quadro nudo nel tuo letto"))) Senza offesa per i dipendenti di OC, o, come è ora di moda, PMO (nel caso in cui ci sono qui), ma puramente per il gusto di motivivschika quelli che sono sopra.
 
Vladimir Simakov:
Pitnicka))) Non potevo resistere))) Con il tuo approccio evidenziato - orto, cinema e domino. Non sono un giovane uomo, ma .... I pensieri giusti sono: "un buon lavoratore quadro è un lavoratore quadro nudo nel tuo letto"))) Senza offesa per i dipendenti di OC, o, come è ora di moda, PMO (nel caso in cui ci sono qui), ma puramente per il gusto di motivivschika quelli che sono sopra.

Human Resources è molto più corretto di Personnel Management)))) Nudo... e nel mio letto....... sì perché.............)

 

Buona giornata a tutti voi e buon umore!

Oggi è stata una notte insonne, ma ne è valsa la pena. Per la prima volta ho scritto un piccolo script da solo, senza consigli, usando solo MQL5 Reference. Questo è stato, forse, il primo passo più difficile dell'auto-studio. Come ho promesso prima, ho cercato di descrivere tutto in questo script per lo studente di 1a classe della scuola di programmazione.

Saluti, Vladimir.

//+------------------------------------------------------------------+
//|                                                         New2.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
/* Создадим горизонтальную линию на текущем графике в главном окне терминала MetaTrader 5.
   Что для этого нужно сделать? Воспользуемся информацией имеющейся в Справочнике MQL5. 
   Для этого заходим в Справочник MQL5 и в левой его части во вкладке "Содержание"
   находим раздел "Графические объекты". Открываем этот раздел и переходим в подраздел
   ObjectCreate, что в переводе с английского означает "Создание объекта".
   В этом подразделе внимательно читаем: "ObjectCreate создает объект с указанным именем,
   типом и начальными координатами в указанном подокне графика. При создании можно указать 
   до 30 координат". Всё это старемся запомнить, ну а если забудем, то снова откроем 
   Справочник MQL5 и освежим память.

//+------------------------------------------------------------------+
bool  ObjectCreate(
   long         chart_id,      // идентификатор графика
   string       name,          // имя объекта
   ENUM_OBJECT  type,          // тип объекта
   int          sub_window,    // индекс окна
   datetime     time1,         // время первой точки привязки
   double       price1,        // цена первой точки привязки
   ...
   datetime     timeN=0,       // время N-ой точки привязки
   double       priceN=0,      // цена N-ой точки привязки
   ...
   datetime     time30=0,      // время 30-й точки привязки
   double       price30=0      // цена 30-точки привязки
   );

Параметры:

   chart_id - Идентификатор графика. "0" означает текущий график.
   name - Имя объекта. Имя должно быть уникальным в пределах одного графика, включая его подокна.
   type - Тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT.
   
   sub_window - Номер подокна графика. "0" означает главное окно графика. Указанное подокно должно существовать, 
   в противном случае функция возвращает false.

   time1 - ВременнАя координата первой привязки.
   
   price1 - Ценовая координата первой точки привязки. 
   Это обязательный параметр, т.к. фактически используется только координата по оси цены.
   
   timeN=0 - ВременнАя координата N-ой точки привязки. 
   priceN=0 - Ценовая координата N-ой точки привязки.
   *
   *
   *
   time30=0 - ВременнАя координата тридцатой точки привязки. 
   price30=0 - Ценовая координата тридцатой точки привязки.
//+------------------------------------------------------------------+

   Прочитали? Отлично! Теперь в теле скрипта после "void OnStart() {" начинаем заполнять код и периодически
   нажимать на панели редактора MetaEditor на значок в виде "Расчески", чтобы стилизировать наш исходный код.
*/

// ПИШЕМ КОД СКРИПТА

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ObjectCreate(0,"Моя_линия_1",OBJ_HLINE,0,0,SymbolInfoDouble(Symbol(),SYMBOL_BIDHIGH),0,0);

  }
//+------------------------------------------------------------------+

/* Теперь расшифруем, что именно мы создали в программном коде скрипта. 
1. Сначала написали ObjectCreate, потому что хотим создать графический объект.
2. Далее в скобках мы написали "0", т.к. в параметрах требуется указать "chart_id", т.е. идентификатор графика. 
   Цифра "0" означает, что хотим создать линию на текущем графике.
3. Затем мы указали уникальное имя объекта "name", а именно "Моя_линия_1".
4. После этого мы должны были указать "type", т.е. "тип объекта". 

   Вот тут сразу возникает вопрос, а где же его взять? Для этого необходимо сделать небольшое отступление и пояснить.
   Смотрим в описании параметров и видим, что "тип объекта" может быть одним из значений перечисления ENUM_OBJECT.
   Предлагаю сразу разбраться, что же это такое ENUM_OBJECT? В переводе с английского ENUM (сокращенное от enumerate) 
   означает перечислить, а OBJECT - объект, т.е. перечислить объекты. Запоминаем это!
   Снова открываем Справочник MQL5. В левой части справочника во вкладке "Указатель" есть поле "Введите ключевое слово для поиска:".
   В это поле записываем ENUM_OBJECT. Как только мы его запишем, так сразу внизу под этим полем увидим большой перечень
   значений. Нас интересует самое верхнее с синим выделением. Кликаем по нему мышкой два раза или в самом низу нажимаем 
   на кнопку "Вывести". С правой стороны справочника появится такой же большой перечень "Типы объектов". 
   Это как раз то, что нам нужно. Раз мы решили создать на графике горизонтальную линию, то нам нужно выбрать
   OBJ_HLINE. Давайте ещё раз поупражняемся с английским языком. OBJ - это сокращение 
   от английского слова OBJECT, т.е объект, а HLINE состоит из двух частей H - horizontal, т.е. горизонтальный 
   и LINE, т.е. линия. Теперь соберем всё вместе и получится, что OBJ_HLINE ни что иное, как "объект горизонтальная линия".
   Копируем OBJ_HLINE и вставляем в наш код.

5. Двигаемся дальше. Согласно описания мы должны были вставить "sub_window" - номер подокна графика. 
   Цифра "0" означает, что мы размещаем эту линию в главном окне графика. Вставляем!
6. Следующий параметр - это "time1", т.е. временнАя координата первой привязки нашей линии. Так как мы не планировали
   привязываться к определенным координатам времени, поэтому тоже ставим "0".
7. Переходим к "price1", т.е. к ценовой координате первой точки привязки.
   
   Тут тоже нужны некоторые пояснения. Чтобы привязать нашу горизонтальную линию к ценовой координате, сначала необходимо
   получить эту цену, т.е. запросить рыночную информацию. Снова обращаемся к Справочнику MQL5 и во вкладке "Содержание"
   находим раздел "Получение рыночной информации". Открываем его и переходим в подраздел SymbolInfoDouble. Давайте тоже
   переведем его значение на русский язык. Получится "информация о символе Double". Double на языке программирования MQL5
   означает, что информация о символе представлена в виде значения, имеющего дробную часть, например, 1,12569 или 0,9875 и т.п.
   Запоминаем это!
   Согласно справочной информации для SymbolInfoDouble мы должны указать символ и идентификатор свойства. Символ текущего 
   графика на языке программирования MQL5 пишется, как Symbol(). Индентификатор свойства символа также берем из справочника
   в подразделе ENUM_SYMBOL_INFO_DOUBLE (дословно переводится, как перечисление свойств символа, имеющего дробную часть).
   Возьмем, например, значение SYMBOL_BIDHIGH (что переводится, как максимальный Bid за день).
   
8. Для time2 (время 2-ой точки привязки) и price2 (цена 2-ой точки привязки) указываем значения, равные "0".
9. Вот теперь всё готово, чтобы провести компиляцию скрипта и запустить его в главном окне терминала MetaTrader 5.
   Нажимаем кнопку "Компилировать" и если у нас нет ошибок, тогда переходим к торговому терминалу. Для этого либо нажимаем
   на клавиатуре клавишу F4, либо кликаем мышкой на верхней панели редактора MetaEditor значок "Вызов торгового терминала"
   в виде двух синеньких квадратиков с красной ломаной линией.
10.На торговом терминале у нас уже должен быть запущен "Навигатор". Если он ещё отсутствует, тогда его нужно открыть.
   Делается это легко: ищем на торговом терминале кнопку "Вид", нажимаем на неё и в открывшемся новом окне выбираем 
   строку с названием "Навигатор". Есть ещё один вариант - одновременно нажать на клавиатуре клавишу Ctrl и клавишу N.
   Оказавшись в "Навигаторе", открываем папку "Скрипты" и находим в ней наш скрипт с названием New2. Остается только мышкой 
   зацепить этот скрипт и перенести на главное окно торгового терминала, чтобы увидеть результат.
*/
 
SanAlex:

La linea di tendenza sarà probabilmente più difficile?

Probabilmente.

Saluti, Vladimir.

Motivazione: