- Il existe des fonctions prêtes à l'emploi, il suffit de comprendre leur application. Demandez-vous ce dont vous avez besoin et recherchez des fonctions prêtes à l'emploi pour votre solution.
Je continue à étudier le langage de programmation MQL5. Le nouveau script est dédié à la création d'un assistant dont j'aurai besoin pour supprimer tous les objets graphiques du terminal de trading. Comme je l'ai promis précédemment, j'ai essayé de tout décrire dans ce script pour les élèves de 1ère année de l'école de programmation.
Salutations, Vladimir.
//+------------------------------------------------------------------+//| Eraser.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"/* В связи с тем, что дальше будем активно работать над созданием различных объектов,
нам потребуется помощник, который быстро очистит главное окно торгового терминала
от созданных объектов. Сделаем этого помощника в виде скрипта и назовем его
"Eraser" (в переводе с английского языка - ластик, резинка для стирания). Нам
снова потребуется помощь Справочника MQL5. Ищем во вкладке "Содержание" раздел
с названием "Графические объекты" и кликаем по нему мышкой. С правой стороны
справочника появится большой перечень функций и описанием их действий. Нас
интересует функция ObjectsDeleteAll, которая удаляет все объекты указанного типа
с указанного графика (с указанного подокна графика). Жмем на неё и перед нами
открывается окно с информацией о том, как нужно пользовться данной функцией.
//+------------------------------------------------------------------+
ObjectsDeleteAll - удаляет все объекты в указанном графике, указанном подокне
указанного графика, указанного типа. Существует два варианта функции:
int ObjectsDeleteAll(
long chart_id, // идентификатор графика
int sub_window=-1, // индекс окна
int type=-1 // тип объекта для удаления
);
Удаляет по префиксу имени в подокне графика все объекты указанного типа.
int ObjectsDeleteAll(
long chart_id, // идентификатор графика
const string prefix, // префикс имени объекта
int sub_window=-1, // индекс окна
int object_type=-1 // тип объекта для удаления
);
Параметры:
chart_id - идентификатор графика. Цифра "0" означает текущий график.
prefix - префикс, по которому будут удалены все объекты, чьи имена начинаются с
данного набора символов. Префикс можно указывать как 'name' или 'name*' – оба варианта
работают одинаково. Если в качестве префикса указана пустая строка,
то будут удалены объекты с любым именем.
sub_window=-1 - номер подокна графика. Цифра "0" означает главное окно графика,
"-1" означает все подокна графика, включая главное окно.
type=-1 - тип объекта. Значение может быть одним из значений перечисления ENUM_OBJECT.
"-1" означает все типы.
//+------------------------------------------------------------------+
Решаем для себя, что будем удалять с торгового терминала все созданные нами объекты.
*/// ПИШЕМ КОД СКРИПТА//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---ObjectsDeleteAll(0,-1,-1);
}
//+------------------------------------------------------------------+/* Теперь расшифруем, что именно мы создали в программном коде скрипта.
1. Сначала написали ObjectsDeleteAll, потому что хотим удалить все графические объекты.
2. Далее в скобках мы написали "0", т.к. в параметрах требуется указать "chart_id", т.е.
идентификатор графика. Цифра "0" означает, что хотим всё удалить с текущего графика.
3. Двигаемся дальше. Согласно описания мы должны были вставить "sub_window" - номер подокна графика.
Выбираем цифру "-1", т.к. мы хотим очистить все подокна графика, включая главное окно,
и вставляем её в код.
4. И последнее, что мы вносим в код скрипта, так это "тип объекта", который хотим удалить.
Раз мы решили удалять все созданные объекты, то поэтому также выбираем цифру "-1".
5. Компилируем и запускаем скрипт для очистки торгового терминала от всех графических объектов.
Как компилировать и запускать скрипт мы уже узнали, когда создавали предыдущий скрипт New2.mq5.
*/
Je continue à étudier le langage de programmation MQL5. Le nouveau script New3.mq5 fixe la ligne horizontale au niveau de prix dont j'ai besoin. Comme promis précédemment, j'ai essayé de décrire tout ce que contient ce script pour un élève de première année de l'école de programmation.
Salutations, Vladimir.
//+------------------------------------------------------------------+//| New3.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"/* Ранее в скрипте New2.mq5 мы научились создавать горизонтальную линию на текущем графике
главного окна терминала MetaTrader 5 с привязкой к значению идентификатора SYMBOL_BIDHIGH
(что переводится, как максимальный Bid за день). А если нам потребуется привязать горизонтальную линию
к конкретной ценовой координате, как быть в такой ситуации? Снова воспользуемся информацией
имеющейся в Справочнике 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-точки привязки
);
Параметры:
...
price1 - ценовая координата первой точки привязки. Это обязательный параметр,
т.к. фактически используется только координата по оси цены.
...
//+------------------------------------------------------------------+
В прошлом пример скрипта New2.mq5 мы указали привязку первой точки к значению идентификатора SYMBOL_BIDHIGH.
Теперь вместо него зададим конкретный уровень цены в привязке к ценовой координате, например, 1.17475.
*/// ПИШЕМ КОД СКРИПТА//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---ObjectCreate(0,"Моя_линия_1",OBJ_HLINE,0,0,1.17475,0,0);
}
//+------------------------------------------------------------------+/* Теперь расшифруем, что именно мы создали в программном коде скрипта.
1. Сначала написали ObjectCreate, потому что хотим создать графический объект.
2. Далее в скобках мы написали "0", т.к. в параметрах требуется указать "chart_id", т.е.
идентификатор графика. Цифра "0" означает, что хотим создать линию на текущем графике.
3. Затем мы указали уникальное имя объекта "name", а именно "Моя_линия_1".
4. После этого мы задали "type" (тип объекта), а именно OBJ_HLINE (объект горизонтальная линия).
5. Потом согласно описания мы должны были вставить "sub_window" - номер подокна графика.
Цифра "0" означает, что мы размещаем эту линию в главном окне графика. Вставляем!
6. Следующий параметр - это "time1", т.е. временнАя координата первой привязки нашей линии.
Так как мы не планировали привязываться к определенным координатам времени, поэтому тоже ставим "0".
7. Переходим к "price1", т.е. к ценовой координате первой точки привязки. Вот здесь вместо значения
SYMBOL_BIDHIGH (что переводится, как максимальный Bid за день) мы вставляем тот уровень цены,
который и планировали, т.е. 1.17540.
8. Для time2 (время 2-ой точки привязки) и price2 (цена 2-ой точки привязки) указываем значения, равные "0".
9. Компилируем и запускаем скрипт. Как компилировать и запускать скрипт мы уже узнали, когда создавали скрипт New2.mq5.
*/
Je continue à étudier le langage de programmation MQL5. Le nouveau script New4.mq5 place la ligne verticale à la date et à l'heure dont j'ai besoin. Comme promis précédemment, j'ai essayé de décrire tout ce que contient ce script pour un élève de première année de l'école de programmation.
Salutations, Vladimir.
//+------------------------------------------------------------------+//| New4.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"/* Ранее в скрипте New3.mq5 мы научились создавать горизонтальную линию на текущем графике
главного окна терминала MetaTrader 5 с привязкой к нужной нам ценовой координате.
Теперь попробуем создать вертикальную линию с привязкой к конкретной временной координате,
для чего снова воспользуемся информацией имеющейся в Справочнике 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-точки привязки
);
Параметры:
...
time1 - ВременнАя координата первой привязки.
...
//+------------------------------------------------------------------+
Сначала изменим "type" (тип объекта) на OBJ_VLINE (объект вертикальная линия). Кроме того,
нам нужно будет задать временнУю координату первой привязки.
*/// ПИШЕМ КОД СКРИПТА//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---ObjectCreate(0,"Моя_линия_2",OBJ_VLINE,0,D'2020.10.02 06:00',0,0,0);
}
//+------------------------------------------------------------------+/* Теперь расшифруем, что именно мы создали в программном коде скрипта.
1. Сначала написали ObjectCreate, потому что хотим создать графический объект.
2. Далее в скобках мы написали "0", т.к. в параметрах требуется указать "chart_id", т.е.
идентификатор графика. Цифра "0" означает, что хотим создать линию на текущем графике.
3. Затем мы указали уникальное имя объекта "name", а именно "Моя_линия_2".
4. После этого мы задали "type" (тип объекта), а именно OBJ_VLINE (объект вертикальная линия).
5. Потом согласно описания мы должны были вставить "sub_window" - номер подокна графика.
Цифра "0" означает, что мы размещаем эту линию в главном окне графика. Вставляем!
6. Следующий параметр - это "time1", т.е. временнАя координата первой привязки нашей линии.
Сделаем небольшое отступление и разберемся, где нам взять эту временнУю координату. Открываем
справочник и во вкладке "Поиск" пишем поисковое слово datatime. Почему именно datatime, да
потому что перед "time1" указан его тип, а именно datatime. В открывшейся вкладке мы видим,
что временнАя координата записывается в формате D'1980.07.19 12:30:27', т.е. 19 июля 1980 года,
12 часов, 30 минут, 27 секунд. Значит и нам следует задать временнУю координату первой привязки
нашей линии. В моем примере такой координатой будет D'2020.10.02 09:00'. Если кто-то захочет
применить данный скрипт, то обязательно измените временнУю координату на нужную дату и время.
7. Переходим к "price1", т.е. к ценовой координате первой точки привязки. Здесь мы указываем значение,
равное "0", т.к. в данном скрипте мы не планировали привязываться к ценовой координате.
8. Для time2 (время 2-ой точки привязки) и price2 (цена 2-ой точки привязки) также указываем значения, равные "0".
9. Компилируем и запускаем скрипт. Как компилировать и запускать скрипт мы уже узнали, когда создавали скрипт New2.mq5.
*/
Je continue à étudier le langage de programmation MQL5. Le nouveau script New3.mq5 fixe la ligne horizontale au niveau de prix dont j'ai besoin. Comme promis précédemment, j'ai essayé de décrire tout ce que contient ce script pour un élève de première année de l'école de programmation.
Salutations, Vladimir.
Des exemples d'objets de dessin que vous pouvez trouver dans les fichiers sources des indicateurs, par exemple
Aliaksandr Hryshyn:
Pourquoi avez-vous besoin d'écrire cela ?
On dit qu'il y a plus de 6000 pages dans le livre de référence, cela prendrait trop de temps à apprendre :))))
Il vaut mieux commencer par les opérateurs, essayer d'écrire des exemples simples.
Veillez à écrire du code pour le mémoriser et vérifier sa compréhension.
Merci, Alexander ! J'ai établi un plan d'auto-apprentissage que je suis en train de suivre. En bref, le plan est "du simple au complexe". Avec chaque nouveau script, les tâches deviendront plus compliquées et plus intéressantes. Veuillez noter que mon âge ne me permet pas de tout saisir rapidement à la volée, et que je dois donc m'expliquer plusieurs fois.
Merci beaucoup pour vos commentaires ! Je prendrai vos conseils à cœur.
Des exemples d'objets de dessin que vous pourriez trouver dans les fichiers sources des indicateurs, par exemple
Les opérateurs sont plus intéressants ;)
Tout à fait, mais il suffit de prendre un exemple tout fait ou d'écrire son propre code - ce sont là deux grandes différences. Du moins pour moi. Merci beaucoup pour le conseil !
Merci, Alexander ! J'ai établi un plan d'auto-apprentissage, que je respecte désormais. En bref, l'autoformation suit le principe "du simple au complexe". Avec chaque nouveau script, les tâches deviendront plus compliquées et plus intéressantes. Veuillez noter que mon âge ne me permet pas de tout saisir rapidement à la volée, et que je dois donc m'expliquer plusieurs fois.
Merci beaucoup pour vos commentaires ! Je prendrai vos conseils à cœur.
Salutations, Vladimir.
Vous avez un mauvais plan d'éducation, vous partez du mauvais endroit.
Ce n'est pas simple, relativement, et nécessite déjà des connaissances de base.
Pour le confirmer, essayez de répondre aux questions de cette fonction, vous ne pourrez certainement pas répondre, ce qui indique une mauvaise orientation de l'apprentissage :
Pourquoi "Ma_ligne_2" est entre guillemets et OBJ_VLINE sans ?
int sub_window, // индекс окна
datetime time1, // время первой точки привязки
double price1, // цена первой точки привязки
Que signifie int, double ici, et en quoi sont-ils différents ?
Pourquoi sub_window est écrit et pas l'inverse, quel est l'intérêt ?
Vous n'avez pas besoin d'apprendre des fonctions à partir de l'aide, vous avez besoin des éléments de base du langage, des principes de base du travail avec l'environnement de négociation, avec les fichiers, toutes sortes de données, et autres, cela dépend de la tâche à accomplir.
Mon conseil est le suivant .
- Il existe des fonctions prêtes à l'emploi, il suffit de comprendre leur application. Demandez-vous ce dont vous avez besoin et recherchez des fonctions prêtes à l'emploi pour votre solution.
Merci, je le prendrai en considération.
Salutations, Vladimir.
Je continue à étudier le langage de programmation MQL5. Le nouveau script est dédié à la création d'un assistant dont j'aurai besoin pour supprimer tous les objets graphiques du terminal de trading. Comme je l'ai promis précédemment, j'ai essayé de tout décrire dans ce script pour les élèves de 1ère année de l'école de programmation.
Salutations, Vladimir.
Je continue à étudier le langage de programmation MQL5. Le nouveau script New3.mq5 fixe la ligne horizontale au niveau de prix dont j'ai besoin. Comme promis précédemment, j'ai essayé de décrire tout ce que contient ce script pour un élève de première année de l'école de programmation.
Salutations, Vladimir.
Je continue à étudier le langage de programmation MQL5. Le nouveau script New4.mq5 place la ligne verticale à la date et à l'heure dont j'ai besoin. Comme promis précédemment, j'ai essayé de décrire tout ce que contient ce script pour un élève de première année de l'école de programmation.
Salutations, Vladimir.
Pourquoi écrire comme ça ?
Le manuel compterait plus de 6 000 pages, la courbe d'apprentissage va s'allonger :))))
Il vaut mieux commencer par les opérateurs, essayer d'écrire des exemples simples.Voici la configuration initiale du script :
Lisez ensuite l'aide concernant les opérateurs et essayez de les ajouter un par un dans le script, et voyez ce qui se passe.
Vous pouvez commencer par eux :
Déclaration conditionnelle if-else
Opérateur de cycle pour
Opérateur de boucle Do-while
Déclaration du commutateur de sélection
Veillez à écrire le code pour pouvoir le mémoriser et vérifier que vous l'avez bien compris.
Je continue à étudier le langage de programmation MQL5. Le nouveau script New3.mq5 fixe la ligne horizontale au niveau de prix dont j'ai besoin. Comme promis précédemment, j'ai essayé de décrire tout ce que contient ce script pour un élève de première année de l'école de programmation.
Salutations, Vladimir.
Des exemples d'objets de dessin que vous pouvez trouver dans les fichiers sources des indicateurs, par exemple
Pourquoi avez-vous besoin d'écrire cela ?
On dit qu'il y a plus de 6000 pages dans le livre de référence, cela prendrait trop de temps à apprendre :))))
Il vaut mieux commencer par les opérateurs, essayer d'écrire des exemples simples.Les opérateurs sont plus intéressants ;)
Voici la configuration initiale du script :
Lisez ensuite l'aide concernant les opérateurs et essayez de les ajouter un par un dans le script, et voyez ce qui se passe.
Vous pouvez commencer par eux :
Déclaration conditionnelle if-else
Opérateur de cycle pour
Opérateur de boucle Do-while
Déclaration du commutateur de sélection
Veillez à écrire du code pour le mémoriser et vérifier sa compréhension.
Merci, Alexander ! J'ai établi un plan d'auto-apprentissage que je suis en train de suivre. En bref, le plan est "du simple au complexe". Avec chaque nouveau script, les tâches deviendront plus compliquées et plus intéressantes. Veuillez noter que mon âge ne me permet pas de tout saisir rapidement à la volée, et que je dois donc m'expliquer plusieurs fois.
Merci beaucoup pour vos commentaires ! Je prendrai vos conseils à cœur.
Sincèrement, Vladimir.
Des exemples d'objets de dessin que vous pourriez trouver dans les fichiers sources des indicateurs, par exemple
Les opérateurs sont plus intéressants ;)
Tout à fait, mais il suffit de prendre un exemple tout fait ou d'écrire son propre code - ce sont là deux grandes différences. Du moins pour moi. Merci beaucoup pour le conseil !
Salutations, Vladimir.
Merci, Alexander ! J'ai établi un plan d'auto-apprentissage, que je respecte désormais. En bref, l'autoformation suit le principe "du simple au complexe". Avec chaque nouveau script, les tâches deviendront plus compliquées et plus intéressantes. Veuillez noter que mon âge ne me permet pas de tout saisir rapidement à la volée, et que je dois donc m'expliquer plusieurs fois.
Merci beaucoup pour vos commentaires ! Je prendrai vos conseils à cœur.
Salutations, Vladimir.
Vous avez un mauvais plan d'éducation, vous partez du mauvais endroit.
Ici, vous avez étudié la fonction :
Ce n'est pas simple, relativement, et nécessite déjà des connaissances de base.
Pour le confirmer, essayez de répondre aux questions de cette fonction, vous ne pourrez certainement pas répondre, ce qui indique une mauvaise orientation de l'apprentissage :
Pourquoi "Ma_ligne_2" est entre guillemets et OBJ_VLINE sans ?
int sub_window, // индекс окна datetime time1, // время первой точки привязки double price1, // цена первой точки привязкиQue signifie int, double ici, et en quoi sont-ils différents ?
Pourquoi sub_window est écrit et pas l'inverse, quel est l'intérêt ?
Vous n'avez pas besoin d'apprendre des fonctions à partir de l'aide, vous avez besoin des éléments de base du langage, des principes de base du travail avec l'environnement de négociation, avec les fichiers, toutes sortes de données, et autres, cela dépend de la tâche à accomplir.