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

 
igorbel:

input datetime test                                =0;

Compilez. Avec une date zéro de 1970.01.01, il n'est pas possible de régler l'heure sur 00, 01 ou 02 dans les paramètres.

Voici un exemple de saisie de l'heure dans les paramètres de saisie

 
int    total=OrdersTotal();      
for(int i=0;i<total;i++)
        {
         Print("i=",i);
         if(!OrderSelect(i,SELECT_BY_POS))
           {
            Print("order not selected. Error=",GetLastError());
            continue;
           }
         if(OrderMagicNumber()!=magic_number)
           {
            Print("magic number not correct.");
            continue;
           }
         if(OrderSymbol()!=Symbol())
           {
            Print("symbol not correct.");
            continue;
           }
         if(OrderType()!=OP_SELL)
           {
            Print("order type not correct.");
            continue;
           }
         if(OrderCloseTime()>0)
           {
            Print("order close time not correct.");
            continue;
           }
         if(!OrderClose(ticket,lots,price,slippage,clrClose))
              {
               Print("order Sell with ticket=",ticket,", was not closed. Error=",GetLastError());
              }
            else
              {               
               Print("order Sell with ticket=",ticket,", was closed.");
              }
        }

Pourquoi est-ce que je reçois une erreur 4051 dans OrderSelect()? Le premier ordre ouvert est fermé correctement, sur le second ordre non sélectionné. Erreur=4051. Valeur valable 2 au total.

 
igorbel:

Pourquoi est-ce que je reçois une erreur 4051 dans OrderSelect() ? Le premier ordre ouvert est fermé correctement, sur le second ordre non sélectionné. Erreur=4051. Valeur valable 2 au total.

Lors de la suppression et de la fermeture, la boucle doit être inversée :

for(int i=total-1;i>=0;i--)
 
igorbel:

Un insecte merveilleux ou autre.

Ajout des entrées :

input datetime test                                =0;

Compilez. Avec la date 1970.01.01 zéro, il n'est pas possible de régler l'heure sur 00, 01 ou 02 dans les réglages.

la variable d'entrée ne peut pas être modifiée dans l'EA
variable externe - oui

 
Taras Slobodyanik:

La variable d'entrée ne peut pas être modifiée dans l'EA
la variable externe - vous pouvez


Pas dans le code EA. Dans la fenêtre des paramètres d'entrée, lorsque vous attachez l'EA au graphique.

 
Artyom Trishkin:

Le cycle doit être inversé lors de la suppression et de la fermeture :


Merci.

 

Bonjour, veuillez répondre à ces questions (2) :

1. Existe-t-il un tel EA, sauvegarder les résultats des tests par historique dans un fichier excel. Par exemple, j'ai testé un EA et je veux obtenir les paramètres de l'EA, y compris le profit, le type de transaction, le résultat, les JOURS DE LA SEMAINE et ainsi de suite.

J'aimerais aussi savoir comment faire une analyse détaillée ou partager mon expérience sur la façon de tester un EA et de voir s'il est valable ou totalement merdique.

2. Comment passer un tableau ou une structure à une fonction ? Par exemple, j'ai beaucoup de variables, j'ajoute ces variables à une structure et je la passe à une fonction.

Ensuite, j'ouvre cette structure dans cette fonction et j'obtiens les variables dont j'ai besoin. Ceci est fait pour éviter de "glisser" toutes les valeurs des variables dans une fonction (par commodité).

Merci.

 
rabanik:

Bonjour, veuillez répondre à ces questions (2) :

1. Existe-t-il un tel EA, sauvegarder les résultats des tests par historique dans un fichier excel. Par exemple, j'ai testé un EA et je veux obtenir les paramètres de l'EA, y compris le profit, le type de transaction, le résultat, les JOURS DE LA SEMAINE et ainsi de suite.

J'aimerais aussi savoir comment faire une analyse détaillée ou partager mon expérience sur la façon de tester un EA et de voir s'il est valable ou totalement merdique.

2. Comment passer un tableau ou une structure à une fonction ? Par exemple, j'ai beaucoup de variables, j'ajoute ces variables à une structure et je la passe à une fonction.

Ensuite, j'ouvre cette structure dans cette fonction et j'obtiens les variables dont j'ai besoin. Ceci est fait pour éviter de "glisser" toutes les valeurs des variables dans une fonction (par commodité).

Merci.

La réponse est ici.

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("a и b после вызова:",a," ",b);
  }
//+------------------------------------------------------------------+
//--- результат выполнения скрипта
//  a и b перед вызовом: 14 8
//  a и b после вызова: 28 4
Передача параметров - Функции - Основы языка - Справочник MQL4
Передача параметров - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Передача параметров - Функции - Основы языка - Справочник MQL4
 

Messieurs !

Veuillez m'aider à comprendre le problème.

J'ai utilisé un opérateur switch(int err)

J'ai reçu un message

int ErrorDescription()

{

Alert("beg ErrorDescription")


switch(err)

{

cas 0 : err="Aucune erreur" ; pause ;

cas 1 : err="Aucune erreur, mais résultat inconnu" ; rupture ;

cas 2 : err="Erreur générale" ; rupture ;

cas 3 : err="Paramètres erronés" ;

Quoi de neuf, je n'arrive pas à savoir où le point-virgule est censé être ? Ce n'est pas clair...

 
buyanov:

Messieurs !

Veuillez m'aider à comprendre le problème.

J'ai utilisé un opérateur switch(int err)

J'ai reçu un message

int ErrorDescription()

{

Alert("beg ErrorDescription")


switch(err)

{

cas 0 : err="Aucune erreur" ; pause ;

cas 1 : err="Aucune erreur, mais résultat inconnu" ; rupture ;

cas 2 : err="Erreur générale" ; rupture ;

cas 3 : err="Paramètres erronés" ;

Quoi de neuf, je n'arrive pas à savoir où le point-virgule est censé être ? Ce n'est pas clair...

Vous êtes-vous occupé de Alert()? Où est " ;" ?

int ErrorDescription()
  { 
   Alert("beg ErrorDescription");   // где у вас ";" ???
   switch(err)
   {    
      case 0:   err="Нет ошибок";                                                     break;
      case 1:   err="Нет ошибки, но результат неизвестен";                            break;
      case 2:   err="Общая ошибка";                                                   break;
      case 3:   err="Неправильные параметры";        
Et pourquoi donnez-vous un fragment à la fonction ?
Raison: