[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 174

 
chief2000:

La question n'est plus de savoir comment écrire le code, mais au niveau d'une idée - est-il possible d'éviter les boucles multiples,

ce qui fait peser une lourde charge sur le processeur. Par exemple, il y a eu une idée de suivre le nombre d'ordres STOP ouverts - s'il a diminué d'une unité, mais que l'ordre n'a pas été supprimé => ouvrir un ordre au marché =>.

son heure d'ouverture et son type doivent être placés dans un tableau. Quelque chose comme ça.

Toutes les idées sont les bienvenues.


Il suffit de dupliquer toutes les propriétés des ordres de marché dans des tableaux et de les comparer aux ordres de marché actuels. Comparez-les par ticket et s'il n'y a pas de correspondance par type d'ordre, cela signifie que l'ordre en attente s'est déclenché, s'il n'est pas trouvé dans le tableau, il est passé dans l'historique, etc.

Peut s'avérer utile https://www.mql5.com/ru/code/9366

 

Bonjour.

Je demande vraiment un code comparant les deux dernières fractales (soit vers le haut, soit vers le bas).

Pour moi, c'est toujours une région sauvage.

Merci d'avance.

 

COMMENT CALCULER LE NOMBRE DE POSITIONS LONGUES RENTABLES ET SÉPARÉMENT LE NOMBRE DE POSITIONS COURTES RENTABLES DANS LE PROCESSUS DE TRAVAIL D'UNE EA ?

La stratégie est la suivante : si le nombre de positions longues rentables depuis le début de l'EA (ou mieux, sur l'ensemble de l'historique du compte) est supérieur au nombre de positions courtes, alors seules les positions longues doivent être autorisées à être ouvertes. Et vice versa.

La façon de compter ces transactions, si elles sont fermées par le conseiller expert, est claire : fermer - compté. Mais si une position est fermée par le TP ou le SL, alors ... ?

Peut-être que quelqu'un a un code prêt de la fonction ?

 
splxgf:

Dupliquez uniquement toutes les propriétés des ordres de marché dans des tableaux et comparez-les aux ordres de marché actuels. Comparez par ticket, s'il y a un décalage par type d'ordre, cela signifie que l'ordre en attente s'est déclenché, s'il n'est pas trouvé dans le tableau, cela signifie qu'il est passé en historique, etc.

Peut être utile https://www.mql5.com/ru/code/9366

Merci !

 
nemo811:

Bonjour.

Je demande vraiment un code comparant les deux dernières fractales (soit vers le haut, soit vers le bas).

Pour moi, c'est encore une région sauvage.

Merci d'avance.

Dans le cas simple, quelque chose comme :

      Fractal_Up[i+3]   = iFractals(NULL, 0, MODE_UPPER, i+3);
      Fractal_Down[i+3] = iFractals(NULL, 0, MODE_LOWER, i+3);


      if(Fractal_Down[i+3]>0) {
         Fractal_Sell_Low_3  = Fractal_Sell_Low_2;
         Fractal_Sell_Time_3 = Fractal_Sell_Time_2;

         Fractal_Sell_Low_2  = Fractal_Sell_Low_1;
         Fractal_Sell_Time_2 = Fractal_Sell_Time_1;

         Fractal_Sell_Low_1  = Fractal_Down[i+3];
         Fractal_Sell_Time_1 = Time[i+3];
      }


      if(Fractal_Up[i+3]>0) {
         Fractal_Buy_Up_3   = Fractal_Buy_Up_2;
         Fractal_Buy_Time_3 = Fractal_Buy_Time_2;

         Fractal_Buy_Up_2   = Fractal_Buy_Up_1;
         Fractal_Buy_Time_2 = Fractal_Buy_Time_1;

         Fractal_Buy_Up_1   = Fractal_Up[i+3];
         Fractal_Buy_Time_1 = Time[i+3];
      }
 
chief2000:

Merci - nous allons examiner la question
 
Roger:

En fait, il est absurde de poser de telles questions à un écrivain expert :) Il s'avère que vous n'êtes pas assez mature pour être un débutant, donc si vous voulez vérifier si les stops et les prises calculés sont proches du prix d'ouverture de l'ordre, vous n'apprendrez probablement rien du tout.
Mais bien sûr que non... ))) Les conseils sont bons )))) Mais il a été testé pendant longtemps ! Prend et arrête plus que les valeurs minimales autorisées ... Et tout fonctionne parfaitement dans le testeur ! Mais en mode "live", il ne veut pas ouvrir de positions! Peut-être, cher ROGER, que je ne suis pas encore assez mature pour être un débutant ))))). Mais vous devriez au moins regarder le code que j'ai écrit - si ce n'est pas trop difficile... Vous y trouverez peut-être un bug...
 
7sintez:
Pourquoi pas... ))) Les conseils sont bons )))) Seulement, tout a été testé il y a longtemps ! Prend et arrête plus que les valeurs minimales autorisées ... Et tout fonctionne parfaitement dans le testeur ! Mais en mode "live", il ne veut pas ouvrir de positions ! Peut-être, cher ROGER, que je ne suis pas encore assez mature pour être un débutant ))))). Mais vous devriez au moins regarder le code que j'ai écrit - si ce n'est pas trop difficile... Vous y trouverez peut-être un bug...
J'ai eu un tel bug dans une maison de courtage. Il s'est avéré que nous devions ouvrir un ordre avec TP=0 et SL=0, puis définir les niveaux requis avec OrderModify(). Sinon, l'erreur "Les arrêts sont trop proches" s'affichait en permanence.
 
ikatsko:
J'ai eu un tel problème avec une société de courtage. Il s'est avéré que je devais ouvrir un ordre avec TP=0 et SL=0, puis utiliser OrderModify() pour définir les niveaux requis. Sinon, l'erreur "Les arrêts sont trop proches" s'affichait en permanence.
Merci... ! Peut-être est-ce là le problème... J'ai tout regardé dans mon code - je ne trouve pas l'erreur !!!
 

Je n'ai pas trouvé de réponse dans la recherche

comment puis-je voir à partir du script quels indicateurs sont sur le graphique, quels paramètres et indicateurs, dans quelles sous-fenêtres ils sont situés ?

merci