Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 560

 
Leo59:
Mon conseiller expert, dans deinit() écrit 98496 lignes dans le fichier journal en *.csv.
Pourquoi le déchargement est différent quand l'expert termine dans le testeur :
- dans le cas d'un déchargement à la fin de la date de test tout est normal ( 98496 lignes)
- dans le cas d'un déchargement par le bouton "Stop", seulement environ 10% des données.
Qui sait quel pourrait être le problème ?


Fin forcée de l'Expert Advisor lorsque l'utilisateur lui-même décharge l'Expert Advisor.

il est préférable d'enregistrer les données directement au départ.

 
Roman.:

Les gars, comment interprétez-vous cet avertissement ?

Merci.


doit être définie dans une variable

par exemple bool closee=OrderClose...........

  • Lavaleur de retour de 'OrderSelect' doit être vérifiée.
  • Lavaleur de retour de 'OrderDelete' doit être vérifiée.
  • Lavaleur de retour de 'OrderSend' doit être vérifiée.
  • Lavaleur de retour de 'OrderClose' doit être vérifiée.
  • Lavaleur de retour de 'OrderModify' doit être vérifiée.


pour éviter de tels avertissements, le retour à la variable doit être spécifié explicitement
par exemple comme ceci :
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........
 
Bon après-midi. Pouvez-vous me dire s'il est possible de définir ou de calculer la largeur/hauteur sur un graphique d'un objet OBJ_TEXT?
 
alxm:
Bon après-midi. Pouvez-vous me dire s'il est possible de définir ou de calculer la largeur/hauteur sur un graphique d'un objet OBJ_TEXT ?

Comment calculer le nombre de caractères, + la taille de la police ou quelque chose comme ça ?
 
cipsi:

Comment trouver le OrderOpenPrice du tout premier ordre ouvert s'il est connu :

1.Symbole

2.Les ordres d'achat peuvent être ouverts de un à plusieurs.

3. Magie

4. les différences entre les commandes, probablement par ticket - trouver le plus petit ticket.


double PriceOpenFirstPos(string sy="", int op=-1, int mn=-1) {
  datetime t==0;
  double   r=0;
  int      i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t>OrderOpenTime() || t==0) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
psdmaster:
Lisez l'article sur la création d'une EA: https://book.mql4.com/ru/samples/expert.

Pouvez-vous me dire comment ouvrir une transaction sur une barre et la fermer lorsque la barre suivante apparaît ?


1. Lorsque vous ouvrez une affaire, n'oubliez pas l'heure du bar

comme ça :

en dehors du départ :

 int timeopen;

au début, lorsque vous avez une transaction ouverte :

 timeopen=Time[0];

Fermeture comme ceci :

if(timeopen!= Time[0]) OrderClose............
 
Zolotai:
S'il vous plaît, dites-moi. Comment puis-je connaître le nombre d'ordres ouverts pour un symbole donné, sans boucle...


Il n'y a aucun moyen de le faire sans un cycle.

 

Chérie, j'ai besoin de ton aide.

Je suis en train d'optimiser mon Expert Advisor par l'indicateur, le code de l'indicateur est ci-dessous.

L'optimisation est lente, j'ai fait un code dans l'EA pour recalculer l'indicateur sur une nouvelle barre, ce qui n'est pas tout à fait adapté.

Veuillez voir le code de l'indicateur, ce que l'on peut y faire pour que le recalcul soit plus rapide.

#property indicator_separate_window
#property indicator_buffers 4
#property  indicator_color1 Lime
#property  indicator_color2 Yellow
#property  indicator_color3 Red
#property  indicator_color4 Aqua

//--- input parameters
extern int       Period_MA_1=14;
extern int       p2          =7;
extern int       p3          =5;
extern int       p4          =3;
extern int Limit=70;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,limit2,limit3,limit4;
   double impuls;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
 
   limit1=Bars-counted_bars-1;
   if (limit1>Limit && Limit>0) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
   for(i=limit1;i>=0;i--) {ExtMapBuffer1[i]=Close[i]-Close[i+Period_MA_1];}
   for(i=limit2;i>=0;i--) {ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer1, 0, p2, 0, MODE_EMA,i);}
   for(i=limit3;i>=0;i--) {ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer2, 0, p3, 0, MODE_EMA,i);}
   for(i=limit4;i>=0;i--) {ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer3, 0, p4, 0, MODE_EMA,i);}

   return(0);
  }
 

où puis-je lire sur les classes dans mt4 ?

J'ai lu l'aide, mais elle n'explique pas ce que signifient les lignes suivantes

CArray::CArray(void) : m_step_resize(16),
                       m_data_total(0),
                       m_data_max(0),
                       m_sort_mode(-1)
  {
  }

où lire sur l'initialisation des variables...

 
Vladon:


La fonction doit être définie comme une variable

Par exemple, bool closee=OrderClose...........

  • Lavaleur de retour de 'OrderSelect' doit être vérifiée.
  • Lavaleur de retour de 'OrderDelete' doit être vérifiée.
  • Lavaleur de retour de 'OrderSend' doit être vérifiée.
  • Lavaleur de retour de 'OrderClose' doit être vérifiée.
  • Lavaleur de retour de 'OrderModify' doit être vérifiée.


pour éviter de tels avertissements, le retour à la variable doit être spécifié explicitement
comme ça :
  • bool select1=OrderSelect..........
  • bool delete1=OrderDelete..........
  • bool close1=OrderClose..........
  • bool modify1=OrderModify..........
  • int send1=OrderSend..........


Merci. Cela a fonctionné sans aucun avertissement :


Guidés par un exemple du manuel :-)


OrderDelete

Supprime un ordre en attente précédemment placé.

bool OrderDelete(
int ticket, //numéro de commande
couleur arrow_color // couleur
) ;

Paramètres

billet

[Numéro de série unique de la commande.

couleur de la flèche

[Couleur de la flèche sur le graphique. Si ce paramètre est absent ou si sa valeur est CLR_NONE, la flèche n'apparaît pas dans le graphique.

Valeur retournée

Retourne vrai si la fonction s'est déroulée avec succès ou faux s'il y a eu une erreur. Pour obtenir les informations sur les erreurs, appelez GetLastError().

Exemple :

if(Ask>var1)
{
OrdreDelete(ordre_ticket) ;
retour(0) ;
}

Raison: