Fehler, Irrtümer, Fragen - Seite 1631

 
fxsaber:
mt5, 1375, es geschah nach dem Upgrade. vinhp32

Welche Aktualisierungen gibt es und wozu? Wenn Sie auf eine mögliche Panne hinweisen, sparen Sie bitte nicht an Tinte und geben Sie die Umstände so detailliert wie möglich an.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fehler, Irrtümer, Fragen

Karputov Vladimir, 2016.08.07 14:11

  1. Was ist der Build von MetaEditor?
  2. Betreiben Sie es mit MT4 oder MT5?
  3. Haben Sie schon einmal Dateien in diesem MetaEditor geöffnet?
  4. Wie sieht es mit den Rechten an der Datei des MetaEditors aus?
  5. Geschah dies vor kurzem oder unmittelbar nach der Installation des Terminals?
  6. In welchem Betriebssystem starten Sie es (Windows, unter Wine)?

 

Fehler bei der Ausführung

Abfolge der Arbeitsschritte:

1. Führen Sie den Experten Test.ex5 aus, der die gleiche Art von Text im Diagramm Zeile für Zeile anzeigt, bis ein Fehler auftritt

2. Führen Sie im gleichen Diagramm das vereinfachte Skript aus, das den Fehler zeigt

//Test.ex5 //Проверочный скрипт void OnStart() {         string text1 = NULL;                        ::ChartGetString( 0, CHART_COMMENT, text1 ); //(1)         string text2 = ::ChartGetString( 0, CHART_COMMENT ); //(2)         if ( text1 != text2 )                 Print( ::StringLen( text1 ), "-", ::StringLen( text2 ));         else                 Print( "OK" ); }

Wir erhalten das Ergebnis

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... und sollte "OK" sein

Dateien:
Test.ex5  13 kb
 
A100:

Fehler bei der Ausführung

Abfolge der Arbeitsschritte:

1. Führen Sie den Experten Test.ex5 aus, der die gleiche Art von Text im Diagramm Zeile für Zeile anzeigt, bis ein Fehler auftritt

2. Führen Sie im gleichen Diagramm das vereinfachte Skript aus, das den Fehler zeigt

Wir erhalten das Ergebnis

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... und sollte "OK" sein

Ich sehe keinen Fehler, zwischen den ChartGetString-Aufrufen wurde der Diagrammkommentar geändert, deshalb gibt es einen Unterschied von 16 Zeichen zwischen den Zeilen, nur die Größe der zum Diagrammkommentar hinzugefügten Zeile.
 
Ilyas:
Ich sehe keinen Fehler, zwischen den ChartGetString-Aufrufen wurde der Diagrammkommentar geändert, deshalb gibt es einen Unterschied von 16 Zeichen zwischen den Zeilen, nur für die Größe der zum Diagrammkommentar hinzugefügten Zeile.

Der Experte ist entladen (d.h. er kann das Diagramm nicht mehr beeinflussen). Laden Sie das Testskript (10 Zeilen). Frage: Welche der angegebenen Zeilen ändert den Diagrammkommentar?

Es gibt keinen Code zwischen den Aufrufen von ::ChartGetString()

Dateien:
Test.ex5  6 kb
 

Was ist mit der mobilen Version des Forums los?

Wenn ich auf "Antworten" drücke, erscheint ein Zitat mit Krokodilen von htlm-Code. Und man kann den Cursor nicht herausnehmen.

Android 2.3.4


 
A100:

Der Experte ist entladen (d.h. er kann das Diagramm nicht mehr beeinflussen). Laden Sie das Testskript (10 Zeilen). Frage: Welche der angegebenen Zeilen ändert den Diagrammkommentar?

Es gibt keinen Code zwischen den Aufrufen von ::ChartGetString()

Nach Aktion (denn Diagrammoperationen sind synchron/sequenziell, EA und Skript arbeiten in ihren eigenen Threads):

  1. ruft das Skript die erste ChartGetString
  2. ruft der Expert Advisor ChartSetString auf
  3. der Expert Advisor wird beendet
  4. ruft das Skript den zweiten ChartGetString auf
 
Ilyas:
Durch Aktionen (bei einem Diagramm sind die Operationen synchron/sequenziell, Expert Advisor und Skript arbeiten in ihren Threads):

  1. Skript ruft zuerst ChartGetString auf
  2. Experte ruft ChartSetString auf
  3. Experte beendet
  4. ruft das Skript den zweiten ChartGetString auf

Der Experte Test.ex5 kann nichts aufrufen (Punkt 2), da er zum Zeitpunkt der Ausführung des Skripts bereits vorher entladen wurde,

d.h. Schritt 3 liegt offensichtlich vor Schritt 1

Nachfolgend ist das Ergebnis des Skripts Test.ex5 aufgeführt

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...und sollte "OK" sein.

 
A100:

Der Experte Test.ex5 kann nichts aufrufen (Punkt 2), denn wenn das Skript läuft, ist es bereits vorher entladen,

d.h. Schritt 3 liegt offensichtlich vor Schritt 1

Nachfolgend ist das Ergebnis des Skripts Test.ex5 aufgeführt

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...und sollte "OK" sein.

ExpertRemove entfernt den Expert Advisor nicht sofort aus dem Chart, sondern erst nach Abschluss von OnTick. Und sie ist nicht analog zur Funktion exit()

Das Zitat im Protokoll veranschaulicht nur die Tatsache des Aufrufs der Funktion ExpertRemove(). Die Tatsache, dass der Expert Advisor entfernt wurde, wird im Terminalprotokoll des Kunden als "Experte entfernt" angezeigt.

Quellcode des Expert Advisors anzeigen

 
Slawa:

Das Zitat im Protokoll veranschaulicht nur die Tatsache des Aufrufs der Funktion ExpertRemove(). Der Expert Advisor wird aus dem Client-Terminalprotokoll als "Experte entfernt" entfernt.

Detaillierter Ablauf der Maßnahmen:

  1. Öffnen Sie ein neues Diagramm
  2. Führen Sie Test.ex5 auf dem Chart des Expert Advisors aus (in wenigen Sekunden erscheint die folgende Meldung auf der Registerkarte Experten: 2016.08.08 15:40:47.267 Test (EURUSD,M15) ExpertRemove() function called' und der EA wird aus dem Chart entladen
  3. Vergewissern Sie sich, dass auf der Registerkarte Protokoll eine Meldung der folgenden Form angezeigt wird: 2016.08.08 15:40:47.286 Experten Test (EURUSD,M15) entfernt'
  4. Führen Sie das Skript Script1.ex5 auf demselben Chart aus (der Name des Skripts entspricht hier nicht dem Namen des Expert Advisors)

Daraufhin wird auf der Registerkarte Experten eine Meldung der folgenden Form angezeigt: 2016.08.08.08 15:52:43.173 Scripts1 (EURUSD,M15) 120-136'
So sollte es sein:'2016.08.08 15:52:43.173 Skripte1 (EURUSD,M15) OK'

//Script1.mq5
void OnStart()
{
        string text1 = NULL;
                       ChartGetString( 0, CHART_COMMENT, text1 ); //(*)
        string text2 = ChartGetString( 0, CHART_COMMENT );
        if ( text1 != text2 )
                Print( StringLen( text1 ), "-", StringLen( text2 ));
        else
                Print( "OK" );
}
Dateien:
Test.ex5  13 kb
Script1.ex5  7 kb
 
A100:

So sollte es sein:'2016.08.08 15:52:43.173 Skripte1 (EURUSD,M15) OK'

Dies lässt sich leicht erkennen, wenn Sie die Zeile (*) in Script1.mq5 durch folgende Zeile ersetzen

               text1 = ChartGetString( 0, CHART_COMMENT );
Grund der Beschwerde: