Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1155

 
igorbel:

input datetime test                                =0;

Kompilieren. Bei einem Null-Datum von 1970.01.01 ist es nicht möglich, die Stunde in den Einstellungen auf 00, 01 oder 02 zu setzen.

Hier ein Beispiel für die Eingabe der Uhrzeit in die Eingabeparameter

 
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.");
              }
        }

Warum erhalte ich einen Fehler 4051 in OrderSelect()? Der erste offene Auftrag wird korrekt geschlossen, der zweite Auftrag nicht ausgewählt. Fehler=4051. Gültiger Wert 2 insgesamt.

 
igorbel:

Warum erhalte ich einen Fehler 4051 in OrderSelect()? Der erste offene Auftrag wird korrekt geschlossen, der zweite Auftrag nicht ausgewählt. Fehler=4051. Gültiger Wert 2 insgesamt.

Beim Löschen und Schließen sollte die Schleife umgekehrt werden:

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

Irgendein wundersamer Käfer oder so.

Hinzufügen der Eingaben:

input datetime test                                =0;

Kompilieren. Mit dem Datum 1970.01.01 Null ist es nicht möglich, die Stunde in den Einstellungen auf 00, 01 oder 02 zu setzen.

Eingabevariable kann im EA nicht geändert werden
externe Variable - ja

 
Taras Slobodyanik:

Die Eingangsvariable kann im EA nicht geändert werden
die externe Variable - Sie können


Nicht im EA-Code. Im Eingabeparameter-Fenster, wenn Sie den EA mit dem Chart verbinden.

 
Artyom Trishkin:

Der Zyklus sollte beim Löschen und Schließen umgekehrt werden:


Dankeschön

 

Guten Tag, bitte helfen Sie mir bei diesen Fragen (2):

1. Gibt es einen solchen EA, der die Ergebnisse der Tests in einer Excel-Datei speichert. Ich habe z.B. einen EA getestet und möchte die Parameter des EA, den Gewinn, die Art des Handels, das Ergebnis, die Wochentage und so weiter abfragen.

Ich würde auch gerne wissen, wie man detaillierte Analysen durchführt oder meine Erfahrungen damit teilen, wie man einen EA testet und sieht, ob er sich lohnt oder totaler Mist ist.

2. Wie kann ich ein Array oder eine Struktur an eine Funktion übergeben? D.h. ich habe eine Menge Variablen, füge diese Variablen zu einer Struktur hinzu und übergebe sie an eine Funktion.

Dann öffne ich diese Struktur in dieser Funktion und erhalte die Variablen, die ich brauche. Dies geschieht, um zu vermeiden, dass alle Werte von Variablen in eine Funktion "gezogen" werden (der Einfachheit halber).

Ich danke Ihnen.

 
rabanik:

Guten Tag, bitte helfen Sie mir bei diesen Fragen (2):

1. Gibt es einen solchen EA, der die Ergebnisse der Tests in einer Excel-Datei speichert. Ich habe z.B. einen EA getestet und möchte die Parameter des EA, den Gewinn, die Art des Handels, das Ergebnis, die Wochentage und so weiter abfragen.

Ich würde auch gerne wissen, wie man detaillierte Analysen durchführt oder meine Erfahrungen damit teilen, wie man einen EA testet und sieht, ob er sich lohnt oder totaler Mist ist.

2. Wie kann ich ein Array oder eine Struktur an eine Funktion übergeben? D.h. ich habe eine Menge Variablen, füge diese Variablen zu einer Struktur hinzu und übergebe sie an eine Funktion.

Dann öffne ich diese Struktur in dieser Funktion und erhalte die Variablen, die ich brauche. Dies geschieht, um zu vermeiden, dass alle Werte von Variablen in eine Funktion "gezogen" werden (der Einfachheit halber).

Ich danke Ihnen.

Die Antwort finden Sie hier.

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
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
 

Sehr geehrte Damen und Herren!

Bitte helfen Sie mir, das Problem zu verstehen.

Ich habe einen switch(int err)-Operator verwendet

eine Nachricht erhalten

int FehlerBeschreibung()

{

Alert("beg ErrorDescription")


switch(err)

{

Fall 0: err="Kein Fehler"; break;

Fall 1: err="Kein Fehler, aber Ergebnis unbekannt"; break;

Fall 2: err="Allgemeiner Fehler"; break;

Fall 3: err="Falsche Parameter";

Was ist los, kann ich nicht herausfinden, wo das Semikolon sein soll? Es ist nicht klar...

 
buyanov:

Sehr geehrte Damen und Herren!

Bitte helfen Sie mir, das Problem zu verstehen.

Ich habe einen switch(int err)-Operator verwendet

eine Nachricht erhalten

int ErrorDescription()

{

Alert("beg ErrorDescription")


switch(err)

{

Fall 0: err="Kein Fehler"; break;

Fall 1: err="Kein Fehler, aber Ergebnis unbekannt"; break;

Fall 2: err="Allgemeiner Fehler"; break;

Fall 3: err="Falsche Parameter";

Was ist los, kann ich nicht herausfinden, wo das Semikolon sein soll? Es ist nicht klar...

Haben Sie sich um Alert() gekümmert? Wo ist ";"? ?

int ErrorDescription()
  { 
   Alert("beg ErrorDescription");   // где у вас ";" ???
   switch(err)
   {    
      case 0:   err="Нет ошибок";                                                     break;
      case 1:   err="Нет ошибки, но результат неизвестен";                            break;
      case 2:   err="Общая ошибка";                                                   break;
      case 3:   err="Неправильные параметры";        
Und warum geben Sie der Funktion ein Fragment?