Fehler, Irrtümer, Fragen - Seite 1667

 
Ich habe eine alte Telefonnummer in meinem Profil gefunden, die schon lange nicht mehr existiert. Ich wollte sie ändern, aber es ist eine Bestätigung per SMS an die alte Nummer erforderlich.
 
BlackTomcat:
Natürlich verstehe ich nicht viel, aber ich denke, dass aus irgendeinem Grund die Indikatorkopien, die von verschiedenen "Mastern" erstellt wurden, selbst mit denselben Parametern und auf ein und dasselbe Diagramm angewandt, unterschiedliche Griffe haben. Im Prinzip wissen sie nichts von der bereits vorhandenen Kopie des Indikators, und das sollten sie auch nicht. Beim Zeichnen überlagern sie sich dann einfach.
Ich kann mich irren. Aber die Logik legt nahe, dass es so sein muss, wie im vorherigen Absatz geschrieben.

Ich bin zwar kein MQ-Entwickler, aber soweit mir dieser Prozess erklärt wurde, hat Five eine effektive Zwischenspeicherung von Indizes vorgenommen, so dass es immer nur einen "gleichen" Einzug gibt und mehrere "Hosts" einen Link darauf erhalten. Vielleicht sind die Griffe anders - ich habe es nicht überprüft -, aber im Inneren ist es die gleiche Einheit. Niemand hat etwas davon gesagt, dass "sie von der bereits vorhandenen Kopie wissen sollten" - bitte keine Spekulationen. Auf jeden Fall kennt niemand außer dem "Host" seine Indikatoren, und für einen Indikator wird eine Referenzzahl von verschiedenen "Hosts" geführt, aber er kennt die Hosts nicht.

Wie die Praxis zeigt, ist die Logik von Mensch zu Mensch unterschiedlich. Zum Beispiel stimmt meine Logik sehr oft nicht mit der von MQ überein, aber hier erzähle ich nur, was ich von ihnen gehört habe.

 
Stanislav Korotky:

Ich bin zwar kein MQ-Entwickler, aber soweit mir dieser Prozess erklärt wurde, hat Five eine effektive Zwischenspeicherung von Indizes vorgenommen, so dass es immer nur einen "gleichen" Einzug gibt und mehrere "Hosts" einen Link darauf erhalten. Vielleicht sind die Griffe anders - ich habe es nicht überprüft -, aber im Inneren ist es die gleiche Einheit. Niemand hat etwas davon gesagt, dass "sie von der bereits vorhandenen Kopie wissen sollten" - bitte keine Spekulationen. Auf jeden Fall kennt niemand außer dem "Host" seine Indikatoren, und für einen Indikator wird eine Referenzzahl von verschiedenen "Hosts" geführt, aber er kennt die Hosts nicht.

Wie die Praxis zeigt, ist die Logik von Mensch zu Mensch unterschiedlich. Zum Beispiel stimmt meine Logik sehr oft nicht mit der von MQ überein, aber hier erzähle ich nur, was ich von ihnen gehört habe.

Das, worüber Sie geschrieben haben, steht nämlich direkt in der Dokumentation:

Alle Funktionen wie iMA, iAC, iMACD, iIchimoku usw. erstellen eine Kopie des entsprechenden technischen Indikators im globalen Cache des Client-Terminals. Wenn bereits eine Kopie des Indikators mit diesen Parametern existiert, wird keine neue Kopie erstellt, sondern der Zähler der Verweise auf diese Kopie erhöht.
Ich frage mich nur, ob der "globale Client-Terminal-Cache" z. B. den Tester einschließt? Denn ich kann ein und denselben Expert Advisor mit denselben Indikatoren im Terminal (auf einem Konto) und im Strategy Tester (auf der Historie) gleichzeitig ausführen, und ich bin nicht sicher, dass ihre Berechnungspuffer identisch sind. Wenn Sie jedoch die Tiefe des im Client-Terminal gespeicherten Verlaufs berechnen, können sie das.
 
A100:

Es ist mir gelungen, ein Testskript in der Nähe des Quellprogramms zu erstellen, das bei der Ausführung einen Fehler aufweist

Ergebnis: Ungültiger Funktionszeigeraufruf in 'Script2.mq5'.

1405 bauen. Der Fehler selbst bleibt bestehen - er wurde in einen anderen Teil des Programms verschoben - ich werde mich später darum kümmern

Aber es sind neue aufgetaucht, die es vorher nicht gab

typedef int (*fn)();
class A {
public:
        A() { a = &this; ::ArrayResize( f, 1 ); f[ 0 ] = f0; }
        virtual int g0() { return 0; }
        static  int f0() { return a.g0(); }
        static A* a;
        fn f[];
};
A* A::a;
void OnStart() { A b; }
Ergebnis: ungültige EX5-Datei (8)
 
Wie mache ich Array-Elemente mit Shift+F9 im Debugging sichtbar?
 
fxsaber:
Wie kann ich Shift+F9 Array-Elemente im Debugging sichtbar machen?
Die Anzeige von Array-Elementen wird noch nicht unterstützt
 
Renat Fatkhullin:

In der Tat ist der Aufruf von IndicatorRelease in 99 % der Fälle ein logischer Programmierfehler.

Die Erstellung von Indikatoren ist eine der teuersten Operationen, die sehr tiefe Mechanismen ihrer Berechnung in Gang setzen. Der Versuch, einen Indikator-Handle zu schließen, ist ebenfalls ein sehr kostspieliger Vorgang, wenn man die tatsächlichen zugrunde liegenden Prozesse seiner Implementierung bedenkt. Das häufige Erstellen und Schließen von Indikatoren zeigt, dass der Entwickler das Wesen der Vorgänge überhaupt nicht versteht.

Es ist sehr leicht zu verstehen.

Verstehe ich das richtig, dass der Benutzer bei der Verwendung von iCustom anstelle von IndicatorCreate die Verantwortung für IndicatorRelease auf die universelle (und daher nicht optimale) Lösung der Entwickler verlagert?

In dem die erstellten Indikatoren für einige Zeit gespeichert werden, während sie mit einer bestimmten Häufigkeit aufgerufen werden. Wenn sie einige Zeit nicht aufgerufen werden, kommt es zu einem erzwungenen IndicatorRelease. Richtig?

D.h. iCustom sollte unter Berücksichtigung der goldenen Mitte zwischen Implementierungskomplexität und Leistung optimal genutzt werden. Aber wenn Sie die maximale Geschwindigkeit wollen, sollten Sie besser versuchen, alles durch IndicatorCreate zu tun, indem Sie Ihren eigenen schnelleren (nicht universellen) Algorithmus von Indikatoren schaffen und die Besonderheiten ihrer Verwendung kennen.

Habe ich das richtig verstanden?

 
fxsaber:

Verstehe ich das richtig, dass der Benutzer bei der Verwendung von iCustom anstelle von IndicatorCreate die Verantwortung für IndicatorRelease auf die universelle (und daher nicht optimale) Lösung der Entwickler abwälzt?

In dem die erstellten Indikatoren für einige Zeit gespeichert werden, während sie mit einer bestimmten Häufigkeit aufgerufen werden. Wenn sie einige Zeit nicht aufgerufen werden, kommt es zu einem erzwungenen IndicatorRelease. Oder?

D.h. iCustom sollte optimal genutzt werden, unter Berücksichtigung der goldenen Mitte zwischen der Komplexität der Implementierung und der Leistung. Aber wenn Sie die maximale Geschwindigkeit wollen, sollten Sie besser versuchen, alles durch IndicatorCreate zu tun, indem Sie Ihren eigenen schnelleren (nicht universellen) Algorithmus von Indikatoren erstellen und die Besonderheiten Ihrer eigenen Verwendung von Indikatoren kennen.

Habe ich das richtig verstanden?

Nein, das sind Sie nicht.

Die beiden Funktionen sind absolut gleichwertig. Beide Funktionen geben den Indikator-Handle zurück

 
Slawa:

Nein, falsch.

Beide Funktionen sind absolut gleichwertig. Beide Funktionen geben den Indikator-Handle zurück

IndicatorRelease sollte nach iCustom durchgeführt werden?

Grundsätzlich stellt sich heraus, dass es durchaus möglich ist, MT4 EAs in MT5 laufen zu lassen. Für diejenigen, die keine anderen Indikatoren intern verwenden - sehr einfach. Diejenigen, die sie verwenden - erstellen Sie eine analoge der MT4-iCustom Lagerung. Auch die Frage der Unvorbereitetheit der Daten ist durchaus möglich.

Schreiben Sie einen solchen Adapter und jeder MT4-Indikator wird erfolgreich im MT5 laufen. Aber in diesem Fall wird Nikolay Kositsyn seinen Job verlieren... Nein, besser nicht.

 
fxsaber:

IndicatorRelease sollte nach iCustom durchgeführt werden?

Grundsätzlich stellt sich heraus, dass es durchaus möglich ist, MT4 EAs in MT5 laufen zu lassen. Für diejenigen, die keine anderen Indikatoren intern verwenden - sehr einfach. Diejenigen, die sie verwenden - erstellen Sie eine analoge der MT4-iCustom Lagerung. Auch die Frage der Unvorbereitetheit der Daten ist durchaus möglich.

Schreiben Sie einen solchen Adapter und jeder MT4-Indikator wird erfolgreich im MT5 laufen. Aber in diesem Fall wird Nikolay Kositsyn seinen Job verlieren... Nein, das möchte ich lieber nicht.

Ich erinnere mich, dass die Dokumentation sagt, dass die meisten korrekten Weg zu initialisieren (erstellen) Indikatoren Griffe in der Funktion OnInit, und führen IndicatorRelease in der Funktion OnDeinit. Das bedeutet, dass die Indikatoren die ganze Zeit, während der Expert Advisor läuft, relevant bleiben.