Fehler, Irrtümer, Fragen - Seite 77

 
Interesting:

Habe ich es richtig verstanden, dass die von ACCOUNT_TRADE_ALLOWED zurückgegebenen Werte serverseitig generiert werden?

Ich meine, keine Aktion von Seiten des Händlers (im Terminal) kann diesen Wert ändern...

PS

Aber die Abneigung von ACCOUNT_TRADE_EXPERT gegen eine Änderung ist wirklich seltsam...

Was bewirken dann die Schaltfläche "Auto-Trading" im Terminal-Menü und das Kontrollkästchen "Auto-Trading zulassen"?

PPS

In alten Versionen schien alles korrekt zu sein und alles funktionierte, aber in 299 verstehe ich nicht, was da los ist...


Wer hat in ACCOUNT_TRADE_ALLOWED und ACCOUNT_TRADE_EXPERTgegrabenund warum?


An die Entwickler: Entweder werde ich verrückt oder es gibt "drubashka" im Terminal... :)

Und zwar nicht in der neuesten Version, aber immerhin in 294 (wer hat die denn da zugelassen?)... :(


Ein kleines Experiment

Nehmen wir die Terminalversion 294 und platzieren wir auf dem Chart einen Expert Advisor, der den Rückgabewert von AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) kontrolliert.

Gleichzeitig wird der automatische Handel in den Parametern des Expert Advisors und im Terminal (Schaltfläche "Automatischer Handel") deaktiviert.

Das Ergebnis ist, dass das Protokoll des Expert Advisors Folgendes enthält

Hier sehen Sie das Protokoll der vom Expert Advisor durchgeführten Aktionen (während der Initialisierung) und die Überprüfung des Wertes ACCOUNT_TRADE_ALLOWED im Timer.

Wir sind an allen farblich hervorgehobenen Symbolen interessiert (vorher wurde die Symbolliste in eine spezielle Klasse geladen).

1. Das erste vom Timer zurückgegebene Ergebnis ist blau (es wird erwartet, dass es falsch ist);

2. Die rote Farbe hebt das nächste Ergebnis hervor, das vom Timer zurückgegeben wurde, es stellte sich plötzlich als wahr heraus(ich bin sehr daran interessiert, was BARABACA zu handeln erlaubt);

3. Die Reaktion meiner Klasse (Ereignis OnEventTimer) auf die Änderungen ist grün.

Hier "versteht" die Klasse, dass automatischer Handel erlaubt ist, und teilt dies gerne mit (ich teile ihren Optimismus nicht);

Außerdem wird die Meldung zweimal angezeigt (obwohl sie vorher nicht zu sehen war). Die Meldung darf nicht zweimal erscheinen, da das Ereignis OnEventTimer eine Prüfung enthält, die diese Möglichkeit ausschließt.

//Reading information on current parameters of the trade account
RealTradeAllowed = TradeAllowed(); //TradeAllowed
RealTradeExpert  = TradeExpert();  //TradeExpert
//Checking the status change of the use possibility automatic trade
  if(varTradeAllowed!=RealTradeAllowed)
  //Processing the event TradeAllowed
  {
  OnTradeAllowed(RealTradeAllowed);
  //We write current status of the RealTradeAllowed in variable
  varTradeAllowed = RealTradeAllowed;
  }

4. Dann gibt der Timer ständig true zurück, egal was mit dem Terminal passiert.

PS

Die Situation mit AccountInfoInteger(ACCOUNT_TRADE_EXPERT) ist noch verwirrender. Der Timer kehrt unabhängig von Terminal- und Expert Advisor-Einstellungen zurück.

Brauchen wir das?

 
AM2:

Ich bin auch an einer ähnlichen Frage interessiert. Was soll ich tun, wenn auf meinem Konto nicht genügend Geld vorhanden ist, um eine Position zu eröffnen?

1. Beenden Sie den Handel mit dem Expert Advisor.

2. Verbot der Eröffnung einer Position.

3. entfernen Sie den Expert Advisor aus dem Chart.

Punkt 3 kann mit ExpertRemove behoben werden. Den 2. Punkt habe ich auf diese Weise gelöst:

1. Ich verstehe, dass das Verbot des Handels nicht programmatisch eingestellt wird, sondern über die Schaltfläche "Auto-Trading" und das Kontrollkästchen "Auto-Trading zulassen", gefolgt von der Aktivierung von ACCOUNT_TRADE_ALLOWED und ACCOUNT_TRADE_EXPERT.

Sie können den Handel auch verbieten, indem Sie den notwendigen Parameter zu Ihrem Expert Advisor hinzufügen und dann diesen Parameter kontrollieren (z.B. verbieten, auf einem realen Konto zu handeln).

Die Vorabkontrolle wird während der Initialisierung eines Expert Advisors durchgeführt, während sie im Arbeitsmodus in OnTimer() oder OnTick() behandelt wird.

2. Die Kontrolle der Möglichkeit, eine Position zu öffnen (zu schließen), muss unter Berücksichtigung des aktuellen Zustands erfolgen: der Verbindung, der Möglichkeit des automatischen Handels und anderer Bedingungen (z.B. die Kontrolle der Möglichkeit, eine bestimmte Operation für dieses Symbol durchzuführen).

Um alle Bedingungen zu kontrollieren, ist es besser, eine Funktion mit einem boolschen Ergebnis zu erstellen.

Zum Beispiel so wie hier:

//Function IsTradePermit
bool IsTradePermit(bool TardeAllowed,bool Connect,double FreeMargin)
{
//----------------------------------------------------------------------------//
//Work variables
bool Result;
//----------------------------------------------------------------------------//

//Тут мы проверяем разрешена или нет торговля

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

3) Der Expert Advisor sollte nur in extremen Fällen aus dem Diagramm entfernt werden (wenn seine Arbeit nicht erledigt werden kann oder wenn er nicht mehr benötigt wird).

Diese Situation ist sehr extrem und selten. Sie sollte beispielsweise verwendet werden, wenn einige für den Expert Advisor erforderliche Dateien nicht gefunden werden oder wenn ein Fehler vorliegt, den der Expert Advisor nicht lösen kann.

PS

Das Entfernen und Platzieren von EAs ist auch dann sinnvoll, wenn mehrere EAs auf verschiedenen Paaren handeln, aber von einem EA verwaltet werden (er entscheidet, auf welchem Paar ein EA platziert und auf welchem er entfernt wird)...

 
Interesting:

Wer hat sich in ACCOUNT_TRADE_ALLOWED und ACCOUNT_TRADE_EXPERTeingegraben, und vor allem, warum?


Entwickler - Entweder werde ich schon verrückt oder das Terminal "drubashki" ist aufgetaucht... :)

Und zwar nicht in der neuesten Version, aber immerhin in 294 (wer hat sie da reingelassen?)... :(


Ein kleines Experiment

Nehmen wir die Terminalversion 294 und platzieren wir auf dem Chart einen Expert Advisor, der den Rückgabewert von AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) kontrolliert.

Gleichzeitig wird der automatische Handel in den Parametern des Expert Advisors und im Terminal (Schaltfläche "Auto-Trading") deaktiviert.

Das Ergebnis ist, dass das Protokoll des Expert Advisors Folgendes enthält

Hier sehen Sie das Protokoll der vom Expert Advisor durchgeführten Aktionen (während der Initialisierung) und die Überprüfung des Wertes ACCOUNT_TRADE_ALLOWED im Timer.

Wir sind an allen farblich hervorgehobenen Symbolen interessiert (vorher wurde die Symbolliste in eine spezielle Klasse geladen).

1. Das erste vom Timer zurückgegebene Ergebnis ist blau (es wird erwartet, dass es falsch ist);

2. Die rote Farbe hebt das nächste Ergebnis hervor, das vom Timer zurückgegeben wurde, es stellte sich plötzlich als wahr heraus(ich bin sehr daran interessiert, was BARABACA zu handeln erlaubt);

3. Die Reaktion meiner Klasse (Ereignis OnEventTimer) auf Änderungen ist grün.

Hier "versteht" die Klasse, dass automatischer Handel erlaubt ist, und teilt dies gerne mit (ich teile ihren Optimismus nicht);

Außerdem wird die Meldung zweimal angezeigt (obwohl sie vorher nicht zu sehen war). Die Meldung darf nicht zweimal erscheinen, da das Ereignis OnEventTimer eine Prüfung enthält, die diese Möglichkeit ausschließt.

4. Dann gibt der Timer ständig true zurück, egal was mit dem Terminal passiert.

PS

Die Situation mit AccountInfoInteger(ACCOUNT_TRADE_EXPERT) ist noch verwirrender. Der Timer kehrt unabhängig von Terminal- und Expert Advisor-Einstellungen zurück.

Brauchen wir das?

Hier geht etwas Seltsames vor sich: ACCOUNT_TRADE_ALLOWED und ACCOUNT_TRADE_EXPERT sind Berechtigungen für den Handel mit dem Maklerunternehmen.

Schaltfläche "AutoTrade". - TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).

Es gibt MQL5InfoInteger(MQL5_TRADE_ALLOWED) - Erlaubnis/Verbot für Experten/Skripte zu handeln

 
Swan:

Es passiert etwas Seltsames: ACCOUNT_TRADE_ALLOWED und ACCOUNT_TRADE_EXPERT sind berechtigt, im DC zu handeln.

Schaltfläche "AutoTrade". - TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).

Es gibt auch MQL5InfoInteger(MQL5_TRADE_ALLOWED) - Erlaubnis/Verbot für Experten/Skripte zu handeln

Ich weiß von MQL5InfoInteger(MQL5_TRADE_ALLOWED), es funktioniert gut und wird normalerweise in Expert Advisor überwacht; MQL5_DLLS_ALLOWED wird ebenfalls normalerweise verarbeitet.

So, wie ich es verstehe:

TERMINAL_DLLS_ALLOWED und TERMINAL_TRADE_ALLOWED sind Berechtigungen auf Terminalebene;

MQL5_DLLS_ALLOWED und MQL5_TRADE_ALLOWED - Berechtigungen auf Expertenebene;

ACCOUNT_TRADE_ALLOWED und ACCOUNT_TRADE_EXPERT - Berechtigungen auf Serverebene.

Dann nehmen wir an, dass der Server false in true ändert (obwohl es nicht klar ist, warum diese Meldung zweimal angezeigt wird).

 
Swan, danke für den Tipp. Es ist alles in Ordnung. Alles scheint gut zu funktionieren...
 

Guten Tag, ich habe folgendes Problem, ich fange an, das Stundenchart zu scrollen und an einem bestimmten Datum geht es zum Tageschart, auch mit 15 Minuten gehen sie zu stündlich oder 4 stündlich, gelöschte Dateien, wo die Geschichte gemäß der Dokumentation gespeichert wird, aber nichts hat sich geändert.

Документация по MQL5: Файловые операции / FileDelete
Документация по MQL5: Файловые операции / FileDelete
  • www.mql5.com
Файловые операции / FileDelete - Документация по MQL5
 
RomanIgorevi4:

Guten Tag, ich habe folgendes Problem, ich fange an, das Stundenchart zu scrollen und an einem bestimmten Datum geht es zum Tageschart, auch mit 15 Minuten gehen sie zu stündlich oder 4 stündlich, gelöschte Dateien, wo die Geschichte gemäß der Dokumentation gespeichert wird, aber nichts hat sich geändert.

Vor diesem Datum gibt es auf dem Server nur einen Tagesverlauf (keinen Minutenverlauf), daher werden alle Zeitrahmen als täglich angezeigt.
 

Ich habe festgestellt, dass es ein Problem mit HistoryDealsTotal() gibt, wenn die Optimierungsalgorithmen des Testers verwendet werden.

Während eines normalen Backtests ist alles in Ordnung, aber in einer Optimierungssitzung, während der Initialisierungsphase des EAs, gibt HistoryDealsTotal() die Anzahl der Geschäfte aus dem vorherigen Lauf des EAs zurück. Später, während der Handelsphase, beginnt HistoryDealsTotal() wieder bei 0.

Ich habe dieses Problem mit dem folgenden Codeschnipsel entdeckt:

    // constructor
    void MyClass() {
        _dealCnt = HistoryDealsTotal();  // this is causing trouble!
        _orderCnt = OrdersTotal();
        _positionCnt = PositionsTotal();
        _historyOrderCnt = HistoryOrdersTotal();
        ...
    }

Der Weg, um dies zu umgehen, ist, stattdessen mit 0 zu initialisieren, aber trotzdem würde ich mich über eine offizielle Antwort auf dieses Problem freuen, denn für mich sieht es so aus, als ob einige interne Variablen zu spät zurückgesetzt werden.

Vielen Dank im Voraus!

Documentation on MQL5: Trade Functions / HistoryDealsTotal
Documentation on MQL5: Trade Functions / HistoryDealsTotal
  • www.mql5.com
Trade Functions / HistoryDealsTotal - Documentation on MQL5
 

Hallo, beantworten Sie meine Frage:

Warum kann ich mt5 nicht herunterladen, ich lade die Installationsdatei herunter, starte sie auf halbem Weg, sie hält an, springt zu einem anderen Zugangspunkt usw. Am Ende erscheint eine Fehlermeldung.

-Lesen fehlgeschlagen [12002]

dies ist die Geschichte ständig, egal wie oft ich das Terminal oder Windows neu installieren, aber jetzt den dritten Tag scheitert es

 

Bitte sagen Sie mir, warum diese Konstruktion immer 0 ergibt.

MqlDateTime dt; Print(dt.min);

und woher weiß ich, wie viele Minuten es jetzt sind?

MqlDateTime dt; if(dt.min)>33 ...