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

 
Tigerfreerun:
Si (OP_BUY==0)

Pourquoi vous induisez en erreur ? Soit vous ne vous connaissez pas vous-même, alors gardez votre ignorance en dehors d'un fil d'AIDE, soit vous plaisantez et avez oublié que vous vous trouvez dans un fil d'aide pour débutants.

SanNneK:
voici la condition si tous les ordres sont nulsif(OrdersTotal()==0). et quelle condition écrire s'il y a zéro baies ?

Nous devons passer en boucle toutes les commandes et calculer le nombre de commandes avec OrderType()==ORDER_TYPE_BUY

 
Artyom Trishkin:

Pourquoi vous induisez en erreur ? Soit vous ne savez pas, alors veuillez garder votre ignorance en dehors d'un fil d'AIDE, soit vous plaisantez, mais vous avez oublié que vous êtes dans un fil d'aide pour débutants.

J'ai besoin de parcourir en boucle toutes les commandes et de calculer le nombre de commandes avec OrderType()==ORDER_TYPE_BUY.

Ecoutez, écoutez. Je vous serais reconnaissant de bien vouloir m'aider avec la fonction que j'ai mentionnée sur la page précédente. J'utilise moi-même cette fonction pour le comptage des commandes :

int Count(int type,string sy)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {if(sy==OrderSymbol() && OrderMagicNumber()==Magic && (type==-1 || OrderType()==type)) count++;}
     }
   return(count);
  }
 
Tigerfreerun:

Ecoutez, écoutez. Je vous serais reconnaissant si vous pouviez m'aider avec la fonction dont j'ai parlé sur la dernière page. J'utilise moi-même cette fonction pour compter les commandes :

De quel type d'aide avez-vous besoin ? C'est tout à fait une fonction de travail dans le style de Kim.
 
Alexey Viktorov:
De quelle aide avez-vous besoin ? C'est tout à fait une fonction de travail dans le style de Kim.

Sur la dernière page j'ai écrit une fonction avec une erreur position de départ incorrecte 0 pour lafonction ArraySort.Et une demande d'explication de la fonction. Je fais double emploi

void MaxMinProfit()
{
int i, N, MaxTic, MinTic;
double   MinProf=0, MaxProf=0, OP, g, a[][2];
string MinSym, MaxSym;
ArrayResize(a, 0);
 
for (i=OrdersTotal()-1; i>=0; i--) 
  {    
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
    { 
     if (OrderType()==OP_SELL ||  OrderType()==OP_BUY )
      {
       OP = NormalizeDouble(OrderProfit()+OrderSwap()+OrderCommission(),2);
       
      if (MinProf>OP) 
      {
       
          MinProf=OP;
          MinTic=OrderTicket();
          MinSym=OrderSymbol();
          
         }
         
      if (OP>0) 
      {
       
          N++;
            ArrayResize(a, N);
            a[N-1][0]=OP;
            a[N-1][1]=OrderTicket();
          
         }
         
         }
         }
         
         }
         
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);//MODE_ASCEND);
      
      for (i=0; i<Level; i++) 
       {
     
     g+=a[i][0];
     //int ti=a[i-2][1];
     }
         
         
     
     if(MinProf <0 && (g+MinProf)>=ProcMax)
      {
       for (i=0; i<Level; i++) 
       {
       if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
        {
        //Alert(a[i][1]);
         if (OrderType()== OP_BUY)
         {
          OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
           OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }
         }
          
          
          
          if (OrderSelect(MinTic, SELECT_BY_TICKET, MODE_TRADES))
        {
         if (OrderType()== OP_BUY)
         {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }}       
return;
}
 

Quelle est la meilleure façon de transmettre des paramètres entre des éléments de classe, qui sont à leur tour des éléments de classe ?

Étant donné :

class element{
public:
int a;
        void fnc(){
        a++;            
        }
};

class elementBase{
public:
	 int b;
        element one;
        element two;
};

Existe-t-il un moyen de modifier la valeur de two.a à partir de la fonction a.fnc() ?


Dans mon problème, les variables de la classe deux doivent être recalculées lorsque les éléments de la classe un sont modifiés. (Pouvez-vous me dire comment le faire gentiment ?)

Existe-t-il un moyen d'obtenir la valeur de b à partir de la classeelementBase ?

 
Tigerfreerun:

Sur la dernière page j'ai écrit une fonction avec une erreur position de départ incorrecte 0 pour lafonction ArraySort.Et une demande d'explication de la fonction. Duplicate

La direction à prendre : si le profit est inférieur à zéro... quelle sera la taille du tableau pendant le tri ? ???

Quelle sera la taille du tableau s'il n'y a aucune commande ???
 
Alexey Viktorov:

Sens de la réflexion : Si le bénéfice est inférieur à zéro... quelle sera la taille du tableau lors du tri ???

Et quelle sera la taille du tableau s'il n'y a pas d'ordres du tout ???
Je ne comprends pas vraiment ce que fait exactement cette fonction. Mais, comme l'auteur l'a mentionné, ma tâche consiste à faire chevaucher les ordres perdants avec les ordres rentables entre les symboles. Je serais heureux si vous pouviez m'aider à corriger et à comprendre cette fonction.
 
Tigerfreerun:
Je ne comprends pas vraiment ce que fait exactement cette fonction. Mais comme l'a dit l'auteur, sa tâche consiste à faire se chevaucher les ordres perdants avec les ordres rentables entre les symboles. Je serais heureux si vous pouviez m'aider à réparer et à comprendre la fonction

Quelles sont vos erreurs de compilation ? Montrer une capture d'écran.

Il n'y a pas d'erreurs dans le code, mais il y a quelques défauts mineurs qui n'affectent pas la fonctionnalité.

 
Vitaly Muzichenko:

Quelles sont vos erreurs de compilation ? Montrer une capture d'écran.

Il n'y a pas d'erreurs dans le code, mais il y a quelques bugs mineurs qui n'affectent pas les performances.

Lors de l'exécution du robot "incorrect start position 0 for ArraySortfunction." Pourriez-vous expliquer cette fonction, je comprendrai peut-être ce qui ne va pas...
Dossiers :
yOXZsAXZ-X4.jpg  479 kb
Pe3JLH8tgCc.jpg  556 kb
 
Tigerfreerun:
Lorsque le robot démarre "position de départ 0 incorrecte pour lafonctionArraySort", pouvez-vous expliquer cette fonction, je comprendrai peut-être ce qui ne va pas...

Eh bien, vous avez montré les erreurs non critiques.

Comment fonctionne la fonction, vous y avez répondu vous-même :

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

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

Tigerfreerun, 2018.09.06 21:53

Je ne comprends pas vraiment ce que fait exactement cette fonction. Mais comme l'auteur l'a dit - la tâche consiste à faire chevaucher les ordres perdants avec les ordres rentables entre les symboles. Je serais heureux si vous pouviez m'aider à corriger et à comprendre cette fonction.