MetaEditor Build 1463 - Seite 14

 
Renat Fatkhullin:

Noch nicht.

ArrayPrint - ähnlich.
 
Das Problem ist.
void OrderSend( int ) {}  // no problem
void Print( MqlTick& ) {} // 'Print' - override system function

D.h. eine externe Klasse "::" erlaubt keine Überladung, aber eine interne Klasse schon.

Deshalb müssen wir die Beschränkung auf eine Krücke stützen.

class PRINTCLASS
{
public:  
  template <typename T>
  static void MyPrint( const T &Value )
  {
    T Array[1];
    
    Array[0] = Value;
    
    ::ArrayPrint(Array);
  }
  
  template <typename T>
  static void MyPrint( const T Value )
  {
    ::Print(Value);
  }
};

#define Print(A) PRINTCLASS::MyPrint(A)

void OnStart()
{
  MqlTick Tick;
  
  SymbolInfoTick(_Symbol, Tick);

  Print(Tick);
  
  int i = 5;
  
  Print(i);
}
ZS ArrayPrint wird auf der Website nicht hervorgehoben.
 
Der 1467er Build ist jetzt verfügbar. Welche Änderungen gibt es?
 
Immer noch nicht geklärt
 

Ich habe ein Problem mit meinem Indikator im Testgerät gefunden. Seit Build 1463 hängt sich der Tester beim Testen des Indikators fast sofort nach dem Start auf. Es ist das Prüfgerät, das hängt, nicht der Indikator. Denn beim Kompilieren mit dem alten oder neuen Compiler bleibt das Problem bestehen, aber im alten Tester wird alles normal getestet.

Die Stelle im Code, die zu einem Hänger führt, konnte nicht gefunden werden. Ich habe versucht, den Kommentar in verschiedenen Codezeilen zu machen, aber er bleibt immer an verschiedenen Stellen hängen. Im Allgemeinen eine Art internes Fehlerprüfgerät.

 
Alexey Navoykov:

Ich habe ein Problem mit meinem Indikator im Testgerät gefunden. Seit Build 1463 hängt sich der Tester beim Testen des Indikators fast sofort nach dem Start auf. Es ist das Prüfgerät, das hängt, nicht der Indikator. Denn beim Kompilieren mit dem alten oder neuen Compiler bleibt das Problem bestehen, aber im alten Tester wird alles normal getestet.

Die Stelle im Code, die zu einem Hänger führt, konnte nicht gefunden werden. Ich habe versucht, den Kommentar in verschiedenen Codezeilen zu machen, aber er bleibt immer an verschiedenen Stellen hängen. Es handelt sich also um eine Art internen Fehler im Prüfgerät.

Hängt also immer noch oder haben Sie im Tester nur die maximale Testgeschwindigkeit eingestellt?

Hinzugefügt: Das ist mir bisher noch nicht begegnet, daher ist es sehr wünschenswert, Ihren Code zu überprüfen.

 
Alexey Navoykov:

Die Stelle im Code, an der das Problem auftrat, konnte nicht gefunden werden.

Legen Sie fest, dass der gesamte Bildschirm dauerhaft im Video aufgezeichnet wird. Wenn Sie auf einen Fehler stoßen, stoppen Sie die Aufnahme und schneiden Sie alles weg, was im Video nicht benötigt wird.
 
Vladimir Karputov:

Friert er also ein, oder haben Sie ihn einfach auf die maximale Testgeschwindigkeit im Testgerät eingestellt?

Hinzugefügt: Das ist mir bisher noch nicht begegnet, daher ist es sehr wünschenswert, Ihren Code zu überprüfen.

Es friert bei jeder Geschwindigkeit ein. Das StrategyTestVisualization-Fenster reagiert nicht. Leider kann ich Ihnen nicht den gesamten Code zeigen, da es sich um ein kommerzielles Produkt handelt.

Sie hängt auch nicht von der Art der Prüfung und dem Zeitrahmen ab.

 
Alexey Navoykov:

Es friert bei jeder Geschwindigkeit ein. Das StrategyTestVisualization-Fenster reagiert nicht auf Anfragen. Leider ist es nicht möglich, den gesamten Code zu zeigen, da es sich um ein kommerzielles Produkt handelt.

Die einzige Möglichkeit, den Code anzuzeigen, ist die Verwendung von ServiceDesk. Allerdings besteht der Verdacht auf eine unendliche While-Schleife in dem Indikator...
 
fxsaber:
2016.11.10 11:07:42.764 Test (EURUSD,M1)                         [time]   [bid]   [ask]  [last] [volume]    [time_msc] [flags]
2016.11.10 11:07:42.764 Test (EURUSD,M1)        [0] 2016.11.10 11:10:11 1.09207 1.09217 1.09207   500000 1478776211595       2

Das einzige, was fehlt, ist ein ArrayToString. Dann könnte die Ausgabe geändert werden. Zum Beispiel time_msc und flags.

Bitte ändern Sie MqlTick in
struct MqlTick
  {
   datetime     time;          // Время последнего обновления цен
   double       bid;           // Текущая цена Bid
   double       ask;           // Текущая цена Ask
   double       last;          // Текущая цена последней сделки (Last)
   ulong        volume;        // Объем для текущей цены Last
   datetime_msc time_msc;      // Время последнего обновления цен в миллисекундах
   uint         flags          // Флаги тиков
  };
D.h. Einführung eines neuen Typs datetime_msc.
Grund der Beschwerde: