Questions des débutants MQL4 MT4 MetaTrader 4 - page 220

 
Hé ! Les gars, aidez-moi ! Je n'arrive pas à trouver une fonction. Le conseiller expert ouvre une position par jour (entre 00:00 et 23:59), c'est-à-dire un jour, un ordre. La tâche consiste à trouver la série de pertes continues et à l'afficher dans le journal (en utilisant la commande Print(), pour imprimer une fois). Le nombre d'éléments de la série est saisi au clavier (par exemple, si vous avez saisi 5 au clavier, et que la série de 4 jours perdants, nous l'ignorons --> attendons l'occurrence de 5 jours ou plus). Une série est considérée comme telle si les jours de perte sont consécutifs ou si les ordres sont fermés le même jour (ils sont ouverts une fois par jour, et les ordres au marché peuvent "pendre" pendant plus d'un jour). Par exemple, dans le journal, il devrait y avoir les séries de pertes suivantes : 01.05, 02.05, 03.05, 04.05, 05.05. Condition importante : reconnaître la série (et par conséquent la sortir dans le journal), qui est supérieure ou égale à la valeur entrée depuis le clavier (extern).
//
Personnellement, j'ai l'idée suivante :
1. Fiya remplit le tableau des ordres perdants avec leurs valeurs de clôture ( Mass[i] = OrderCloseTime() ;). Autrement dit, le tableau ne stocke que les dates et heures de clôture des ordres perdants
2. Nous commençons à comparer l'élément à la position i et à la position i-1 (2 adjacents)
2.1 nous les comparons en convertissant les données de la cellule en jour de l'année ( TimeDayOfYear(Mass[i]) et TimeDayOfYear(Mass[i-1])
2.(Supposons que le premier jour perdant = 178, et le précédent = 176 --> pas de série, car ils ne sont pas consécutifs, par contre si le premier = 178, et le second 177 --> on a une série)
2.3 Avec la boucle for on regarde toutes les cellules du tableau et on compare ses voisins. S'il y a une série de pertes sur desélémentsvoisinsdu tableau--> on commence à compresser jusqu'à ce que 1.on n'ait pas encore atteint lenombreminimum requis de jours perdants pour la considérer comme une série. 2. (si le point 1 est rempli) AVANT que la série ne s'arrête.
2.4 L'ARRÊT DE LA SÉRIE --> mémoriser l'indice de l'élément du tableau où elle s'est terminée et mémoriser le nombre d'éléments de la série (la série peut être == OU supérieure à la valeur entrée au clavier)
3. ---- c'est ici que commence le problème de la réalisation---
3.1 Nous devrions "reculer" d'une manière ou d'une autre dans une série de jours perdus, en connaissant la date de chaque élément, traduire la date de datetime --> chaîne de caractères,
3.11 remplir la chaîne de caractères ( je ne sais pas, peut-être par StringAdd() ?), et la sortir dans le fichier LOG (pas des millions de fois, juste une)

L'algorithme de l'Expert Advisor n'est pas important, l'important c'est la fonction de l'utilisateur elle-même

Pour l'amour de Dieu, aidez-nous !))
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
Dossiers :
 
Bonjour. Je me suis inscrit pour le signal. Mais après quelques jours, le pourcentage d'augmentation totale de quelques centaines n'était plus que de 58%. Les pourcentages des mois précédents ont perdu leur couleur bleue et sont devenus gris. Pourquoi cela se produit-il ? Quelle pourrait être la raison ?
Dossiers :
 
Maestro8:
Bonjour. Je me suis inscrit pour le signal. Mais après quelques jours, le pourcentage d'augmentation totale de quelques centaines de personnes n'était que de 58%. Les pourcentages des mois précédents ont perdu leur couleur bleue et sont devenus gris. Pourquoi cela se produit-il ? Quelle pourrait être la raison ?

Vous avez signé pour un énième diviseur de dépôt. Vous voyez la ligne verticale sur le graphique à gauche de la 76e transaction ? Cette ligne indique le moment où vous vous êtes connecté au monitoring. Avant la connexion à la surveillance, ce compte a été "retiré" de plusieurs dizaines d'autres comptes qui n'ont pas une si belle image (ils ont été vidés en toute sécurité). Le dépôt avec de beaux indicateurs est connecté au suivi et reçoit de l'argent des nouveaux arrivants qui aiment les belles images. Ne croyez donc pas les indicateurs qui ont été obtenus avant de rejoindre le suivi.

 

Une copie d'une instance de la classe.

Si je fais cette mission :

Cl1 = Cl2;

puis lorsque je change ensuite Cl1, Cl2 change aussi.

Donc, évidemment, l'affectation est juste une référence.

Mais j'ai besoin d'enregistrer une instance d'une classe qui stockerait toutes les propriétés qui lui ont été données au moment de l'affectation.

Comment faire ?

 
Evgeny Potapov:

Une copie d'une instance de la classe.

Si je fais cette mission :

puis lorsque je change ensuite Cl1, Cl2 change aussi.

Donc, évidemment, l'affectation est juste une référence.

Mais j'ai besoin de conserver une instance d'une classe qui stocke toutes les propriétés qui lui ont été attribuées au moment de l'affectation.

Comment faire ?

Vous le faites probablement :

CClass* cl1=new CClass;
CClass* cl2=cl1;

et tu as besoin de ça.

CClass cl1;
CClass* _cl1=new CClass;
CClass cl2=cl1;
CClass _cl2=_cl1;
CClass* cl3=new CClass(cl1);
CClass* cl4=new CClass(_cl1);

Vous avez besoin d'un constructeur de copie :

class CClass{
public:
   CClass(){}
   CClass(CClass &mOther){this=mOther;}
};
 
Vladimir Simakov:

Vous avez besoin d'un constructeur de copie :

Merci !

Je vais essayer, mais le fonctionnement n'est pas clair.

S'il passe la référence de la copie à la classe copiée, quelle différence cela fait-il ?

Les deux feront-ils à nouveau référence l'un à l'autre ?

 
Evgeny Potapov:

Merci !

Je vais essayer, mais le fonctionnement n'est pas clair.

S'il transmet à la copie une référence à la classe copiée, quelle différence cela fait-il ?

Se référeront-ils à nouveau l'un à l'autre ?

Non, ils ne le feront pas. Il s'agit d'un nouvel objet. Et dans le constructeur, il suffit de remplir les champs. Il n'y a rien à ce sujet dans l'aide locale (bien que je puisse me tromper), alors lisez comment tout est fait en C++ et faites des corrections pour les réalités locales. Bonne chance)

 
Vladimir Simakov:

Ils ne le feront pas. Il s'agit d'un nouvel objet. Et dans le constructeur, il suffit de remplir les champs. Il n'y a rien à ce sujet dans l'aide locale (bien que je puisse me tromper), donc lisez comment c++ fait tout cela et faites des ajustements pour les réalités locales. Bonne chance)

Oui, c'est comme ça que ça marche.

Merci !

Il serait intéressant que les auteurs nous expliquent comment cela fonctionne :

{this=mOther;}

Pourquoi y a-t-il un transfert par valeur alors que l'on s'attendrait à ce qu'une référence soit transférée ?

Heureusement, une telle construction de copie est possible !

 

Bonjour !

Pouvez-vous me dire pourquoi, dans mon MT4, je ne peux pas définir le take et le stop loss avec ma souris à partir du point d'entrée de la position ?

Je dois peut-être ajuster quelque chose, mais je ne comprends pas ce que c'est, aidez-moi s'il vous plaît.

 
from_Reva:

Bonjour !

Pouvez-vous me dire pourquoi, dans mon MT4, je ne peux pas définir le take et le stop loss avec ma souris à partir du point d'entrée de la position ?

Je dois peut-être configurer quelque chose, mais je ne comprends pas ce que c'est, aidez-moi s'il vous plaît.

Essayez de maintenir la touche "Alt" de votre clavier et de faire glisser

Raison: