Fehler, Irrtümer, Fragen - Seite 2588

 
Aleksey Vyazmikin:

Ich verstehe immer noch nicht - haben Sie Prädiktoren, die eine tiefere Berechnung erfordern? Ich brauche eine - MA auf dem Tageschart :) Ich führe die Tests einfach ein Jahr früher durch, und der Handel vor diesem Datum kann verboten werden...

Ja - mehr als ein Jahr lang muss man sich mit der Geschichte befassen. Die Lösung ist bereits gefunden worden. Jetzt werde ich auch einen 3-Jahres-Vorlauf machen und sie auslassen.
 
Die KB gibt den Code nicht weiter. Es gibt diese Fehler
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,35) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,35) : error 351: 'ToNull' - access to non-static member or function

Bitte aktualisieren Sie den KB-Compiler.

 
Vladimir Simakov:
Wenn ich aus dem Urlaub zurückkomme, werde ich mich mit der Frage befassen, wenn es nicht zu viel Mühe macht. Aber logischerweise kann der Fehler in Ihrem Code und nicht in mql liegen.
Übrigens, nur so zum Spaß, was wäre, wenn Sie eine Bibliothek haben, die mit welcher Codierung arbeitet? Sind Sie sicher, dass utf-16, aber was ist, wenn es utf-8, nachdem alle, die häufigste.

Das habe ich noch nicht überprüft, danke für den Hinweis. Ich werde in diese Richtung gehen.
Die Bibliothek ist für Ocean, die Klassen, mit denen ich arbeite, sind mit einem W markiert, d.h. Unicode.

So wie ich die Kodierung verstehe.

const char *Utf8;
const char *Ansi;
const wchar_t *Utf16;
const wchar_t *Utf32;

utf-16 impliziert den Typ wchar_t, die Bibliotheksfunktion, die die Zeichenkette liest, gibt const wchar_t*
zurück. Daraus wird ersichtlich, dass die Funktion einen Zeiger auf die Zeichenkette in utf-16-Kodierung zurückgibt
In den Projekteigenschaften ist auch die Unterstützung von Unicode-Zeichen ausgewählt.
In der mql-Dokumentation steht, dass string in Unicode funktioniert.

 

Ich optimiere gerade wieder, ich bin mir nicht sicher, ob ich die Ausführungsgeschwindigkeit dieses Codes testen kann:

void OnStart()
{  datetime m_stoptime = 0;
//1.
   if(m_stoptime < TimeCurrent())
   {
      //расчеты   
   }


//2.
   MqlTick last_tick;
   if(SymbolInfoTick(_Symbol, last_tick))
   {  if(m_stoptime < last_tick.time) 
      {
         //расчеты
      }
   }

}

Ich vermute, dass die Variante 2 schneller sein wird?

wenn ja, wo können die Fallstricke sein - ich verwende in OnTick() - in den Optimierer Handel Zeit zu suchen, auf der Suche nach Möglichkeiten zur Optimierung des Codes


HH: Ich kann fragen, wie man die Geschwindigkeitsoptionen Nr. 1 und Nr. 2 überprüft. Es ist sehr wahrscheinlich, dass der Compiler den ausführbaren Code optimiert und die Tests nicht korrekt sind.

 
Igor Makanu:

Ich kann fragen, wie man die Varianten 1 und 2 in Bezug auf die Geschwindigkeit überprüfen kann. Es besteht eine hohe Wahrscheinlichkeit, dass der Compiler den ausführbaren Code optimiert und die Tests nicht korrekt sind.

Führen Sie den üblichen Test getrennt für 1 und 2 durch und vergleichen Sie die Zeiten? )

Wenn der Zeitaufwand vernachlässigbar ist, führen Sie die gleiche Optimierung mit Option 1 und Option 2 durch.

 
Igor Makanu:

HH: Ich kann fragen, wie man die Varianten #1 und #2 auf Geschwindigkeit testen kann. Es ist sehr wahrscheinlich, dass der Compiler den ausführbaren Code optimiert und die Tests nicht korrekt sind - deshalb frage ich

https://www.mql5.com/ru/code/18804

TesterBenchmark
TesterBenchmark
  • www.mql5.com
При написании разных версий кода может возникнуть необходимость измерения влияния их на общую производительность советника в тестере. Это позволяет не только понять, насколько оптимален написанный код по сравнению с другим, но и дает предпосылки к будущей быстрой оптимизации советника. Такой подход позволяет выявить "бутылочное горлышко" в...
 
Igor Makanu:

Ich optimiere gerade wieder, ich bin mir nicht sicher, ob ich die Ausführungsgeschwindigkeit dieses Codes testen kann:

Ich vermute, dass die Variante 2 schneller laufen wird?

wenn ja, wo können die Fallstricke sein - ich verwende in OnTick() - in der Optimierer-Handelszeit zu finden, auf der Suche nach Möglichkeiten zur Optimierung des Codes


SZZ: Ich kann fragen, wie die Geschwindigkeitsoptionen Nr. 1 und Nr. 2 zu überprüfen sind, da es sehr wahrscheinlich ist, dass der Compiler den ausführbaren Code optimiert und die Tests nicht korrekt sind - daher frage ich

Prüfen Sie im Debug-Modus. Der Compiler soll dort nicht optimieren, obwohl ich nicht weiß, wie es in der Realität ist.
 

Frage zu ArrayResize. Ich lege eine Reserve für mehrere Gigabyte auf einmal an. Dann erhöhe ich schrittweise die Größe, die geringer ist als die ursprüngliche Reserve.

Warum zeigt der TaskManager einen Anstieg des Speicherverbrauchs bei der Vergrößerung an?

 
fxsaber:

Frage zu ArrayResize. Ich lege eine Reserve für mehrere Gigabyte auf einmal an. Dann erhöhe ich schrittweise die Größe, die geringer ist als die ursprüngliche Reserve.

Warum zeigt der TaskManager einen Anstieg des Speicherverbrauchs bei der Vergrößerung an?

Denn neben dem Metatrader gibt es ja auch noch das Windows-Betriebssystem, das letztlich entscheidet, welcher der Dutzenden von Prozessen (jeder von ihnen hat übrigens standardmäßig 4 GB Adressraum) wirklich Arbeitsspeicher zugewiesen bekommen soll (wie viel Arbeitsspeicher haben Sie dort?).
 
Andrey Khatimlianskii:

Führen Sie einen normalen Test getrennt für 1 und 2 durch und vergleichen Sie die Zeiten? )

Wenn die Zeit vernachlässigbar ist, führen Sie die gleiche Optimierung mit Variante 1 und Variante 2 durch.

Ich mache irgendetwas falsch, ich konnte immer noch keinen Unterschied feststellen, die Ergebnisse schwanken um 0,1 Sekunden bei einem Durchlauf.