Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1140

 
Artyom Trishkin:

J'ai montré ci-dessus ce qu'il faut faire. Pourquoi se donner tant de mal alors qu'il existe une méthode recommandée par les développeurs ?

S'agissait-il de sélectionner les périodes sur lesquelles l'objet devait être affiché ou non ?

Disons qu'il y a un panneau de négociation sur le graphique. Ensuite, je construis manuellement des objets (niveaux de négociation, lignes verticales, rectangles).

Tout ce que je construis manuellement sera appliqué au panneau de négociation. Tous les objets sont sur la même échelle de temps.

Et en quoi la "méthode recommandée par les développeurs" est-elle utile dans ce cas ?

 
Aliaksei Karalkou:
Bonjour.

Je veux transférer l'indicateur ATP sur le graphique des prix. Mais je ne sais pas comment faire. Je veux qu'il montre le mouvement maximal de la volatilité par rapport à la ligne médiane de la même période. Si quelqu'un a le code, merci de le partager.

https://www.mql5.com/ru/code/23304

Multi_ATR_Bands
Multi_ATR_Bands
  • www.mql5.com
Индикатор Three ATR Bands with multiple selection
 
Artyom Trishkin:

Propriété OBJPROP_TIMEFRAMES :

OBJ_NO_PERIODS - non visible sur toutes les périodes,

OBJ_ALL_PERIODS - visible sur toutes les périodes

Merci.

La méthode s'est avérée très efficace et très compacte.

L'objet reste maintenant visuellement au-dessus de tous les autres.

 
Maksym Mudrakov:

La question était-elle de choisir sur quelles échéances afficher l'objet et sur lesquelles ne pas le faire ?

Disons qu'il y a un panneau de négociation sur le graphique. Ensuite, je construis manuellement des objets (niveaux de négociation, lignes verticales, rectangles).

Tout ce que je construis manuellement sera appliqué au panneau de négociation. Tous les objets sont sur la même échelle de temps.

Et en quoi la "méthode recommandée par les développeurs" est-elle utile dans ce cas ?

J'ai pris note de votre suggestion, mais j'avais des scintillements lors de la suppression et du redessin d'un objet.

La méthode proposéepar Artyom Trishkin fonctionne réellement !

Désormais, il n'y a plus de redécoupage ni de scintillement de l'objet et il reste surtout visible.

D'ailleurs, dans mon cas, c'était aussi un panneau de négociation qui était bloqué par des flèches pour les transactions ouvertes et fermées.

Comment j'ai résolu le problème :

// Глобальное объявление
int last_tick_objects = 0;                // количество объектов на прошлом тике
// имена графических объектов:
string tp_rctngl = "TP Rectangle";
string sl_rctngl = "SL Rectangle";
string vol_rctngl = "Volume Rectangle";

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   long cid = ChartID();
   if(ObjectsTotal() != last_tick_objects)  // количество объектов поменялось
     {
      last_tick_objects = ObjectsTotal();   // запоминаем новое количество объектов
      // выводим на передний план объекты: tp_rctngl, sl_rctngl, vol_rctngl
      if(ObjectFind(cid, tp_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, tp_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  // делаем невидимым на всех таймах
         ObjectSetInteger(cid, tp_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // делаем видимым на всех таймах
        }
      //---
      if(ObjectFind(cid, sl_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, sl_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS);  // делаем невидимым на всех таймах
         ObjectSetInteger(cid, sl_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS); // делаем видимым на всех таймах
        }
      //---
      if(ObjectFind(cid, vol_rctngl) > -1) // объект существует
        {
         ObjectSetInteger(cid, vol_rctngl, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS); // делаем невидимым на всех таймах
         ObjectSetInteger(cid, vol_rctngl, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);// делаем видимым на всех таймах
        }
      ChartRedraw(cid);// перерисовка графика для применения изменений
     }
  }
//+------------------------------------------------------------------+
 

J'écris un EA qui, de temps en temps, doit effectuer plusieurs cycles longs de recalculs différents (par exemple toutes les 12, 24, 48 heures). Chacun de ces recalculs prend 1,5 à 2 heures sur un cœur (c'est-à-dire dans un seul thread) - et bien sûr, cela arrête le traitement des nouveaux ticks et le trading avec cet EA.

... Ces calculs peuvent être délégués à un autre EA dans un autre thread et les données finales peuvent être transférées entre les EA à l'aide dela fonction EventChartCustom et du gestionnaire d'événement OnChartEvent.


Mais j'ai besoin de pouvoir publier l'EA sur la place de marché - donc déléguer les recalculs et les recalculs dans le même fil n'est pas adapté. Existe-t-il un analogue de la bibliothèque thread du C++ ou une autre version pour implémenter une telle EA spécifique dans MQL5 ? (J'ai entré le mot "thread" avec le filtre "documentation" dans le moteur de recherche du site et il n'y a rien).

 
Oleg Remizov:

J'ai pris note de votre suggestion, mais j'ai eu des scintillements lors de la suppression et du redessin d'un objet.

La méthode proposéepar Artyom Trishkin fonctionne réellement !

Désormais, il n'y a plus de redessin ni de scintillement de l'objet et il reste surtout visuellement stable.

D'ailleurs, dans mon cas, c'était aussi un panneau de négociation qui était bloqué par des flèches pour les transactions ouvertes et fermées.

Comment j'ai résolu le problème :

Le fait est que le scintillement est dû au fait que la suppression et le rendu se produisent très souvent, il suffit d'attraper l'apparition de nouveaux objets. Si la méthode fonctionne, j'en tiendrai bien sûr compte aussi, mais comme la documentation ne mentionne pas une propriété aussi utile, je n'y ai jamais prêté attention.

La question reste cependant posée si vous utilisez votre propre panneau de négociation en conjonction avec un indicateur tiers qui construit également des objets.

 
Maksym Mudrakov:

La question était-elle de choisir sur quelles plages horaires afficher l'objet et sur lesquelles ne pas le faire ?

Disons qu'il y a un panneau de négociation sur le graphique. Ensuite, je construis manuellement des objets (niveaux de négociation, lignes verticales, rectangles).

Tout ce que je construis manuellement sera appliqué au panneau de négociation. Tous les objets sont sur la même échelle de temps.

Et en quoi la "méthode recommandée par les développeurs" est-elle utile dans ce cas ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toutes les questions des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.

Oleg Remizov, 2020.04.26 14:44

Merci.

La méthode s'est réellement avérée efficace et très compacte.

Maintenant, l'objet est visuellement plus haut que tous les autres.


 
Maksym Mudrakov:

Le fait est que le scintillement est dû au fait que la suppression et le rendu se produisent très souvent, vous devez juste attraper l'apparition de nouveaux objets. Si la méthode fonctionne, je l'adopterai bien sûr aussi, mais comme la documentation ne mentionne pas une propriété aussi utile, je n'y ai jamais prêté attention.

La question reste cependant posée si vous utilisez votre propre panneau de négociation en combinaison avec un indicateur tiers qui construit également des objets.

La méthode recommandée par Slava était la seule acceptable. Vous pouvez effectuer une recherche dans ses posts - c'est dans son profil - publications/tous les posts.

Et, oui, en quoi votre méthode de recréation de tous les objets est-elle utile dans la même situation?

 
Artyom Trishkin:

Slava a recommandé cette méthode comme étant la seule la plus appropriée. Vous pouvez effectuer une recherche dans ses posts - c'est dans son profil - publications/tous les posts.

Et, oui, en quoi votre méthode de recréation de tous les objets serait-elle utile dans la même situation?

Je ferais la chose suivante, avec un indicateur tiers, vous devez suivre ObjectsTotal(), et si le plus grand indice de mon objet panneau est inférieur à ObjectsTotal()-1, alors recréer le panneau. Je dois d'abord essayer votre méthode dans toutes sortes de situations, mais pour l'instant je ne vois pas de liberté supplémentaire dans l'utilisation de la visibilité des objets.
 
Artyom Trishkin:

Je ne peux pas construire Meta Trader 5
Raison: