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

 

Veuillez m'indiquer à quoi ressemblerait approximativement la conception suivante :

1) Un nouveau tick est généré - la condition est remplie, par exemple, sur ce tick, une indication de modèle sera dessinée et une alerte sera générée.

2) Une fois la condition ci-dessus remplie, il est nécessaire d'arrêter d'effectuer des répétitions multiples de la même action de l'action ci-dessus jusqu'à ce que la période de temps soit égale :

TimeCurrent() <= (time[index] + PeriodSeconds(PERIOD_CURRENT))

3) Dès que la barre passe à la barre suivante, reprenez la condition jusqu'à la prochaine période décrite ci-dessus.

Une telle conception est-elle réaliste ?

 
clickaider:

Veuillez m'indiquer à quoi ressemblerait approximativement la conception suivante :

1) Un nouveau tick est généré - la condition est remplie, par exemple, sur ce tick, une indication de modèle sera dessinée et une alerte sera générée.

2) Une fois la condition ci-dessus remplie, il est nécessaire d'arrêter d'effectuer des répétitions multiples de la même action de l'action ci-dessus jusqu'à ce que la période de temps soit égale :

3) Dès que la barre passe à la barre suivante, reprenez la condition jusqu'à la prochaine période décrite ci-dessus.

Une telle conception est-elle réaliste ?

Vous avez déjà écrit la plupart de la logique vous-même...

 
Artyom Trishkin:

Vous avez déjà écrit la plupart de la logique vous-même...

La logique est peut-être correcte, mais le problème est de trouver la bonne fonctionnalité. Pourriez-vous m'indiquer les fonctions ou les exemples de construction à appliquer pour tenter de résoudre le problème, car je suis plutôt perplexe.

 
clickaider:

La logique est peut-être correcte, mais le problème est de trouver la bonne fonctionnalité. Pourriez-vous m'indiquer les fonctions ou les exemples de conception à utiliser pour tenter de résoudre le problème, car je suis plutôt perplexe.

  1. Un nouveau tick est généré - condition remplie, par exemple, l'indication du motif sera dessinée sur ce tick et une alerte sera générée.
    1. J'ai besoin d'une fonction pour obtenir une condition et définir le drapeau de cette condition pour travailler avec les deux clauses suivantes
    2. Besoin d'une fonction pour dessiner un motif
    3. J'ai besoin d'une fonction pour envoyer une alerte (pas nécessairement une fonction - il existe des fonctions standard pour seulement l'alerte, seulement l'e-mail et seulement le push).
  2. Après que la condition ci-dessus soit remplie, nous devons arrêter l'exécution des répétitions multiples de la même action de l'action ci-dessus jusqu'à une période de temps égale à...
    1. S'il y a un indicateur que trois des étapes ci-dessus du point 1 ont déjà été effectuées, alors ne faites rien - passez au point 3, sinon passez au point 1.
  3. Dès que la barre passe à la suivante, redémarrez la condition jusqu'à la prochaine période décrite ci-dessus.
    1. Nous avons besoin d'une fonction pour définir une nouvelle barre. Dès qu'une nouvelle barre a été définie, passez au point 1, sinon passez au point 2.
 

Aidez-moi, s'il vous plaît.

J'ai une liste d'enum.

enum ENUM_Target_NAME 
  {
   arr_Buy,
   arr_Sell,
   arr_Svod,
   arr_Regr,
   arr_200,
   arr_100,
   Target_25_iD,
   Target_50_iD,
  };
input ENUM_Target_NAME Target=ENUM_Target_NAME(5);

J'ai besoin que les valeurs deviennent une chaîne de caractères, c'est-à-dire qu'elles deviennent un texte. Cette approche ne fonctionne pas.

(string)Target

Je reçois simplement le numéro d'une valeur variable de la liste, et j'ai besoin du texte - le nom réel de la liste, par exemple, "arr_100".

Comment faire ?

 
Aleksey Vyazmikin:

Aidez-moi, s'il vous plaît.

J'ai une liste d'enum.

J'ai besoin que les valeurs deviennent une chaîne de caractères, c'est-à-dire qu'elles deviennent un texte. Cette approche ne fonctionne pas.

Je reçois simplement le numéro d'une valeur variable de la liste, et j'ai besoin du texte - le nom réel de la liste, par exemple, "arr_100".

Comment faire ?

EnumToString()

 
Artyom Trishkin:

EnumToString()

Merci !

 
Nauris Zukas:

Pouvez-vous me donner un lien vers la documentation sur la signification de ces symboles <>?

Il s'agit d'une méthode de modèle. Le type du paramètre qu'il contient sera adapté en fonction du type passé entre ces crochets. Le type est déterminé de manière statique au moment de la compilation du programme. Vous pouvez en savoir plus à ce sujet dans la rubrique "modèles de fonctions et de classes": https://www.mql5.com/ru/docs/basis/oop/templates.

Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
  • www.mql5.com
Перегруженные функции обычно используются для выполнения похожих операций над различными типами данных. Простой пример такой функции в MQL5 - ArraySize(), которая возвращает размер массива любого типа. На самом деле эта системная функция является перегруженной, и вся реализация такой перегрузки спрятана от разработчика программ на MQL5: То есть...
 
Nauris Zukas:

Bonjour, j'ai réalisé un .mqh pour le traitement et le stockage des données dans la ressource. Tout fonctionne, mais il y a une nuance, si je compile l'indicateur, le .mqh est réinitialisé et refait le processus de pondération pour le stockage. Cible - tant qu'il y a des données dans la ressource , elle n'est pas réinitialisée. Où se trouve l'erreur, comment la réparer ?

Les ressources sont conçues pour contenir des données statiques (permanentes) immuables. Votre tâche est de télécharger un fichier avec des données et de changer les données dans la mémoire de l'indicateur et de sauvegarder les nouvelles données dans le fichier, ainsi après le redémarrage et la recompilation de l'indicateur vous téléchargerez de nouvelles données. Les ressources ne permettront pas d'y parvenir.

 
Vasiliy Sokolov:

Les ressources sont conçues pour contenir des données statiques (constantes) et non modifiables. Pour votre tâche, vous devez charger un fichier avec des données, changer ces données dans la mémoire de l'indicateur et sauvegarder le poids des nouvelles données dans le fichier, de sorte qu'après avoir rechargé et recompilé l'indicateur, vous puissiez charger de nouvelles données. Les ressources ne permettront pas d'y parvenir.

Je vois, merci !