[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 14

 

die Funktion selbst hört auf zu arbeiten, wenn eine Rückfrage durch die else-Bedingung erfolgt

if ( res!=-1){    
//..
}else{
    err = GetLastError();
    if ( err > 1) try = 0;
    Comment("Ошибка - ", err);          
}

try = 0, damit die while-Schleife aufhört und openOrder() false zurückgibt

Wenn wir jedoch das Konstrukt while(!openOrder(...)){} verwenden, wird der Vorgang fortgesetzt, bis eine Bestellung geöffnet wird

 
keekkenen . Das ist, was ich bin neugierig auf in Ihrem start() Funktion while(!openOrder(...)){} Sie nicht offenlegen, was dort in {} getan wird. Begrenzen Sie die Anzahl der Versuche von Neuanmeldungen?
 

Da Sie geschrieben haben, dass der Auftrag geöffnet werden soll, habe ich so eine "starre" Konstruktion gegeben, wenn er geöffnet werden soll, wird er geöffnet, unabhängig davon, wie viele Versuche es braucht... Wenn wir Aufträge normal öffnen, dann ist while nicht nötig, wir können die Anzahl der Versuche in try übergeben und in der Funktion bereits bestimmen, ob auf kritische Fehler reagiert werden soll oder ob sie ignoriert werden sollen und nur versucht werden soll, den Auftrag einmal zu öffnen...


Der Sinn von while(!openOrder(...)){} ist, dass wir eine ewige Schleife schaffen, d.h. sie funktioniert, bis die Bestellung geöffnet wird.

Definieren Sie, welche Taktik bei der Eröffnung von Aufträgen angewandt werden soll, wir helfen Ihnen dabei...

 

Hier ist die Frage:

Ich kann nicht mit einem Array arbeiten.

Ich initialisiere das Array, fülle es mit beliebigen Daten, aber wenn ich es auslese, stehen dort Nullen.

Was mache ich falsch?


double MASS[];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);
 }
 
Kontra писал(а) >>

Ich kann nicht mit einem Array arbeiten.

Sie müssen die Größe des Arrays angeben, z. B. wenn Sie es deklarieren:

double MASS[10];

Oder dann:

ArrayResize(MASS,10);
 

Was ist, wenn ich nicht weiß, wie groß mein Array sein wird?

Und selbst wenn ich es tue, lässt es sich nicht kompilieren:

Ich füge eine externe Variable ein:

extern int Razmer = 10;

Und der Rest des Textes:

   double MASS[ Razmer];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);

Die Ausgabe ist:

'Razmer' - ganzzahlige Zahl erwartet C:\Programme\MetaTrader - Alpari2\experts\temp.mq4 (36, 16)
']' - Komma oder Semikolon erwartet C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 22)
'MASS' - Variable nicht definiert C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (40, 3)
'MASS' - Variable nicht definiert C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (44, 9)

 
Kontra писал(а) >>

Was ist, wenn ich nicht weiß, wie groß mein Array sein wird?

Sie müssen also die Funktion ArrayResize verwenden, wenn Sie wissen, wie viele Elemente das Array enthalten wird.

Mit einer externen Variablen funktioniert das, wie Sie sehen können, nicht:)

Sie können es so machen:

ArrayResize(MASS,Razmer);
 

Vielen Dank, lieber Chirurg.

Es klappt :)

 
int init()
  { 
   double A=AccountBalance()         //Определяем баланс
   double B=NormalizeDouble( A/50,0)  //Выполняем вычисления и делаем результат целым числом
   double Lots= B*0.01                //Вычисление лота.

if ( Lots>0)Alert("Лот будет ", Lots )

   return(0);
  }
Wo liegt hier der Fehler und wie kann er behoben werden?
 

Was genau wollen Sie erreichen?