int start(){ Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]); //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению ... return(0); }
void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){ ...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено) }
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.
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: Ä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.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
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[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
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.
Es gibt 5 Fehler und 83 Warnungen ))))
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.
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Ich bin im MQL4-Tutorial auf eine solche Konstruktion gestoßen:
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Steht es im Drehbuch oder im Experten?
im Prüfer.
Ähm ... dann hängt es davon ab, was im Hauptcode vor sich geht. Wenn das Senden einer Bestellung schlecht ist!
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.