MetaTrader 4 Build 529 beta mit neuem Compiler veröffentlicht - Seite 118

 
Candid:

Die Demoversionen der Indikatoren lassen sich nicht starten. Bei Rechtsklick wird der Test gar nicht angeboten, bei Doppelklick und anschließendem Drücken des "Test"-Buttons wird der Tester zwar geladen, reagiert aber nicht auf den "Start"-Button. Das Tagebuch des Strategietesters bleibt leer. Expert Advisors werden eingeführt. 555 bauen.


In 558 gibt es eine kleine Änderung, wenn vor der beschriebenen Prozedur mit Doppelklick der Eintrag über die Beladung und der nächste über die Entladung des Indikators im allgemeinen Journal erschien, erscheint jetzt der Eintrag über die Entladung nicht. Außerdem wird der Indikator jetzt im Tester angezeigt, ohne dass der Ordner "Markt" erwähnt wird. Aber das Protokoll des Testers ist noch tadellos.

Soweit ich weiß, beschäftigt sich niemand mit dem Problem des Testens von Demo-Versionen von Indikatoren, es scheint ein Echo der Fehlersuche beim Testen von Expert Advisors zu sein. Vielleicht ist es einfacher, den Fehler durch Testen der Indikatoren zu finden?

 
stringo:

Die Funktion IndicatorCounted() war ursprünglich eine Krücke. Wer Indikatoren in drei programmiert hat, wird verstehen, was ich meine.

In five haben wir eine elegante Lösung mit dem Parameter prev_calculated und der Rückgabe der Anzahl der berechneten Balken in der Funktion OnCalculate gefunden. Und diese Lösung ist nun in die neuen vier



Ist zwar schonlange her, aber immer noch schön :)
 
Candid:
Würde das Testen von Indikatoren die Fehlersuche erleichtern?
Es wird einenIndikatorentest geben, aber nicht jetzt. Aber das wird es.
 
Kims Objekterstellungsfunktion scheint aufgrund der OBJPROP_ANCHOR-Eingabe veraltet zu sein. Ich werde es jetzt überprüfen, aber es gibt noch einige Probleme mit der Grafik. Ich werde versuchen, alle Details mit Beispielen später zu veröffentlichen.
 
stringo:

Ich wiederhole. Wir machen es wie in Five. Seien Sie so freundlich, einen weiteren Ankerpunkt anzuwenden - geben Sie an, wo im Objekt der "Ankerpunkt" des Objekts liegt. In Ihrem Fall ist es die obere rechte Ecke des Objekts.




Die ObjectSet-Funktion funktioniert also in der neuen Version des Terminals anders als in der alten. Und wir müssen alle Expert Advisors, die die Ausgabe in einem Diagramm verwenden, ein wenig ändern.

In der vorherigen Version, wenn wir ObjectSet(Name,OBJPROP_CORNER, 1);
auswählen, würde der "Ankerpunkt" automatisch in der oberen rechten Ecke des Objekts liegen. Haben Sie vor, dies zu verlassen, um die Kompatibilität zu gewährleisten?

 
alexvd:

Haben Sie versucht, einen EA auf ein Diagramm zu werfen (nicht im Strategie-Tester)? Irgendwelche Meldungen im Logbuch?


PS. Das Problem wurde behoben. Wir werden auf den nächsten Build mit einer Korrektur warten.

1. Nein, ich habe nicht versucht, einen EA an ein Diagramm anzuhängen. Ich habe keine Einträge im Journal des Testers gesehen, außer der Standardausgabe seiner Einstellungen. Daher erhielt ich die Ausgabe von init() des EA, aber es gab keine Ausgabe von start() des EA im Journal.

2. unverzüglich. Vielen Dank, wir freuen uns darauf.

 
Lion.Fx:

Es hat sich herausgestellt, dass die ObjectSet-Funktion in der neuen Version des Terminals anders funktioniert als in der alten Version. Und wir werden alle Expert Advisors, die die Ausgabe von Informationen auf dem Chart verwenden, ein wenig ändern müssen.

In der Vorgängerversion war das so: ObjectSet(Name,OBJPROP_CORNER, 1);
Der Ankerpunkt wurde automatisch in der oberen rechten Ecke des Objekts platziert. Haben Sie nicht vor, die Kompatibilität zu verlassen?

Nun, ja, es ist wünschenswert, die Standardverankerung wie in alten Builds zu belassen.
 
Ich habe gerade die Funktion von Kim überprüft, die seit vielen Jahren treue Dienste leistet :) (wieder ein Dank an ihn).
Durch Hinzufügen des Parameters OBJPROP_ANCHOR konnten die Objekte an ihren Platz gesetzt werden (keine unklare Koordinatenverschiebung).

Danke, dass Sie ANCHOR hinzugefügt haben. Das ist zwar bequemer, aber man muss damit viele Dinge reparieren.

Hier ist die Funktion:

//+------------------------------------------------------------------+
void SetLabel(string nm, string tx, string ft,color cl, int xd, int yd, int cr=0, int anch=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx, fs,ft);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_ANCHOR, anch);   //<----------------
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+------------------------------------------------------------------+

und anrufen:

  SetLabel("Hello",  "Hello" ,  FontType, FontColor,  20, 20, 3, 1, FontSize);

 
Lion.Fx:

Es hat sich herausgestellt, dass die ObjectSet-Funktion in der neuen Version des Terminals anders funktioniert als in der alten Version. Und wir müssen alle EAs, die die auf dem Chart ausgegebenen Informationen nutzen, ein wenig anpassen.

In der Vorgängerversion war das so: ObjectSet(Name,OBJPROP_CORNER, 1);
Der "Ankerpunkt" wurde automatisch an der oberen rechten Ecke des Objekts platziert. Haben Sie vor, dies zu verlassen, um die Kompatibilität zu gewährleisten?

Das macht Sinn. Mal sehen, was wir tun können.

PS. Ich habe genau das getan.

 
Ich habe in ServiceDesk #907205 einen Nachtrag zum offenen Antrag erstellt und einen Code zur Überprüfung beigefügt.