Questions des débutants MQL5 MT5 MetaTrader 5 - page 1175

 
Peter Vorobyev:

Changez le code source de MQ et les méthodes pull en méthodes publiques, il est clair que ce n'est pas notre méthode :)

#define private public

si vous ne voulez pas qu'il en soit ainsi, alors tous les éléments duCAppDialog sont formés par des objets graphiques, il vous suffit de connaître le nom de l'objet, et après avoir créé une instance de la classe CAppDialog, écrivez une méthode qui peindra les bords du CAppDialog dans la couleur que vous voulez

 
Igor Makanu:

si vous ne le voulez pas de cette façon, tous les éléments du panneau CAppDialog sont formés comme des objets graphiques, vous devez seulement connaître le nom de l'objet et après avoir créé une instance de la classe CAppDialog, écrire une méthode qui peindra les bords du CAppDialog dans la couleur que vous voulez

Par ce biais, vous pouvez transférer le code à la recherche du contrôle correct dans la classe. Ça marche.

Mais je ne sais pas comment y accéder, connaissant le nom de l'objet.

 
Peter Vorobyev:

Vous pouvez l'utiliser pour déplacer le code afin de trouver le contrôle dont vous avez besoin dans la classe. Ça marche.

Mais je ne sais pas comment y accéder en connaissant le nom de l'objet.

https://www.mql5.com/ru/docs/objects/objectsetinteger

mais je pense qu'il est plus facile de redéfinir toutes les méthodes et champs privés en publics pour vos propres besoins.

 
Igor Makanu:

https://www.mql5.com/ru/docs/objects/objectsetinteger

mais je pense qu'il est plus facile de redéfinir toutes les méthodes et tous les champs fermés en public pour vos propres besoins.

ObjectSetInteger - fonctionne :), j'avais oublié tout cela.
Pouvez-vous donner un exemple pour#defineprivate public - Je ne comprends pas comment remplacer la méthode. Est-il nécessaire de faire cela dans votre classe ?

 
Peter Vorobyev:

ObjectSetInteger - fonctionne :), j'avais oublié tout cela.
Pouvez-vous donner un exemple pour#define private public - Je ne comprends pas comment remplacer la méthode. Est-il nécessaire de faire cela dans votre classe ?

#define private public
#include <Controls\Dialog.mqh>
// тут весь Ваш класс который наследуете от CAppDialog
#undef private
Expérimentez avec undef, après la substitution de macro vous pouvez l'annuler et fermer toutes les méthodes publiquesde CAppDialog dans votre classe pour faciliter l'écriture du code plus tard
 
Igor Makanu:

Igor, oui ça marche. Merci.

 

Exécution de l'optimisation génétique d'un EA sur MT5 avec des agents locaux connectés au réseau domestique.

L'Expert Advisor prend quelques données initiales dans un fichier texte.

J'ouvre le fichier avec les drapeaux : FILE_READ|FILE_SHARE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON

Pour que les agents locaux puissent trouver le fichier, j'ai dû le copier dans le dossier commun du terminal de l'ordinateur local.

La seule solution consiste-t-elle à dupliquer manuellement les fichiers requis sur toutes les machines locales à chaque fois ?

Le terminal lui-même ne peut-il pas envoyer ce fichier avec les paramètres de test d'entrée ?

 
Comment puis-je trouver le prix du niveau de l'éventail de Fibonacci sur la barre actuelle de manière programmatique ?
 
Сергей Таболин:
Comment puis-je trouver le prix du niveau de l'éventail de Fibonacci sur la barre actuelle de manière programmatique ?
bool  ObjectGetDouble(
   long                            chart_id,          // идентификатор графика
   string                          name,              // имя объекта
   ENUM_OBJECT_PROPERTY_DOUBLE     OBJPROP_LEVELVALUE,           // идентификатор свойства
   int                             prop_modifier,     // модификатор свойства
   double&                         double_var         // сюда примем значение свойства
   );
Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. [in]  Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора...
 
Alexey Viktorov:
void OnTick()
{
//---
   Print(TimeToString(TimeLocal()));
   Print(ObjectGetDouble(0,"TrL",OBJPROP_PRICE));
}

Donne le prix du premier point de la ligne de tendance. (((

2020.01.18 11:46:37.233 2019.11.29 00:00:00   2019.11.29 00:00
2020.01.18 11:46:37.233 2019.11.29 00:00:00   1.00245
2020.01.18 11:46:39.533 2019.11.29 08:00:00   2019.11.29 08:00
2020.01.18 11:46:39.533 2019.11.29 08:00:00   1.00245
2020.01.18 11:46:41.834 2019.11.29 16:00:00   2019.11.29 16:00
2020.01.18 11:46:41.834 2019.11.29 16:00:00   1.00245
2020.01.18 11:46:44.135 2019.12.02 00:00:00   2019.12.02 00:00
2020.01.18 11:46:44.135 2019.12.02 00:00:00   1.00245