Wenn Sie die Synchronisierung überprüfen, funktioniert sie nur für eine Währung. Und ich muss gleich 7 Währungen analysieren.
Als Hilfestellung könnten Sie versuchen, sich an den Zeitpunkt der letzten Synchronisierung des Paares zu erinnern und diesen als Referenz zu verwenden.
Sie können auch SymbolInfoTick() für Kauf- und Verkaufsangebote verwenden
int bars=Bars(_Symbol,_Period);
if(bars>0)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
}
else//нет доступных баров
{
//--- видимо, данные по символу не синхронизированы с данными на сервереbool synchronized=false;
//--- счетчик циклаint attempts=0;
// сделаем 5 попыток дождаться синхронизацииwhile(attempts<5)
{
if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
{
//--- есть синхронизация, выходим
synchronized=true;
break;
}
//--- увеличим счетчик
attempts++;
//--- подождем 10 миллисекунд до следующей итерацииSleep(10);
}
//--- вышли из цикла по факту синхронизацииif(synchronized)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
Print("Самая первая в истории терминала дата по символу-периоду на данный момент = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
Print("Самая первая дата в истории по символу на сервере = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
}
//--- синхронизация данных так и не была достигнутаelse
{
Print("Не удалось получить количество баров на ",_Symbol);
}
}
Außerdem sollte der Verweis auf die Preise in OnTick sein (damit die Zeichen von Dritten geladen werden).
Außerdem sollte es einen Verweis auf Preise in OnTick geben (damit Zeichen von Drittanbietern geladen werden).
Dies löst nicht das Problem der ursprünglichen
SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) wird bei korrekter Verwendung immer mit einem Wert gefüllt. Aus irgendeinem Grund wird der richtige Wert für das gewünschte Symbol nicht angezeigt. Und er wird offenbar durch den zuvor erhaltenen Wert aufgefüllt, der der Wert einer der anderen sieben Währungen ist.
Wenn es keine Lösung gibt, und diese Lösung suche ich seit mehr als einem Monat, habe ich das Gefühl, dass es nur ein Bug-Tester ist. Die Entwickler sollten dies beachten. Wenn es ein Fehler ist, beheben Sie ihn
Aber wenn ich einen meiner Multisymbol-Indikatoren teste, wird die Liste der Symbole aus der Zeichenkette der Eingabeparameter in OnInit geladen. Und ihre Preise werden in OnCalculate abgerufen. Wenn ich außerdem einstelle, dass Symbole von Market Watch geladen werden, erscheint nur ein Basissymbol im Tester.
Seien Sie konsequent. Wenn Sie prüfen
dann prüfen und
:)
Wenn Sie dies tun und es gibt sieben solcher Zeilen im Code für sieben Paare, dann wird die Marktübersicht nur Kurse für eine Währung enthalten.
Seien Sie konsequent. Wenn Sie prüfen
dann prüfen und
:)
Es ist besser als nur
euSY01b>0Wenn Sie die Synchronisierung überprüfen, funktioniert sie nur für eine Währung. Ich muss 7 Währungen auf einmal analysieren.
Ich muss es in OnInit() tun
Wenn Sie die Synchronisierung überprüfen, funktioniert sie nur für eine Währung. Und ich muss gleich 7 Währungen analysieren.
Als Hilfestellung könnten Sie versuchen, sich an den Zeitpunkt der letzten Synchronisierung des Paares zu erinnern und diesen als Referenz zu verwenden.
Sie können auch SymbolInfoTick() für Kauf- und Verkaufsangebote verwenden
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
Yury Lemeshev, 2022.01.02 08:54
Dies ist korrekter als nur
euSY01b>0es ist wie wahr == wahr, Ergebnis: wahr. und falsch == wahr, Ergebnis: falsch :)
das ist genau das Ergebnis, das man erhält, wenn
oder
Wenn Sie dies tun und es gibt 7 solcher Zeilen im Code für sieben Paare, dann zeigt die Marktübersicht nur Kurse für eine Währung an.
Versuchen Sie, Bars in OnTick aufzurufen
https://www.mql5.com/ru/docs/series/bars
aus dem Artikel:
Außerdem sollte der Verweis auf die Preise in OnTick sein (damit die Zeichen von Dritten geladen werden).Versuchen Sie, Bars in OnTick aufzurufen
https://www.mql5.com/ru/docs/series/bars
aus dem Artikel:
Außerdem sollte es einen Verweis auf Preise in OnTick geben (damit Zeichen von Drittanbietern geladen werden).Dies löst nicht das Problem der ursprünglichen
SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) wird bei korrekter Verwendung immer mit einem Wert gefüllt. Aus irgendeinem Grund wird der richtige Wert für das gewünschte Symbol nicht angezeigt. Und er wird offenbar durch den zuvor erhaltenen Wert aufgefüllt, der der Wert einer der anderen sieben Währungen ist.
Wenn es keine Lösung gibt, und diese Lösung suche ich seit mehr als einem Monat, habe ich das Gefühl, dass es nur ein Bug-Tester ist. Die Entwickler sollten dies beachten. Wenn es ein Fehler ist, beheben Sie ihnIch muss in OnInit() Folgendes tun
Aber wenn ich einen meiner Multisymbol-Indikatoren teste, wird die Liste der Symbole aus der Zeichenkette der Eingabeparameter in OnInit geladen. Und ihre Preise werden in OnCalculate abgerufen. Wenn ich außerdem einstelle, dass Symbole von Market Watch geladen werden, erscheint nur ein Basissymbol im Tester.