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

 
Merci, les gars.
 
A.Vakutin:

S'il vous plaît, partagez, qui sait et sait comment interdire à un EA de vendre après le déclenchement d'un stop ?

// Оставанивливает работу всех советников, если сработал SL.

#include <MT4Orders.mqh>      // https://www.mql5.com/ru/code/16006
#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

void OnTrade()
{
  static int PrevTotal = OrdersHistoryTotal();
  const int Total = OrdersHistoryTotal();
  
  for (int i = Total - 1; i >= PrevTotal; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL))
    {
      long Chart = ChartFirst();
  
      while (Chart != -1)
      {
        if ((Chart != ChartID()) && EXPERT::Is(Chart))
          EXPERT::Remove(Chart);
  
        Chart = ChartNext(Chart);
      }

      break;
    }        
    
  PrevTotal = Total;
}
 

Bonsoir, utilisateurs du forum !

Un dilemme s'est posé.

J'avais une transaction et je l'ai stockée dans une variable

datetime now=TimeCurrent();

Quelque temps plus tard, un événement s'est produit et je stocke l'heure dans une variable

datetime now2=TimeCurrent();

Comment puis-je vérifier si 15 minutes se sont écoulées entre ces événements ?

Je pensais avoir deux variables now et now2 définies en secondes, j'ai essayé de prendre la différence et elle devrait être supérieure à 700 secondes.

 if(now2-now>700)

MAIS cela ne fonctionne pas((

Je demande l'aide de la communauté !

 
ISL:

Bonsoir, utilisateurs du forum !

Un dilemme s'est posé.

J'avais une transaction et je l'ai stockée dans une variable

Quelque temps plus tard, un événement s'est produit et je stocke l'heure dans une variable

Comment puis-je vérifier si 15 minutes se sont écoulées entre ces événements ?

Je pensais avoir deux variables now et now2 définies en secondes, j'ai essayé de prendre la différence et elle devrait être supérieure à 700 secondes.

MAIS cela ne fonctionne pas((

Aidez la communauté !

La variable datetime est représentée sous forme de date et d'heure. Vous pouvez résoudre le problème différemment, par exemple en représentant 700 (bien que 15 minutes correspondent à 900 secondes) dans le type datetime.

if(now2-now>(datetime)700)

ou vice versa, représentent des variables de type int

if(int(now2-now)>700)

ou comme ceci

if((int)now2-(int)now>700)
Quoi qu'il en soit, nous devons vérifier...
 
Alexey Viktorov:

La variable datetime est représentée par la date et l'heure. Vous pouvez résoudre le problème de différentes manières, par exemple en représentant 700 (bien que 15 minutes correspondent à 900 secondes) comme datetime.


La soirée arrive)))

 
ISL:

La soirée se fait sentir)))

Ouais... Il m'a fallu une heure et demie pour connecter la fonction de l'inluder...

 
Vladimir Karputov:

Connectez la classe de trading standard CTrade
(elle est fournie en standard avec le terminal)

et appeler deux méthodes :

SetTypeFillingBySymbol

Définit le type de commande en fonction du symbole spécifié.

SetMarginMode

Définit le mode de calcul de la marge en fonction des paramètres actuels du compte.

Vladimir, bonsoir, pourriez-vous me conseiller s'il vous plaît de faire une fonction qui calcule le pourcentage de profit Je veux calculer le volume négocié mais je n'arrive pas à le faire correctement, je pense que je dois identifier l'ordre avec la direction out et les utiliser pour calculer le volume

double ALL_PROFIT(int rezult)
  {
   HistorySelect(0,TimeCurrent());
   double   rez=0.0;
   double   alprof=0.0;
   uint     total=HistoryDealsTotal();
   for(uint i=0;i<=total;i++) 
     {
      if(m_ticket.SelectByIndex(i))
        {
         if(m_ticket.Magic()==Mg)
           {
            alprof+=(m_ticket.Profit()+m_ticket.Swap()+m_ticket.Commission());
            rez=alprof;
            if(rezult==1 && alprof!=0.00){rez=alprof/(AccountInfoDouble(ACCOUNT_BALANCE)-alprof)*100;}
            if(rezult==2){rez+=m_ticket.Volume();}      
           }
        }
     }
   return(NormalizeDouble(rez,2)); 
  }
à propos, le nombre de positions fermées est aussi un problème pour savoir combien d'entre elles ont été négociées.
 
TYRBO:

Vladimir, bonsoir, pourriez-vous suggérer une fonction qui calcule le pourcentage de profit, je veux calculer le volume négocié et cela ne fonctionne pas correctement, je pense que je dois identifier l'ordre avec la direction out et avec eux pour calculer le volume.

Je ne comprends rien, toutes les lettres sont empilées. Faites passer votre code par le styliste de code.

 
TYRBO:

Vladimir, bonsoir, pourriez-vous suggérer une fonction qui calcule le pourcentage de profit, je veux calculer le volume négocié et cela ne fonctionne pas correctement, je pense que je dois identifier l'ordre avec la direction out et avec eux pour calculer le volume.


d'ailleurs, c'est aussi un problème avec le nombre de positions fermées

Veuillez envoyer le code correctement. Je vous ai déjà corrigé une fois et mis le code correctement.

 
TYRBO:

Vladimir, bonsoir, pourriez-vous suggérer une fonction qui calcule le pourcentage de profit, je veux calculer le volume négocié et cela ne fonctionne pas correctement, je pense que je dois identifier l'ordre avec la direction out et avec eux pour calculer le volume.

d'ailleurs, le nombre de positions fermées est aussi un problème

J'ai soumis votre code correctement pour la troisième fois. Je me demande combien d'essais il nous reste à faire. :)