Fehler, Irrtümer, Fragen - Seite 1611

 
Slawa:
Der Quad-Tester hat nur OnInit, OnTick, OnDeinit. Kein Timer, keine Chart-Ereignisse, keine Ticks von fremden Charakteren und auch der Tester Sleep funktioniert nicht

Ich danke Ihnen für Ihre Antwort. Soweit ich verstanden habe, werden Sie den Timer-Handler nicht finalisieren?

 

Fehler in der neuen Compiler-Version, Build 1354:

2016.07.08 14:10:04.626 MetaCOT2 COT Absolute Changes (EURUSD,H1) math overflow or undefined calculation detected. Check source code, please

Die Meldung erscheint, bevor OnInit überhaupt aufgerufen wird. Es werden keine komplexen Objekte verwendet. Es werden auch keine Berechnungen durchgeführt. In früheren Versionen funktionierte alles einwandfrei.

Erscheint beim Laden eines benutzerdefinierten Indikators.

 
coderex:
wollen Sie std::cout und std::cin?

Nein, das ist schon lange vorbei.

es war unbequem, dass printf() in MQL, anders als in C++, in eine neue Zeile wechselt, wenn es nicht dazu aufgefordert wird

 

Hier gibt es gleich mehrere Fehler

class B;
class A { public:
        virtual B *f() { Print( __FUNCSIG__ ); return &this; }
};
class B : public A { public:
        virtual B *f() { Print( __FUNCSIG__ ); return &this; }
};
void OnStart() 
{
        A a;
        a.f().f();
}

1. Implizite Transformation von der Basisklasse zur abgeleiteten Klasse. Sie muss explizit sein, sonst erhalten Sie eine Fehlermeldung

        virtual B *f() { Print( __FUNCSIG__ ); return (B *)&this; } //(*)
2. Ausführungsfehler: Ergebnis (von unten nach oben)

B* B::f()
B* A::f()

Wenn Sie es aber in C++ umschreiben, wird das Ergebnis sein

B* A::f()
B* A::f()

 
Wenn überhaupt, dann liegt auch hier ein Besetzungsfehler vor. Die Übertragung von &this auf B* sollte einen Fehler auslösen. Das Gute daran ist, dass es das Gleiche bewirken soll.
 
Комбинатор:
Wenn überhaupt, dann liegt auch hier ein Besetzungsfehler vor. Die Übertragung von &this auf B* sollte einen Fehler auslösen. Übrigens auch in den Pluspunkten.
Explizite Konvertierung ist zulässig (mit C++ prüfen)
 
A100:
Explizite Konvertierung ist zulässig (in C++ prüfen)
Brauchen dynamic_cast hier, funktioniert es?
 
Комбинатор:
Hier brauchen wir dynamic_cast, funktioniert das?
wenn
        virtual B *f() { Print( __FUNCSIG__ ); return dynamic_cast<B *>( &this ); }

dann ist das Ausführungsergebnis korrekt (von unten nach oben):

Ungültiger Zeigerzugriff
B* A::f()

 
A100:

Der andere Wurf in Ihrem Beispiel funktioniert nicht richtig.

Es liegt also ein Fehler in der mql-Typkonvertierung vor, der sich in einen dynamischen Cast verwandeln sollte, was in Wirklichkeit nicht oder nicht korrekt geschieht.

 

Sehr geehrte Damen und Herren!

MT4 bietet eine sehr praktische Möglichkeit, Stop-Orders durch Ziehen zu setzen: Wenn ich den Cursor von der Handelslinie wegziehe, kann ich sofort den Gewinn sehen, der erzielt wird, wenn der Handel zu dem Preis geschlossen wird, an dem sich der Cursor befindet.

Ich verwende eine Strategie, bei der ich oft ein ähnliches Tool benötige, aber nicht für einen einzelnen Handel, sondern für ALLE in einem bestimmten Diagramm eröffneten Geschäfte.

Das heißt, ich möchte, dass, wenn ich den Cursor auf einen beliebigen Kurs setze, die Größe des GESAMTGewinns angezeigt wird, der sich ergibt, wenn ALLE Geschäfte zu dem Kurs geschlossen werden, auf den der Cursor gesetzt ist.

Und es wäre ziemlich luxuriös, wenn beim Loslassen der Maustaste alle offenen Geschäfte automatisch auf den richtigen TP und SL für diesen Gewinn gesetzt würden, wie es derzeit bei einem einzelnen Geschäft der Fall ist.

Vielleicht will ich zu viel, aber ich habe eine ideale Situation beschrieben. Zumindest möchte ich einen Rechner, der die Niveaus und Volumina der offenen Geschäfte (alle Geschäfte sind unidirektional, entweder alle verkaufen oder alle kaufen) und den Schlusskurs eingibt und den Gesamtgewinn ausgibt, der nach dem Schließen aller Geschäfte erzielt wird, wenn ein bestimmter Preis erreicht wird. Es könnte sich beispielsweise um einen Indikator in Form einerhorizontalen Linie handeln, die den Preis anzeigt, bei dem der Gruppengewinn bei Börsenschluss gleich Null sein wird. Ich berechne sie gerade von Hand auf einem Taschenrechner, aber sie ist sehr lang und kann Fehler verursachen.

Ich würde selbst auf dem Markt suchen, aber ich weiß nicht, wonach ich suchen soll. Soll es ein Expert Advisor, ein Indikator, ein Roboter oder etwas anderes sein? Wenn es nichts Fertiges gibt, bin ich bereit, die Bedingungen für einen Auftrag zur Erstellung eines solchen Instruments zu besprechen.