Discussion de l'article "Présentation de MQL5 : Comment écrire un simple Expert Advisor et un indicateur personnalisé" - page 4

 

Cet ExpertAdvisor ne fonctionne pas sur MT5 build 712, du moins pas pour moi.

Il y a un message d'erreur "Cant't copy indicator buffer".

De plus, l'indicateur ne se compile pas sans avertissement,

"possible loss of data due to type conversion" à la ligne 53,

"possible use on uninitialized varaiable 'day_n'" sur la ligne 54

"possible use on uninitialized varaiable 'h_day'" à la ligne 62

"psosible use on uninitialized varaiable 'l_day'" à la ligne 63


Pouvez-vous corriger ces problèmes, s'il vous plaît ?

Sinon, c'est un bon exemple pour nous qui avons de l'expérience dans d'autres logiciels que MT5.

 
Si je veux placer 5 ordres de vente stop et 5 ordres d' achat stop en attente et que l'écart entre eux est de 10 pips. Comment faire ?
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

C'est un excellent article, pour les débutants et les personnes qui viennent de mql4, avec en prime un bon exemple de stratégie de trading.

Il y a quelques petites lacunes dans le code (vérification des erreurs pas toujours implémentée), mais l'EA fonctionne très bien si on l'utilise sur un timeframe minute comme le recommande l'auteur. Les avertissements lors de la compilation de l'indicateur ne sont que des avertissements, et ne vous empêchent pas de l'utiliser et d'utiliser l'EA.

Merci.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes
  • www.mql5.com
Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes - Documentation on MQL5
 

Ce n'est pas une façon facile d'expliquer mql5 aux gens. (C'est comme avec les livres de programmation, 90% des gens n'ont aucune idée de comment commencer. Ils ouvrent ce livre par exemple sur la programmation en C et le premier "exemple facile" est long d'une page entière et écrit dans des polices minuscules. Dans toute ma vie, je n'ai lu qu'un seul bon livre de programmation qui pourrait enseigner la programmation à n'importe qui. La raison en est qu'ils sont écrits par d'excellents programmeurs, mais malheureusement de très mauvais enseignants. La programmation peut être vraiment facile et je vous le prouverai en faisant un tutoriel simple pour le langage de programmation MQL4 quand j'aurai un peu plus de temps que maintenant. Il s'adresse à tout le monde, même aux débutants. La plus grande erreur est d'enseigner aux gens les détails du langage - la plupart de leur travail devrait être ctrl+C et ctrl+v et utiliser Google pour les commandes et le plus important - garder tout TRÈS SIMPLE. Je connais plus de 10 langages de programmation (je programme depuis l'âge de 7 ans) et je suis toujours effrayé par la façon dont cet "exemple facile" sur 11kb ( !!!) est expliqué. J'aimerais savoir s'il y a un vrai débutant en programmation qui a appris MQL5 à partir de cet exemple ;D. J'en doute et s'il y en a, ils se comptent sur les doigts d'une main.

Fast Dive into MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
You have decided to study MQL5 trading strategies' programming language, but you know nothing about it? We have tried to examine MQL5 and MetaTrader 5 terminal from the newcomers' point of view and have written this short introductory article. In this article, you can find a brief idea of the possibilities of the language, as well as some tips on working with MetaEditor 5 and the terminal.
 
angreeee:

Ce n'est pas une façon facile d'expliquer mql5 aux gens. (C'est comme avec les livres de programmation, 90% des gens n'ont aucune idée de comment commencer. Ils ouvrent ce livre par exemple sur la programmation en C et le premier "exemple facile" est long d'une page entière et écrit dans des polices minuscules. Dans toute ma vie, je n'ai lu qu'un seul bon livre de programmation qui pourrait enseigner la programmation à n'importe qui. La raison en est qu'ils sont écrits par d'excellents programmeurs, mais malheureusement de très mauvais enseignants. La programmation peut être vraiment facile et je vous le prouverai en faisant un tutoriel simple pour le langage de programmation MQL4 quand j'aurai un peu plus de temps que maintenant. Il s'adresse à tout le monde, même aux débutants. La plus grande erreur est d'enseigner aux gens les détails du langage - la plupart de leur travail devrait être ctrl+C et ctrl+v et utiliser Google pour les commandes et le plus important - garder tout TRÈS SIMPLE. Je connais plus de 10 langages de programmation (je programme depuis l'âge de 7 ans) et je suis toujours effrayé par la façon dont cet "exemple facile" sur 11kb ( !!!) est expliqué. J'aimerais savoir s'il y a un vrai débutant en programmation qui a appris MQL5 à partir de cet exemple ;D. J'en doute et si c'est le cas, ces personnes se comptent sur les doigts d'une main.

Vous avez raison de dire que les programmeurs ne sont pas de bons enseignants en général.

Mais je ne suis pas d'accord quand vous dites que MQL5 est si difficile à apprendre, surtout pour un programmeur qui a expérimenté plus de 10 langages.

 
En effet, c'est un excellent article pour les débutants en programmation mql5, comme moi. angevoyageur a raison sur ce point.
 

Dans la pratique, si je me souviens bien, il est possible de modifier l'un des niveaux (SL ou TP) d'une position tout en laissant les autres niveaux inchangés, même dans les cas où le niveau dont la valeur reste inchangée est plus proche du prix actuel que celui spécifié dans le paramètre SYMBOL_TRADE_STOPS_LEVEL. Lors de la création de programmes, je ne recommande pas de modifier les paramètres de position (niveaux) de telle sorte que les nouveaux paramètres de position (niveaux) ne répondent pas aux exigences de contrôle de l'exactitude des données de position, car cette situation n'est pas documentée et un résultat différent pourrait être obtenu à l'avenir.

[Supprimé]  
J'ai copié-collé l'Expert Advisor et j'ai essayé de le tester avec Strategytester. Mais il n'effectue aucune transaction. Je suis nouveau à MQL5 et à la programmation, donc j'ai peut-être fait une erreur stupide. Il s'est compilé sans aucune erreur. J'aimerais vraiment avoir cette stratégie ! J'ai une idée de la raison pour laquelle elle ne fonctionne pas sur Strategytester... ?
 

Bonjour à tous !

Tout fonctionne bien pour moi seulement quand

request.type_filling=ORDER_FILLING_IOC ;

request.type_time = ORDER_TIME_DAY;

Situation similaire avec https://www.mql5.com/ru/forum/1156/page9#comment_2359257

Est-ce une particularité de mon courtier FxPro ?

Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
  • www.mql5.com
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих". - Страница 9 - Категория: статьи и техническая библиотека по автоматическому трейдингу
 

Je suis novice en programmation mql5.


J'ai essayé d'apprendre à travers cet exemple, mais je suis un peu perdu avec la boucle à la fin de la construction de l'indicateur. Où exactement a-t-il assigné une valeur à la variable day_n ?


Je ne suis pas sûr que le programme soit capable d'assigner une valeur à la variable day_n car la boucle vérifie que day_n<day_t. Comment le programme peut-il connaître la valeur de day_n ?


for(i=prev_calculated;i<rates_total;i++)
     {
      day_t=time[i]/PeriodSeconds(ATRtimeframe);
      if(day_n<day_t)
        {
         day_n=day_t;
         h_day=high[i];
         l_day=low[i];
        }
        else
        {
         if(high[i]>h_day) h_day=high[i];
         if(low[i]<l_day) l_day=low[i];
        }
      bu[i]=l_day+atr[1];
      bd[i]=h_day-atr[1];
     }


Et comment est-elle calculée ? Supposons que rate_total = 10 et qu'il n'y a pas encore de barre calculée. Donc prev_calculated = 0


day_t=time[0] (AUJOURD'HUI ! puisqu'il compte à rebours)/PeriodSeconds... puisqu'il commence à compter à partir de 1970, supposons qu'il commence à compter à partir d'il y a 10 jours. il devrait donc donner 10, n'est-ce pas ?

Donc day_t=10. Maintenant, il vérifie si dayt > dayn. Je ne connais pas dayn, mais je sais que dayt=10. Je vais supposer que dayn est zéro, puisqu'il n'y a pas de valeur.

Alors dayn devient également 10. D'accord.

Deuxième lancer de la boucle. prev_calculated + 1= 1.

DayT=time[1] (hier)/period... rappelez-vous, on commence à compter à partir d'il y a 10 jours... mais seulement jusqu'à hier. cela devrait donner une valeur de 9, non ?

mais maintenant, dayN < dayT est faux. Il commence alors à exécuter les expressions else. D'accord. Je comprends.


Il calcule ensuite tous les bu[] et bd[]. Ok. La boucle se termine lorsque prev < total rate est faux.

Mais quand une nouvelle barre arrive, et qu'elle redevient vraie, je recommence à zéro ? Ou bien la boucle commencera à 10 et passera directement à la partie else ?


Merci ! !!!