Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 112

 
Alexey Kozitsyn:
Kann ich den Code sehen?
...
extern string   SYMBOLS ="EURUSD,GBPUSD,EURGBP,EURJPY,USDJPY";
string symbolsArray[1];
...
void init(){
   StringToArray(SYMBOLS, symbolsArray);
...
}

int start(){
  Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]);
  //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению
  ...
  return(0);
}

void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
 
Maksym Mudrakov:
...
extern string   SYMBOLS ="EURUSD,GBPUSD,EURGBP,EURJPY,USDJPY";
string symbolsArray[1];
...
void init(){
   StringToArray(SYMBOLS, symbolsArray);
...
}

int start(){
  Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]);
  //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению
  ...
  return(0);
}

void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
Das erste, was ich tun würde, ist #property strict hinzuzufügen, alle Fehler/Warnungen (falls vorhanden) zu korrigieren und init() und start() durch OnInit() und OnTick() zu ersetzen.
 
Alexey Kozitsyn:
Das erste, was ich tun würde, ist #property strict hinzuzufügen, alle Fehler/Warnungen (falls vorhanden) zu korrigieren und init() und start() durch OnInit() und OnTick() zu ersetzen.
Ich danke Ihnen!

Es gibt 5 Fehler und 83 Warnungen ))))
 
Maksym Mudrakov:
Ich danke Ihnen!

5 Fehler und 83 Warnungen kamen heraus ))))
Versuchen Sie, in einer "neuen" Sprache zu schreiben, und Sie werden weniger schwer zu findende Fehler finden.
 
Alexey Kozitsyn:
Versuchen Sie, in einer "neuen" Sprache zu schreiben, und Sie werden weniger schwer zu findende Fehler finden.
Ich bin im MQL4-Tutorial auf eine solche Konstruktion gestoßen:

//--------------------------------------------------------------------
start()                    // Специальная функция start()
   {
   while(!IsStopped())     // До тех пор, пока пользователь..
      {                    // ..не прекратит исполнение программы
      RefreshRates();      // Обновление данных
      //......................Здесь указывается основной код программы
      Sleep(5);            // Небольшая пауза
      }
   return;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
Können wir auch die "neue" Sprache verwenden, oder gibt es eine modernere Lösung?
 
Maksym Mudrakov:
Ich bin im MQL4-Tutorial auf eine solche Konstruktion gestoßen:

//--------------------------------------------------------------------
start()                    // Специальная функция start()
   {
   while(!IsStopped())     // До тех пор, пока пользователь..
      {                    // ..не прекратит исполнение программы
      RefreshRates();      // Обновление данных
      //......................Здесь указывается основной код программы
      Sleep(5);            // Небольшая пауза
      }
   return;                 // Управление возвращается терминалу
   }
//--------------------------------------------------------------------
Kann sie auch in der "neuen" Sprache angewendet werden, oder gibt es eine modernere Lösung?
Handelt es sich um ein Skript oder einen Expert Advisor?
 
Alexey Kozitsyn:
Steht es im Drehbuch oder im Experten?
Im Experten
 
Maksym Mudrakov:
im Prüfer.
Ähm ... dann hängt es davon ab, was dort im Hauptcode vor sich geht. Wenn das Senden einer Bestellung eine schlechte Option ist!
 
Alexey Kozitsyn:
Ähm ... dann hängt es davon ab, was im Hauptcode vor sich geht. Wenn das Senden einer Bestellung schlecht ist!
Ja, das Senden einer Bestellung ist möglich. Es ist mir nur nicht klar, ob die Kurse zwangsweise aktualisiert werden sollen, wenn der Expert Advisor im Fenster eines Handelsinstruments läuft, aber einen Auftrag für ein anderes Handelsinstrument sendet. Wenn z. B. die Kurse für EURUSD nicht aktualisiert werden und gleichzeitig die neuen Kurse für GBPUSD eingehen. Und wenn mein Expert Advisor auf EURUSD ausgeführt wird und ichRefreshRates() nicht ausführe, dann wird der Expert Advisor keine Order auf GBPUSD senden, bis die Kurse auf EURUSD aktualisiert sind?
 
Maksym Mudrakov:
Ja, das Absenden der Bestellung erfolgt. Es ist mir nicht klar, ob die Kurse zwingend aktualisiert werden sollten, wenn der EA im Fenster eines Symbols gestartet wird, aber ein Auftrag für ein anderes Symbol gesendet wird. Wenn z. B. die Kurse für EURUSD nicht aktualisiert werden und gleichzeitig die neuen Kurse für GBPUSD eingehen. Und wenn mein Expert Advisor auf EURUSD ausgeführt wird und ichRefreshRates() nicht ausführe, dann wird der Expert Advisor keine Order auf GBPUSD senden, bis die Kurse auf EURUSD aktualisiert sind?

Es gibt mehrere Möglichkeiten, aktuelle Preise zu erhalten:

1. Für jedes Symbol: Wenn Sie garantierte aktuelle Preise erhalten möchten, rufen Sie SymbolInfoDouble() mit den korrekten Bezeichnern auf, bevor Sie sie verwenden.

2. Für das aktuelle Symbol können Sie auch die aktuellen Preise über die vordefinierten Variablen Bid und Ask abrufen. Diese können veraltet sein. Wenn die Funktion OnTick() lange läuft, sollten Sie sie mit RefreshRates() aktualisieren.

Grund der Beschwerde: