MQL5 언어를 처음부터 자가 학습 - 페이지 9

 
Roman Shiredchenko :

내 말은, 손자들이 처음부터 언어를 배우기에는 너무 늦었다는 것입니다 ...

네, 맞습니다, 로만, 조금 늦었습니다.

45세 이상의 사람들이 사람들을 고용하기를 꺼리는 이유를 아십니까? 한 인사 감사관의 대답은 단순히 나를 감동 시켰습니다.이 나이에 사람들은 훈련이 부족하고 자기 계발을 위해 노력하지 않으며 젊고 야심 찬 일꾼이 필요합니다!!! 이제 내가 왜 독학을 하기로 결정했는지 명확해지기를 바랍니다. 그것이 분명하지 않다면 나는 똑바로 말할 것입니다-자기 개발 (자기 교육)을 위해 모든 연령대가 복종한다는 것을 스스로 증명하기 위해.

안부 인사를 전합니다. 블라디미르.

 
Maxim Kuznetsov :

MQL을 "처음부터" 배우려면 먼저 0을 더 많은 것으로 변경해야 합니다.

예를 들어, 일부 스레드(주류에서 보편적) C #를 가져오고 많은 교과서에서 "유용한 것"을 만들기 시작합니다. 예를 들어 계산이 포함된 형식입니다.
C++는 아마도 배울 가치가 없을 것입니다. 1) 대부분의 교과서 저자는 실제 문제가 아니라 템플릿과 메타 프로그래밍에 신경을 쓰기 때문입니다.
2) 진지한 IT 배경 지식이 필요합니다.

0이 0이 되는 순간, 적용된 MQL로 이동하기 쉬울 것입니다. 그는 단순하다.

일반적으로 욕망과 인내가 있을 것입니다.

예 맥스, 전적으로 동의합니다. 또한 자기 학습을 구축하는 가장 좋은 방법에 대한 귀하의 의견을 고려할 것입니다.

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

네, 맞습니다, 로만, 조금 늦었습니다.

45세 이상의 사람들이 사람들을 고용하기를 꺼리는 이유를 아십니까? 한 인사 감사관의 대답은 단순히 나를 감동 시켰습니다.이 나이에 사람들은 훈련이 부족하고 자기 계발을 위해 노력하지 않으며 젊고 야심 찬 일꾼이 필요합니다!!! 이제 내가 왜 독학을 하기로 결정했는지 명확해지기를 바랍니다. 그것이 분명하지 않다면 나는 직접 말할 것입니다 - 자기 개발 (자기 교육)을 위해 모든 연령대가 복종한다는 것을 스스로 증명하기 위해.

안부 인사를 전합니다. 블라디미르.

너무 늦지 않았습니다)))) 그리고 그냥 스도쿠보다 낫습니다))))

 
MrBrooklin :


또 다른 옵션은 인터넷에서 MSTU의 교육 센터 전문가의 과정을 찾으십시오.
"전문가. C(SI) 프로그래밍" 검색
추적기에 있습니다. 그런 목소리의 선생님이었다.

여기 첫 번째 교훈이 있습니다.
당연히 C언어 의 문법은 Mql과 다르지만 이해의 기반은 같다.


 
MrBrooklin :

동의합니다, Valery. 그러나 질문은 i++++i 에 대해 질문되었습니다. 나는 또한 그것을 위해 2개 얻었다. 아직 명확하지 않습니다. 왠지 슬프다.

안부 인사를 전합니다. 블라디미르.

시도해 봅시다))) 제 생각에는 ++는 매우 간단합니다.

변수가 있습니다. 변수 i = 1이 있습니다.

a = ++i는 i = i + 1과 동일합니다. 그런 다음 a = i; // 결국 a = 2, i = 2

a = i++는 = i와 동일합니다. 그리고 나는 = 나는 + 1; // 결과적으로 a = 1, i = 2

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

시도해 봅시다))) 제 생각에는 ++는 매우 간단합니다.

변수가 있습니다. 변수 i = 1이 있습니다.

a = ++i는 i = i + 1과 동일합니다. 그런 다음 a = i; // 결국 a = 2, i = 2

a = i++는 = i와 동일합니다. 그리고 나는 = 나는 + 1; // 결과적으로 a = 1, i = 2

안녕하세요 세르게이입니다!

"i++와 ++i의 차이점은 무엇입니까?"라는 질문을 받았기 때문에 내 부분에서 오해가 있었습니다. 명확하게 해 주셔서 감사합니다.

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

네, 맞습니다, 로만, 조금 늦었습니다.

45세 이상의 사람들이 사람들을 고용하기를 꺼리는 이유를 아십니까? 한 인사 감사관의 대답은 단순히 나를 감동 시켰습니다.이 나이에 사람들은 훈련이 부족하고 자기 계발을 위해 노력하지 않지만 젊고 야심 찬 직원이 필요합니다!!! 이제 내가 왜 독학을 하기로 결정했는지 명확해지기를 바랍니다. 그것이 분명하지 않다면 나는 직접 말할 것입니다 - 자기 개발 (자기 교육)을 위해 모든 연령대가 복종한다는 것을 스스로 증명하기 위해.

안부 인사를 전합니다. 블라디미르.

Pitnitsa))) 나는 저항 할 수 없었습니다))) 당신이 강조한 접근 방식으로 정원, 영화관 및 도미노. 나는 더 이상 젊지 않지만 ... 올바른 생각은 "좋은 인사 장교는 당신의 침대에있는 알몸 인사 장교입니다"))) 순전히 뒤에있는 사람들을위한 동기 부여를 위해서입니다.
 
Vladimir Simakov :
Pitnitsa))) 나는 저항 할 수 없었습니다))) 당신이 강조한 접근 방식으로 정원, 영화관 및 도미노. 나는 더 이상 젊지 않지만 ... 올바른 생각은 "좋은 인사 장교는 당신의 침대에있는 알몸 인사 장교입니다"))) 순전히 뒤에있는 사람들을위한 동기 부여를 위해서입니다.

HR 부서가 페르소나 관리보다 훨씬 정확합니다))))) 알몸으로 ... 그리고 내 침대에서 .. 도대체 ..............)

 

좋은 하루와 좋은 분위기 모두!

오늘은 잠 못 이루는 밤이었지만 그만한 가치가 있었습니다. 처음으로 프롬프트 없이 MQL5 Reference 만 사용하여 작은 스크립트를 직접 작성했습니다. 이것은 아마도 독학에서 가장 어려운 첫 번째 단계였을 것입니다. 이 대본에서는 앞서 약속한 대로 프로그래밍 학교 1학년 학생을 위한 접근 가능한 프레젠테이션에서 모든 것을 그리려고 했습니다.

안부 인사를 전합니다. 블라디미르.

 //+------------------------------------------------------------------+
//|                                                         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 :

여기에 추세선이 있으면 더 어려울 것입니다.

아마.

안부 인사를 전합니다. 블라디미르.