Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Danke! Wir freuen uns auf kommerzielle Angebote. Viel Glück!
Was meinen Sie mit der Schnelligkeit der Angebotseinholung? Wenn es sich um Ticks handelt, dann habe ich bereits geschrieben, dass die Arbeit mit Ticks von Kursen auch direkt in MT4 schwierig ist.
Die Bibliothek war ursprünglich nicht dazu gedacht, Zecken zu fangen. Das hat damit zu tun, dass sich das System bei sehr aktiven Märkten einfach aufhängen kann, weil es nicht mit den Ticks Schritt halten kann. Deshalb hat die Bibliothek einen eingebauten Softwareschutz gegen die Zeckenlawine.
Die Vorteile der Verwendung eines gemeinsamen Speichers sind die hohe Zuverlässigkeit eines solchen Systems und das Fehlen von Festplattenverstopfungen. Außerdem können mehrere Programme auf die Bibliothek zugreifen, und sie müssen den genauen Speicherort der temporären Dateien nicht "kennen". Viel Glück!
es scheint, dass der Autor es übertrieben hat :)
soweit ich verstehe, wenn der EA sich innerhalb der start() Funktion befindet (und von dort aus Informationen über einen Tick an den API-Client sendet), dann wird MT keinen neuen Tick geben, bis der EA die start() Funktion verlässt. Deshalb ist nicht klar, wie eine Lawine von Ticks entstehen kann?
Wenn der EA in einer Schleife läuft und Ticks über RefreshRates empfängt, sollte er zuerst die Client-API verlassen, und dann wird der Aufruf von RefreshRates erfolgen. Deshalb gibt es hier auch keinen Platz zum Frieren.
klingt gut, ist aber nicht die einzige Möglichkeit der Kommunikation zwischen Prozessen.
damit ist das Thema "Was ist der Sinn der gemeinsamen Speichernutzung?" nicht gelöst :)
imho ist MMF nur in einem Fall gut, wenn man große Datenmengen zwischen Prozessen pumpen muss - die Pumpgeschwindigkeit beträgt ~150Mb/sec. (vor ein paar Monaten musste ich einen solchen Mechanismus nur mit MMF machen, weil dies laut Tests der schnellste Weg ist).
in dieser Aufgabe (Übergabeparameter für OrderSend etc.) - es ist wie ein Vogel durch eine Feder, einfacher, ein Fenster zu erstellen und SendMessage mit wm_copydata zu verwenden.
Ich glaube nicht, dass ich behaupte, dass der verwendete Algorithmus der beste ist. Das ist das Schöne am Programmieren, dass ein solches Problem auf mindestens ein Dutzend Arten gelöst werden kann. Auch die Variante mit den temporären Dateien hat voll funktioniert. Meine Aufgabe war es, einen zuverlässigen, praktikablen und voll funktionsfähigen Ersatz für die MT3-API zu entwickeln. Jetzt arbeitet die Bibliothek etwa ein halbes Jahr lang mit dem praktischen Handelsprogramm. Und das Hauptproblem war hier nicht die Erreichung der Höchstgeschwindigkeit, sondern die Zuverlässigkeit und die richtige Reaktion auf eine große Anzahl von Notfallsituationen. Vielen Dank für Ihre Bemerkungen, sie sind durchaus angebracht, aber das ist eine andere Geschichte". Viel Glück!
Mforex2.lib Importbibliothek in das Projekt einbinden (für Delpi - einfach die Bibliotheksfunktionen beschreiben),
Die Mforex.h Headerdatei im Hauptprogramm angeben (zum Beispiel: #include "Mforex.h" - nur für Builder C++);
Diese 2 Punkte sind mir rätselhaft, denn Omega ist ein fertiges Programm, alle anderen Dateien habe ich wie beschrieben platziert, die Funktion zum Starten von MT4 vorgeschrieben, und beim Start bekam ich die Meldung, dass es notwendig ist, den genauen Pfad anzugeben, aber ich habe auch den Pfad angegeben. Ich weiß nicht, was ich als nächstes tun soll.
Diese 2 Punkte sind mir rätselhaft, denn Omega ist ein fertiges Programm, alle anderen Dateien habe ich wie beschrieben platziert, die Funktion von MT4 Start vorgeschrieben und beim Start bekam ich die Meldung, dass es notwendig ist, den genauen Pfad anzugeben, aber ich habe den Pfad auch vorgeschrieben. Ich weiß nicht, was ich als nächstes tun soll.
Omega hat die Möglichkeit, Funktionen aus externen DLLs zu importieren. Daher sollten Sie Mforex2.dll als externe Bibliothek angeben. Gleichzeitig sollte sich diese Datei im "Sichtfeld" der Omega-Programme befinden. Geben Sie in den Aufrufprozeduren die Namen der aus der DLL importierten Funktionen an, wie in der Dokumentation angegeben. Beachten Sie auch, dass Omega die Definitionen aus der Datei Mforex.h "nicht kennt". Das heißt, wenn Sie zum Beispiel die Funktion zur Eröffnung einer Position aufrufen, müssen Sie den Operationscode für z.B. Verkaufen - 1 angeben und nicht OP_SELL usw. Weitere Einzelheiten finden Sie in der DevKit-Dokumentation, in der beschrieben wird, wie Omega mit externen Bibliotheken arbeitet.
Viel Glück!
Viel Glück!
Deshalb habe ich in Omega folgendes verschrieben:
DefineDLLfunc: "Mforex2.dll", int, "Start"; {DLL-Aufruf}
_gbp = Start(); {Terminal Startfunktion}
Aber Sie sagen, dass wir hier statt "Start()" etwas anderes schreiben sollten, habe ich das richtig verstanden?
DefineDLLfunc: "Mforex2.dll", int, "Start"; {call DLL}
_gbp = Start(); {terminal start function}
Aber Sie sagen, dass Sie anstelle von "Start()" etwas anderes schreiben sollten, habe ich Recht?
Ich antworte mir selbst: Sie sollten nicht etwas anderes anstelle von "Start()" schreiben - das ist richtig, Omega startet MT4 ohne Probleme.
Aber es ist ein wenig komplizierter in der Funktion der Positionseröffnung, so habe ich die Funktion vorgeschrieben:
Input: Symbol(NumericSimple), Order(NumericSimple), Lot(NumericSimple),
price(NumericSimple), sl(NumericSimple), tp(NumericSimple);
DefineDLLfunc: "Mforex2.dll", int, "NewPos",char, int, int, double, double, double;
_NewPos = NewPos(Symbol, Order, Lot, price, sl, tp);
Logisch passt alles zur Beschreibung des Herstellers, aber in der Praxis gibt es Probleme: alles wird in Zahlen gesetzt...