Die Sprache MQL5 von Grund auf selbst erlernen - Seite 9

 
Roman Shiredchenko:

Ich will damit nur sagen, dass es ein bisschen spät ist, eine Sprache von Grund auf zu lernen, wenn man Enkelkinder hat...

Ja, du hast recht, Roman, ein bisschen spät.

Wissen Sie, warum Menschen nach 45 Jahren nur noch ungern eingestellt werden? Die Antwort eines Personalchefs hat mich verblüfft: In diesem Alter sind die Leute schlecht ausgebildet und streben nicht danach, sich selbst weiterzuentwickeln, während wir junge und ehrgeizige Mitarbeiter brauchen! Jetzt wird hoffentlich klar, warum ich mich für das Selbststudium entschieden habe. Wenn Sie das nicht verstehen, dann lassen Sie es mich ganz offen sagen - um mir selbst zu beweisen, dass alle Altersstufen der Selbstentwicklung (Selbsttraining) unterworfen sind.

Mit freundlichen Grüßen, Vladimir.

 
Maxim Kuznetsov:

Um MQL von Grund auf zu lernen, sollten Sie zunächst 0 für etwas Größeres festlegen.

Nehmen Sie zum Beispiel ein wenig (universelles) C# und beginnen Sie mit einer Menge Tutorials, "nützliche Dinge" für sich selbst zu erstellen - Formulare mit Berechnungen zum Beispiel.
Sie brauchen C++ nicht zu lernen, denn 1) die meisten Autoren von Tutorials interessieren sich für Vorlagen und Meta-Programmierung, nicht für praktische Aufgaben.
2) ernsthafte IT-Kenntnisse sind erforderlich.

Sobald 0 nicht mehr Null ist, wird der Übergang zur angewandten MMS einfach sein. Das ist ganz einfach.

Aber alles, was Sie brauchen, ist Lust und Ausdauer.

Ja, Maxim, ich stimme Ihnen vollkommen zu. Ich werde auch Ihre Meinung über die bessere Art des Selbststudiums in Betracht ziehen.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Ja, du hast Recht, Roman, es ist ein bisschen spät.

Wissen Sie, warum Menschen nach 45 Jahren nur noch ungern eingestellt werden? Die Antwort eines Personalverantwortlichen hat mich sehr beeindruckt: In diesem Alter sind die Leute schlecht ausgebildet und nicht an der eigenen Entwicklung interessiert, und wir brauchen junge und ehrgeizige Arbeitnehmer!!! Jetzt wird hoffentlich klar, warum ich mich für das Selbststudium entschieden habe. Wenn Sie das nicht verstehen, dann lassen Sie es mich ganz offen sagen - um mir selbst zu beweisen, dass alle Altersstufen der Selbstentwicklung (Selbsttraining) unterworfen sind.

Mit freundlichen Grüßen, Vladimir.

Es ist nie zu spät)))) Und es ist besser als nur Sudoku))))

 
MrBrooklin:


Alternativ können Sie im Internet nach einem Kurs des Ausbildungszentrums für Fachkräfte bei MGTU
suchen und nach "Fachkraft" suchen. Programming in C (Ci)"
Es ist auf den Trackern verfügbar. Das ist der Lehrer mit dieser Stimme.

Hier ist die erste Lektion.
Natürlich ist die Syntax von C anders als die von Mql, aber die Grundlage für das Verständnis ist dieselbe.


 
MrBrooklin:

Ich stimme dir zu, Valery, aber die Frage bezog sich auf i++ und ++i. Auch dafür gab es eine Vier. Das ist noch nicht klar. Es ist so traurig.

Mit freundlichen Grüßen, Vladimir.

Lassen Sie es mich versuchen ))) Meiner Meinung nach ist ++ sehr einfach.

Es gibt eine Variable a. Es gibt eine Variable i = 1.

a = ++i ist dasselbe wie i = i + 1; und dann a = i; // als a = 2, i = 2

a = i++ ist dasselbe wie a = i; und dann i = i + 1; // schließlich a = 1, i = 2

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

Lassen Sie es mich versuchen ))) Meiner Meinung nach ist ++ sehr einfach.

Es gibt eine Variable a. Es gibt eine Variable i = 1.

a = ++i ist dasselbe wie i = i + 1; und dann a = i; // als a = 2, i = 2

a = i++ ist dasselbe wie a = i; und dann i = i + 1; // am Ende a = 1, i = 2

Hallo Sergej!

Hier lag ein Missverständnis meinerseits vor, denn die Frage lautete : "Was ist der Unterschied zwischen i++ und ++i". Ich danke Ihnen für die Klarstellung.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Ja, du hast Recht, Roman, es ist ein bisschen spät.

Wissen Sie, warum Menschen nach 45 Jahren nur noch ungern eingestellt werden? Die Antwort eines Personalverantwortlichen hat mich sehr beeindruckt: In diesem Alter sind die Leute schlecht ausgebildet und nicht an der eigenen Entwicklung interessiert, und wir brauchen junge und ehrgeizige Arbeitnehmer!!! Jetzt wird hoffentlich klar, warum ich mich für das Selbststudium entschieden habe. Wenn Sie das nicht verstehen, dann lassen Sie es mich ganz offen sagen - um mir selbst zu beweisen, dass alle Altersstufen der Selbstentwicklung (Selbsttraining) unterworfen sind.

Mit freundlichen Grüßen, Vladimir.

Pitnitza))) Konnte nicht widerstehen))) Mit Ihrem hervorgehobenen Ansatz - Gemüsegarten, Kino und Dominospiel. Ich bin selbst kein junger Mann, aber... Die richtigen Gedanken sind: "Ein guter Kadermitarbeiter ist ein nackter Kadermitarbeiter in deinem Bett"))) Nichts gegen Mitarbeiter von OC, oder, wie es jetzt in Mode ist, PMO (falls es sie hier gibt), sondern rein aus Gründen der motivivschika diejenigen, die über sind.
 
Vladimir Simakov:
Pitnicka))) Konnte nicht widerstehen))) Mit Ihrem hervorgehobenen Ansatz - Gemüsegarten, Kino und Dominospiel. Ich bin selbst kein junger Mann, aber.... Die richtigen Gedanken sind: "Ein guter Kadermitarbeiter ist ein nackter Kadermitarbeiter in deinem Bett"))) Nichts gegen Mitarbeiter von OC, oder, wie es jetzt in Mode ist, PMO (falls es sie hier gibt), sondern rein aus Gründen der motivivschika diejenigen, die über sind.

Human Resources ist viel richtiger als Personalmanagement)))) Nackt... und in meinem Bett....... ja warum.............)

 

Ich wünsche Ihnen allen einen guten Tag und gute Laune!

Es war eine schlaflose Nacht heute, aber das war es wert. Zum ersten Mal habe ich ein kleines Skript selbst geschrieben, ohne irgendwelche Tipps, nur mit der MQL5-Referenz. Dies war vielleicht der schwierigste erste Schritt in der Selbststudie. Wie ich vorhin versprochen habe, habe ich versucht, alles in diesem Skript für den Schüler der 1. Klasse der Programmierschule zu beschreiben.

Mit freundlichen Grüßen, 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:

Die Trendlinie wird wahrscheinlich schwieriger sein?

Wahrscheinlich.

Mit freundlichen Grüßen, Vladimir.

Grund der Beschwerde: