Dies scheint das falsche Verhalten für die Sprache zu sein, da es die Möglichkeiten einschränkt.
Ich muss ein const-Feld als Struktur definieren. Ich dachte, der Kopieroperator würde funktionieren, aber der Compiler will stattdessen einen Konstruktor, weil die Syntax ähnlich ist. Aber das ist falsch.
Es ist richtig, weil es eindeutig ist (es ist immer ein Konstruktor in der Initialisierungsliste, kein Operator), aber es ist in anderer Hinsicht falsch:
struct S {
S() { Print( __FUNCSIG__ ); }
voidoperator=( const S& ) { Print( __FUNCSIG__ ); }
};
voidOnStart()
{
S s;
S s1 = s;
während C++ die Zeilen (2) und (3) nicht ausgibt und daher den fehlenden Kopierkonstruktor nicht durch eine Symbiose aus Standardkonstruktor und Zuweisungsoperator ersetzt
Wenn die Ressource eines BMP-Objekts gelöscht und dann neu erstellt wurde, sieht das BMP-Objekt seine Ressource nicht mehr. Hier liegt ein Fehler vor. Nun müssen Sie das Objekt löschen und neu erstellen.
Wenn die Ressource eines BMP-Objekts gelöscht und dann neu erstellt wurde, sieht das BMP-Objekt seine Ressource nicht mehr. Hier liegt ein Fehler vor. Nun müssen Sie das Objekt löschen und neu erstellen.
Können Sie uns den Code zeigen? Warum müssen Sie eine Ressource löschen? Sie können sie überschreiben/verändern, ohne sie zu löschen.
Eine Marktposition eines Expert Advisors eines Drittanbieters wurde erfolgreich durch OrderSelect(ticketNumber,SELECT_BY_TICKET) ausgewählt, und in der Schleife wird versucht, sie zu schließen (die Orderauswahl auf dem Ticket wurde vor der Schließungsversuchsschleife vorgenommen).
Ich erhalte eine Fehlermeldung:
2017.11.1006:00:33.806 ExpertName EURCAD,H1: unknown ticket 1846978258forOrderClose function
Das Ticket ist in Ordnung.
Es ist nur natürlich, dass unser EA diesen Auftrag selbständig abschließen kann, also
Bei jeder Schleifeniteration prüfen wir
if(OrderCloseTime()!=0) break;
was nicht zum gewünschten Ergebnis führt, und die Meldung über die falsche Ticketnummer wird alle 30 Male des Zyklus angezeigt.
Ein schlechtes Blatt oder ist es ein Fehler mit einem Verlust einer ausgewählten Bestellung?
Oder gibt die Fehlernummer die Situation/das Problem nicht genau wieder?
Aktualisierung:
Ich habe herausgefunden, dass die Position nicht durch den eigenen EA geschlossen wird, sondern durch den, den wir schließen.
Vor einem zyklischen Fehler 4108 erhalten wir jedoch einmalig den Fehler 3 (obwohl der Auftrag bereits abgeschlossen ist, bevor der Fehler 3 protokolliert wird).
Andrey Barinov: Können Sie mir den Code zeigen? Warum sollten Sie die Ressource löschen, wenn Sie sie erneut herunterladen/ändern können, ohne sie zu löschen.
Erneut geladen, natürlich ohne Löschen, ohne Probleme. Nach der Löschung Probleme.
#define WIDTH 100#define ARGB(a,r,g,b) ((uchar(a)<<24)|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))
bool Set( conststring Name, constuint &Data[], constuint Width )
{
return(ResourceCreate(Name, Data, Width, (Width == 0) ? ArraySize(Data) : ArraySize(Data) / Width, 0, 0, Width, COLOR_FORMAT_ARGB_NORMALIZE));
}
void Test( conststring Name )
{
staticuint Data[WIDTH * WIDTH];
for (uchar i = 0; i < 100; i++)
{
ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
Set(Name, Data, WIDTH);
ChartRedraw();
Sleep(50);
}
ResourceFree(Name);
}
voidOnStart()
{
conststring ObjName = __FILE__;
conststring Name = "::" + ObjName;
ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);
ObjectSetString(0, ObjName, OBJPROP_BMPFILE, Name);
// Видна работа
Test(Name);
// Нет результата на экране
Test(Name);
ObjectDelete(0, ObjName);
}
Wir haben erfolgreich einen Auftrag für ein Ticket ausgewählt.
Wir haben in Iteration 1 einen Schließbefehl gesendet.
Bei dieser Iteration #1 erhielten wir Fehler 3 (Ungültige Handelsparameter). Der Auftrag wurde dennoch abgeschlossen. Wie wurde sie geschlossen?
Dann erhalten wir bei Iteration 2 den Fehler 4108. Wir können ihn nicht mit OrderCloseTime!=0 schließen.
In welchem Stadium verlieren wir laut der Dokumentation die Verbindung zu dem durch das Ticket ausgewählten Auftrag?
Ist dies nicht ein Fall, in dem nach dem Senden des Abschlussbefehls der Auftrag hätte gesperrt werden müssen und der Fehler 139 anstelle von 4108 hätte erzeugt werden müssen?
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.
Dies scheint das falsche Verhalten für die Sprache zu sein, da es die Möglichkeiten einschränkt.
Ich muss ein const-Feld als Struktur definieren. Ich dachte, der Kopieroperator würde funktionieren, aber der Compiler will stattdessen einen Konstruktor, weil die Syntax ähnlich ist. Aber das ist falsch.
Es ist richtig, weil es eindeutig ist (es ist immer ein Konstruktor in der Initialisierungsliste, kein Operator), aber es ist in anderer Hinsicht falsch:
Ergebnis:
void S::S() (1)
void S::S() (2)
void S::operator=(const S&) (3)
während C++ die Zeilen (2) und (3) nicht ausgibt und daher den fehlenden Kopierkonstruktor nicht durch eine Symbiose aus Standardkonstruktor und Zuweisungsoperator ersetzt
Wenn die Ressource eines BMP-Objekts gelöscht und dann neu erstellt wurde, sieht das BMP-Objekt seine Ressource nicht mehr. Hier liegt ein Fehler vor. Nun müssen Sie das Objekt löschen und neu erstellen.
Wenn die Ressource eines BMP-Objekts gelöscht und dann neu erstellt wurde, sieht das BMP-Objekt seine Ressource nicht mehr. Hier liegt ein Fehler vor. Nun müssen Sie das Objekt löschen und neu erstellen.
Situation:
Eine Marktposition eines Expert Advisors eines Drittanbieters wurde erfolgreich durch OrderSelect(ticketNumber,SELECT_BY_TICKET) ausgewählt, und in der Schleife wird versucht, sie zu schließen (die Orderauswahl auf dem Ticket wurde vor der Schließungsversuchsschleife vorgenommen).
Ich erhalte eine Fehlermeldung:
Das Ticket ist in Ordnung.
Es ist nur natürlich, dass unser EA diesen Auftrag selbständig abschließen kann, also
Bei jeder Schleifeniteration prüfen wir
was nicht zum gewünschten Ergebnis führt, und die Meldung über die falsche Ticketnummer wird alle 30 Male des Zyklus angezeigt.
Ein schlechtes Blatt oder ist es ein Fehler mit einem Verlust einer ausgewählten Bestellung?
Oder gibt die Fehlernummer die Situation/das Problem nicht genau wieder?
Aktualisierung:
Ich habe herausgefunden, dass die Position nicht durch den eigenen EA geschlossen wird, sondern durch den, den wir schließen.
Vor einem zyklischen Fehler 4108 erhalten wir jedoch einmalig den Fehler 3 (obwohl der Auftrag bereits abgeschlossen ist, bevor der Fehler 3 protokolliert wird).
Natürlich könnte der einheimische EA diesen Auftrag selbständig abschließen, also
Bei jeder Iteration der Schleife wird die Prüfung durchgeführt.
Wir müssen auch OrderSelect durchführen.
Können Sie mir den Code zeigen? Warum sollten Sie die Ressource löschen, wenn Sie sie erneut herunterladen/ändern können, ohne sie zu löschen.
Erneut geladen, natürlich ohne Löschen, ohne Probleme. Nach der Löschung Probleme.
Keine Nachrichten von
Systemmeldungen
Keinerlei Meldungen, einschließlich Produktnachricht, Produktverkauf, Bemerkungen des Moderators, Produktvalidierungsmeldung.
Keine Nachrichten von
Systemmeldungen
Überhaupt keine. einschließlich , Produktnachricht, Produktverkauf, Moderationshinweise, Produktvalidierungsnachricht.
Guten Tag.
Der Fehler wurde behoben, wir müssen noch auf die Aktualisierung der Website warten.
Wir entschuldigen uns für die Unannehmlichkeiten.
Guten Tag.
Der Fehler wurde behoben, wir müssen nur noch auf die Aktualisierung der Website warten.
Wir entschuldigen uns für die Unannehmlichkeiten.
Danke. Ich habe bereits auf die SD geantwortet :-) und warte...
P.S. Noch nie war es so ruhig wie jetzt.... direktes Schweigen .........
Sie müssen auch OrderSelect durchführen.
Können Sie uns den Grund dafür nennen?
Wir haben erfolgreich einen Auftrag für ein Ticket ausgewählt.
Wir haben in Iteration 1 einen Schließbefehl gesendet.
Bei dieser Iteration #1 erhielten wir Fehler 3 (Ungültige Handelsparameter). Der Auftrag wurde dennoch abgeschlossen. Wie wurde sie geschlossen?
Dann erhalten wir bei Iteration 2 den Fehler 4108. Wir können ihn nicht mit OrderCloseTime!=0 schließen.
In welchem Stadium verlieren wir laut der Dokumentation die Verbindung zu dem durch das Ticket ausgewählten Auftrag?
Ist dies nicht ein Fall, in dem nach dem Senden des Abschlussbefehls der Auftrag hätte gesperrt werden müssen und der Fehler 139 anstelle von 4108 hätte erzeugt werden müssen?