English Русский 中文 Español 日本語 Português
MT4TerminalSync - System für die Synchronisation von MetaTrader 4 Terminals

MT4TerminalSync - System für die Synchronisation von MetaTrader 4 Terminals

MetaTrader 4Beispiele | 19 Februar 2016, 07:02
973 0
Valery V. Chesnokov
Valery V. Chesnokov

Einführung

Viele Trader und Handelssystem-Entwickler verwenden mehrere Kopien von MetaTrader 4 Terminals zu technischen Zwecken. Verschiedene Charts und Konten sind auf diesen geöffnet, unterschiedliche Strategien werden getestet. Dazu werden von Zeit zu Zeit neue Versionen des Terminals veröffentlicht, neue Indikatoren und Expert Advisors erscheinen, ein anderer MQL4 Code geschrieben.

Früher oder später begegnen wir der Frage, der Synchronisierung der verwendeten Terminal-Kopien. Zu diesem Zweck benötigen wir ein technisches Werkzeug, das in der Lage ist diese Aufgabe zu lösen. In diesem Artikel werden wir den Vorgang des Erstellens zeigen und schließlich ein fertiges Werkzeug erhalten.

Für wen ist dieser Artikel gedacht?

Der Artikel untersucht die Erstellung eines Programmsystem-Beispiels für die Synchronisierung mehrerer Terminal-Kopien.

Dementsprechend, kann der Artikel für zwei Kategorien von Lesern interessant sein:
1. Benutzer / Trader können das fertige Programmsystem aus diesem Artikel verwenden.
2. Professionelle Entwickler von Programmsystemen über MQL Code hinaus, können dieses System zu persönlichen Bildungszwecken analysieren, und vielleicht förderliche Kommentare geben.

Notwendigkeit des Systems zur Terminal-Synchronisierung

Angenommen. Sie haben acht Terminal-Kopien. Sie laden eine neu veröffentlichte Version herunter. wie? Klicken Sie achtmal hintereinander auf die Download-Datei https://www.metaquotes.net/files/mt4setup.exe und geben die Ordner mit den Kopien an? Nun, es ist nicht schwierig.

Nehmen wir an, Sie haben drei neue Indikatoren entwickelt, zwei Expert Advisors und eine Bibliothek (Library). Nun müssen Sie diese in verschiedenen Situationen auf ihren acht Terminal-Kopien testen. Es bedeutet, Sie müssen die MQL Quelldateien und binäre ex4 Dateien aktualisieren. Sie haben alles oben aufgeführte in einer Quellkopie des Terminals entwickelt. Nun müssen sie in andere Kopien hinein reproduziert werden. Sie öffnen die Unterordner des Quell-Terminals einen nach dem anderen: Experts, dann Experts\Indicators und Expert\Libraries. Anschließend kopieren Sie im Windows Explorer in jedem Unterordner die notwendigen Dateien, öffnen dann von jeder Terminal-Kopie den gleichen Ordner und fügen die Dateien dort ein. Und diesen doppelten Zyklus wiederholen Sie für jeden Quell-Unterordner und jeden analogen Unterordner des aktualisierten Terminals.

Ist Ihnen eine solche Situation vertraut? Wenn Sie es ziemlich oft machen, haben Sie wahrscheinlich über die Vereinfachung dieser Arbeit nachgedacht. Zu diesem Zweck benötigen wir ein Werkzeug, das es ermöglicht diese Aufgabe zu automatisieren. Das heißt, es ist besser das Aktualisieren von Terminals durch das Klicken auf eine Schaltfläche zu starten. Und es wäre sehr sinnvoll, die Möglichkeit zu haben, Parameter für diesen Vorgang festzulegen, wie den Weg zu dem Quell-Steuerterminal. viele Arten der Aktualisierung von Terminals, Einstellung von Filtern für Dateien, die aktualisiert werden sollen. Zum Beispiel, soll das Synchronisierungs-System uns anzeigen, wenn ein Fehler im Pfad zu dem Terminal-Ordner auftritt.

Es bedeutet, unser Tool muss flexibel und effizient sein. Versuchen wir ein solches Werkzeug zu erstellen.

Technische Vorkehrungen

Dieser Artikel widmet sich dem Thema "Erweitern der Möglichkeiten von MQL4 Programmen mit Funktionen des Betriebssystems und anderen Mitteln der Programmentwicklung". Daher gehen die verwendeten Mittel über das MetaTrader 4 Terminal und die MQL Sprache hinaus.

Das hier erstellte und beschriebene Synchronisations-System für Terminal-Kopien benötigt für seinen Betrieb die folgenden Programmfunktionen:
1. Betriebssystem - Microsoft Windows 2000 SP4 oder höher: Microsoft Windows 2000, Windows XP, Windows Server 2003, Windows Server 2003 R2, Windows Vista.
2. Microsoft Plattform .NET Framework 2.0. Kann auf der Microsoft Webseite heruntergeladen werden, unter:
2.1. http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5 - eine Ausgabe in Russisch (RUS) für x86 Prozessoren, Datei dotnetfx.exe Größe 22 Mb.
2.2. http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5 - Eine Ausgabe in Englisch (EN) für x86 Prozessoren, Datei dotnetfx.exe Größe 22 Mb.
2.3. http://www.microsoft.com/downloads/details.aspx?familyid=B44A0000-ACF8-4FA1-AFFB-40E78D788B00&displaylang=en - eine Ausgabe in Englisch für x64 Prozessoren, Datei NetFx64.exe Größe 45 Mb.
3. Desktop Einzelbenutzer Datenbankserver Microsoft SQL Server 2005 Compact Edition. Diese Ausgabe des SQL Server besteht aus acht dll Dateien. Sie kann heruntergeladen werden unter: http://www.microsoft.com/downloads/details.aspx?FamilyId=%2085E0C3CE-3FA1-453A-8CE9-AF6CA20946C3&displaylang=en - SQLServerCE31-EN.msi Dateigröße 1.7 Mb. Mehr Informationen finden sich in dem MSDN Artikel "Installieren und Bereitstellen auf einem Desktopcomputer (SQL Server Compact)" unter http://technet.microsoft.com/de-de/library/bb190958.aspx (DE).

Im Folgenden befinden sich zusätzliche Informationen für Entwickler.

Wenn Sie ein ähnliches System mit den angegebenen Technologien erstellen wollen, benötigen Sie Microsoft Visual Studio 2005, zum Beispiel eine der kostenlosen Ausgaben von Visual Studio 2005 Express Edition die Sprachen C# oder VB.NET. Sie können Microsoft® Visual Studio® 2005 Express Editions Service Pack 1 herunterladen unter: /go?link=http://www.microsoft.com/en-us/download/details.aspx?id=804. Sie können außerdem eine Testversion von Visual Studio 2005 bestellen, unter: http://www.microsoft.com/emea/msdn/visualstudio/ruru/getthetrials/. Oder Sie verwenden eine neuere Version von Visual Studio 'Orcas', die zum Zeitpunkt des Verfassens des Artikels in der Beta 1 Version vorliegt. Der vorläufige Name Orcas könnte in Visual Studio 2008 geändert werden. SIe finden neue Informationen über Visual Studio und die neuesten Versionen unter: http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx.

Es dauert nicht mehr als 2 bis 3 Minuten Microsoft .NET 2.0 und SQL Compact Edition zu installieren, wenn Sie die benötigten zwei Dateien (dotnetfx.exe und SQLServerCE31-EN.msi für x86 Windows Versionen). Laden Sie die Dateien einfach herunter und klicken Sie Weiter zum Abschließen.

System Komponenten

Abgesehen von der aufgeführten Drittanbieter Software, besteht das Synchronisations-System aus vielen im Folgenden aufgeführten Dateien.

Hier die .exe und .dll Dateien sind binärer ausführbarer Code, die Datei config.xml ist eine Setup Datei von Start Shell (mehr Informationen im Weiteren), die Datei MT4TerminalSync.sdf ist die System-Datenbank, und die Datei Log.txt enthält die Aufzeichnung aller Fehler des Systembetriebs.

Anmerkung: durch die Ideologie der vernetzten Programmentwicklung, insbesondere solche, die mit Terminal-Servern arbeiten, können Systeme keine Berechtigung haben Aufzeichnungen in einen aktuellen Ordner zu machen, von dem diese ausgeführt werden. Deshalb müssen alle Setup Dateien, Fehlerprotokoll-Dateien und andere, die auf jeden Benutzer separat verweisen, in einem Windows-Ordner der Benutzerprofile gespeichert werden. In diesem System jedoch, das eigentlich ein Beispiel und ein Rahmen eines vollwertigen Netzwerksystems ist, werden alle auf es verweisenden Dateien, zur Vereinfachung seiner Verwendung durch einzelne Benutzer, in einem Ordner gespeichert.

Sie müssen das Synchronisations-System nicht richtig installieren. Sie müssen lediglich die aufgeführten Drittanbieter Programme installieren und die Systemdateien in einen Ordner auf einer lokalen Festplatte kopieren.

Die Ideologie des Entwickelten Systems.

Es gibt verschiedene Wege ein solches System zu erstellen. Jeder Entwickler kann seine eigene Lösung für diese Aufgabe finden. Der Vorteil der vorgestellten Lösung ist zumindest der, dass sie besteht und funktioniert.

Alles für diese Lösung Benötigte ist außerdem in Skript-Sprachen verfügbar, zum Beispiel VBS Dateien, Befehle wie xcopy, usw. Vielleicht sieht das einfacher aus, als die gegebene Lösung. Jedoch hat ein solcher Ansatz, meiner Meinung nach mehrere Nachteile:

1. Sie müssen Systemeinstellungen (Pfade zu dem Quell-/Ziel-Terminal, Dateierweiterungen) direkt in den Quelltext des Skripts einfügen. Oder Sie müssen Ihren eigenen Parser (Analyseprogramm) der .ini Datei schreiben.

2. Sie haben fast keine Kontrolle über Kopierfehler von Dateien. Es ist nicht einfach herauszufinden, ob Fehler bei dem Befehl xcopy aufgetreten sind, sowie diese in einer einheitlichen Form zur Ansicht zu sammeln.

Also, ich entschied ein kompiliertes System mit Speicherung aller Einstellungen in einer Datenbank zu entwickeln, für maximale Flexibilität zur Erweiterung. Für das Erstellen des Systems habe ich es bevorzugt Entwicklungstechnologien von Microsoft zu verwenden, mit denen ich vertraut bin. Innerhalb dieser Grenzen, wurde die folgende Auswahl an Tools durchgeführt.

Beschreibung der System-Datenbank

Wir können verschiedene Varianten zum Speichern der System-Parameter verwenden (Pfade, Dateimasken, usw.):schreiben Sie alles in einen Program-Code, Text ini-Datei, XML-Datei oder DBMS. Ich wählte die letzte Methode, um Möglichkeiten von DBMS zu nutzen und nicht meine eigenen Methoden zu erfinden.

Welche DBMS wählen? Es gibt zwei relevante Kriterien:
1. Wahrscheinlich wird das System als Unternehmens-Tool verwendet, d.h. es wird ein Netzwerk-Mehrbenutzer-System sein. Das bedeutet, wir können als Datenbank Microsoft Access oder SQL Server nehmen. Allerdings kann Access nicht von jedem Benutzer installiert werden, weil es in der Microsoft Office Professional Edition enthalten ist.
2. Das System wird außerdem von einzelnen Benutzern verwendet. Das bedeutet, die Größe des Systems sollte verringert und der Vorgang der Installation vereinfacht werden. Aus diesem Gesichtspunkt hat der SQL-Server kostenlose Ausgaben: Express Edition und Compact Edition. Zu Minimierung habe ich den SQL-Server 2005 Compact Edition gewählt. Seine Installation belegt 1,7 Mb in einer Datei.

Die Server Ausgabe SQL 2005 Compact Edition ermöglicht es, diese Kriterien zu kombinieren - es ist eine Desktop, kompakt-zum-Herunterladen DBMS Version, die dennoch alle benötigten Optionen zeigt, für den Umzug in die Firmen-Netzwerk Version des Synchronisation-Systems. Sie müssen lediglich die Datenbank auf einem leistungssfägeren SQL-Server 2005 neu erstellen - jede, beginnend bei der Express Edition.

Wir haben eine Datenbank ausgewählt. Was speichern wir jetzt?

Anmerkung: für das richtige Verständnis des folgenden Abschnitts, benötigen Wissen über SQL - Structured Query Language, einer Sprache zur strukturierten Abfrage von Datenbanken. Mehr Information über diese Sprache finden Sie in der Wikipedia unter: https://en.wikipedia.org/wiki/SQL.

Hier ist ein Screenshot mit Tabellen der verwendeten SQL-Datenbank.

Diese Tabellen speichern die Informationen über die folgenden System-Parameter:
1. Tabelle CopyExtentions - Masken der kopieren Dateien, wahrscheinlich mit relativen Pfaden. Beispiele: *.ini, experts\*.mq?, experts\indicators\*.ex4.
2. Tabelle DestiantionTerminal - absolute Pfade zu Terminals für Aktualisierungen. Diese Terminal-Kopien werden von einer Vorlage aus aktualisiert - Quell-Terminal-Kopie. Für jedes Benutzerprofil (siehe Tabelle UserProfile) gibt es eine bestimmte Anzahl Terminals.
3. Tabelle SourceTerminal - absoluter Pfad zu einer Quell-Terminal-Kopie. Dieses Quell-Terminal ist eine Prüf-Vorlage für die Aktualisierung von Terminal-Kopien aus der Tabelle DestiantionTerminal. Jeder Bentuzer hat sein eigenes Quell-Terminal.
4. Tabelle UserProfile - Liste der Systembenutzer (Benutzerprofile). Dies ist ein Element zum Entwerfen von Mehrbenutzer-Systemen, in dem jeder Benutzer seine Einstellungen der Terminal-Pfade, mit einem Verweis auf das eigene Profil speichert. Ein einzelner Benutzer kann verschiedene Profile, logisch gruppiert in Terminal-Sätze speichern. Sie können sie, zum Beispiel, in zwei Gruppen unterteilen - eine die häufig aktualisiert wird, eine zweite, die selten aktualisiert wird. Durch Umschalten zwischen den Gruppen können Sie auswählen, welche Gruppe aktualisiert werden soll. Nicht benötigte Profile können blockiert werden. Wenn ein System nur ein nicht blockiertes Profil enthält, wird es automatisch als ein Aktives in einem Client-System Bereich ausgewählt.

Das obige Bild zeigt kein detailliertes Schema der Datenbank-Tabelle. Also, sehen wir uns mehr Bilder von SQL-Tabellen mit Feld-Typen an. Leider verfügt die Compact Edition nicht über die Option zur Anzeige eines Datenbank-Diagramms, also wird jede Tabelle separat dargestellt.

Unten ist das Schema der Tabelle CopyExtentions:

Hier ist das Schema der Tabelle DestinationTerminal:

Hier ist das Schema der Tabelle SourceTerminal:

Hier ist das Schema der Tabelle UserProfile:

Also, die obigenBilder zeigen die detaillierten Schemen aller Datenbank-Tabellen.

Entwicklungs-Ideologie des Client-Teils des Systems

Dieser Abschnitt mit technischen Einzelheiten, wird wahrscheinlich interessanter für professionelle Entwickler, als für normale Nutzer.

Der Client-Teil ist eigentlich eine .NET-Anwendung des Windows-Forms Typs, d.h. der sogenannte fat exe-Clinet. Sie müssen den Client nicht installieren. Kopieren Sie einfach alle seine Dateien in einen Ordner auf einer lokalen Festplatte.

Hier ist eine kurze Beschreibung meiner Ideologie zur Entwicklung solcher Systeme.
Ich glaube, dass solche Systeme auf dem Baukastenprinzip erstellt werden sollten. Dies hat mindestens zwei Vorteile:
1. Sie erhalten eine endgültige Anwendung mit allen notwendigen Funktionen, zusammengesetzt aus den Modulen, wie bei Ziegeln. Ein Benutzer muss nicht dutzende verschiedene Programme starten, erstartet nur ein Programm, das alle benötigten Funktionen enthält. Eine Liste an Modulen kann für jeden Benutzer des Systems einzeln, der Position entsprechend angepasst werden.
2. Das Baukastenprinzip in der Entwicklung ermöglicht es den Entwicklungsprozess des Systems zu skalieren, d.h. mehr Entwickler anziehen bei einer Steigerung des Entwicklungsvolumens.

Also, was genau bezwecke ich? Wir haben einen Rahmen zum Starten von .NET Modulen erstellt. Anwendungs-Shell der Windows Forms Klasse zum Herunterladen von .NET Baugruppen (Benutzerkontrolle), das heißt, technisch aus jeder entwickelten Klasse der Standard .NET 1.0 und 2.0 Klassen System.Windows.Forms.UserControl.

Die läuft durch die Inhalte der XML-Datei config.xml, die sich im selben Ordner befindet. Unten sehen Sie die Shell.

Ich denke, ihr Vorteil liegt in einer breiten Auswahl an Programmiersprachen und Entwicklungsumgebungen (IDE). Sie sind tatsächlich alle .NET kompatible IDE für die Versionen .NET Framework 1.1 und 2.0, wie Borland Developer Studio 2006 (BDS)unter .NET 1.1, Microsoft Visual Studio .NET 2003 unter .NET 1.1, Microsoft Visaul Studio 2005 unter .NET 2.0, Visual Studio Orcas unter .NET 2.0.

Von den Standard-Programmiersprachen hat es C# und VB.NET, obwohl Sie jede CLR kompatible Sprache verwenden können, die ein Projekt des Windows Control Library Typs und Benutzerkontrolle in sich verwenden kann.

Unten befindet sich ein Beispiel für die Arbeit der Komponente, die in Visual Studio entwickelt und in einer Shell geladen wird.

Und ein weiteres Beispiel einer Komponente, erstellt in Visual Studio Orcas März 2007 CTP.

Also, wir haben die Methoden der Entwicklung des Client Teils analysiert. Kommen wir nun zu ihrer Erstellung.

Client Teil des Systems

Verwenden Sie Microsoft Visual Studio 2005 für die Entwicklung der Synchronisation-System Komponenten.
Erstellen Sie ein Projekt des Typs Windows Control Library.

Alle Systemkomponenten (Benutzerkontrolle) werden sich in einem Projekt befinden. Das physische Ergebnis wird die Datei MT4TSyncUCLib.dll im Projektordner sein, die einen binären Code der Komponenten enthält. Füllen wir das Projekt mit den dazugehörigen Programmkomponenten.

Als Ergebnis erhalten wir mehrere Dateien, die in der Abbildung dargestellt sind.

Dies sind die Projektressourcen, sowie Komponenten für jede Systemeinheit die in der SQL Datenbank gespeichert sind: Quell-Terminal, viele Ziel-Terminals, viele Masken kopierter Dateien und die Komponente der Synchronisationsausführung. Außerdem verfügt das Projekt über Klassen für jede aufgeführte Einheit, für den Vorgang der Datenübergabe und deren Bearbeitung in der Standard-Komponente PropertyGrid (eine Tabelle mit Eigenschaften).

Anmerkung: Der Artikel zielt nicht darauf ab das Entwickeln von Programmsystemen detailliert zu lehren. Deshalb finden Sie für den Client-Teil die Beschreibung von Kontrollpunkten - fertige Module sind in dem System inbegriffen.

In Folgenden befindet sich die Konfiguration der XML Datei config.xml, die alle sichtbaren Komponenten des Systems beschreibt.

Wie sie aus den Inhalten der Datei config.xml sehen können, habe ich das Benutzermenü in zwei Teile unterteilt: den ordnungsgemäßen Synchronisation Start und den administrativen Teil der System-Einrichtung. Es ist eine relative Teilung, und kann durch einen Benutzer durch Bearbeiten der XML Textdatei geändert werden, jedoch ohne die Schlüsselinformationen stören. Geben Sie den Tag <menu>, section <items> ein und ändern Sie die Position der Tags <item> mit dem Attribut type="folder" und type="control" (letzte benutzerdefinierte Komponente).
Das System beinhaltet zwei Benutzerprofile des Menüs - ein vollständiges mit allen Komponenten, genannt "Administrator (all)", und ein kurzes, genannt "Synchronization Start" nur mit der Start-Komponente.

Nun ist es Zeit das System selbst zu zeigen.
Die folgenden Bilder zeigen alle sichtbaren Systemkomponenten wie im Menü, von unten nach oben.

Beim Systemstart wählen Sie das Menüprofil: vollständig oder vereinfacht.

Hier ist die Komponente der Benutzerverwaltung.

Eine Benutzerprofil-Blockierung wird für die Deaktivierung nicht benötigter Profile verwendet, ohne diese zu löschen. Belassen Sie nur ein aktives Profil, sparen Sie die Zeit es auszuwählen, weil das System selbst das verbleibende Profil auswählt. Natürlich dürfen Sie nicht alle Benutzerprofile blockieren. Das System wird die Ausführung benötigter Operationen nicht erlauben oder einen Fehler bei Aufruf von Komponenten anzeigen, die die Auswahl eines aktiven Profils erfordern.

Im Folgenden ist die Komponente zur Bearbeitung der Masken kopierter Dateien.

Nach meiner Meinung, muss eine Liste kopierter Dateien aus den folgenden Masken bestehen:

Achten Sie hier bitte auf das Feld Including Subfolders, von mir erstellt um den Vorgang der System-Einstellung zu vereinfachen. Eigentlich befinden sich, zum Beispiel, die Dateien *.mq4 und *ex4 in dem Terminal in verschiedenen Unterordnern - Experten, Experten\Indikatoren usw. Um nicht jeden Unterordner einzeln hinzuzufügen, können Sie einen Eintrag aus dem Wurzelverzeichnis des Terminal-Ordners angeben, d.h. ohne eine relative Pfadangabe und ermöglicht so die Suchfunktion in Unterordnern. Das System prüft dann alle Unterordner des Quell-Terminals und kopierter Dateien mit der gleichen Maske in einem passenden Ziel-Unterordner.

Und hier ist ein weiteres Geheimnis. Sehen Sie sich die Masken an. Das Terminalenthält Dateien mit den Erweiterungen mq4, mqh, mqt.Um nicht alle von ihnen anzugeben, geben wir einen Eintrag mit der Maske *.mq? an, der alle vorher genannten Dateitypen enthält - '?' ersetzt ein Zeichen in der Maske, * ersetzt eine freien Anzahl an Zeichen. Dasselbe gilt für die Maske *.ex? - dies ist eine Maske für die Dateien *.exe (ausführbare Dateien des Terminals) und *.ex4 - binäre MQL Dateien. Es ist komfortabel, oder nicht?

Die folgende ist die Verwaltungskomponente von synchronisierten Ziel-Terminals.

Wenn Sie den Pfad zum Terminal auswählen, sehen Sie am Rand des rechten Felds eine Schaltfläche mit drei Punkten, die durch Klicken auf sie ein Windows Fenster zur Auswahl von Dateien auf einem Laufwerk öffnet (Öffnen Dialog). Sie können die Datei terminal.exe in einem benötigten Ordner angeben.

Die Komponente des Quell-Terminals ist meistens analog zu ausgewählten Ziel-Terminals.

Sie fragen sich vielleicht, warum ich in der Datenbank die Tabellen von Quell- und Ziel-Terminals getrennt habe. Beachten Sie, dass Sie für Ziel-Terminals, anders als für die Quelle, zusätzliche Funktionen angeben können. Zum Beispiel gibt es für sie am Boden ein Feld namens Start after Update. Sie sehen es in Komponenten von Ziel-Terminals. Es wird nicht im System verarbeitet, aber um es zu erstellen, müssen Sie zwei Code-Zeilen schreiben - erstellen Sie einen Prozess für den vollständigen Pfad zu der Datei terminal.exe und starten sie ihn in der zweiten Zeile.

Als Ergebnis einer solchen Erweiterung, kann das System zusätzliche Merkmale und Funktionen erhalten

Und schließlich die letzte und wichtigste Komponente um die Synchronisation zu starten, für die das System erstellt wurde.

Alle vorherigen Komponenten wurden für die Einrichtung der System-Parameter verwendet, um es maximal flexibel zu machen. In dieser Komponente startet ein Klick auf die Schaltfläche Start den Vorgang der Synchronisation, d.h. kopieren notwendiger Dateien. In dem Gruppenfeld Log Operations sehen Sie Kontrollpunkte der durchgeführten Synchronisation, nämlich Pfade zu Ordnern und die Anzahl der kopierten Dateien.

Wenn während des Kopiervorgangs Fehler auftreten werden diese in der Gruppe Error Log in roter Farbe markiert angezeigt. Sie werden außerdem in der Datei Log.txt im Systemordner aufgezeichnet. Eine solche Methode wird verwendet um informelle Nachrichten von kritischen Fehlermeldungen zu trennen. Der Grund für einen Fehler kann z.B. ein falscher Pfad zu einem Quell- oder Ziel-Terminal sein (er ist in der Basis eingegeben, aber der Ordner von dem Computer gelöscht), oder ein Fahler in einer monopolistischen Dateiblockade, auch ohne Lesezugriff.

Es gab eine Wahl für diesen Block - entweder einzeln in eine separate Strömung zu kopieren, oder innerhalb der Grenzen der Hauptströmung des Systemprozesses. Die erste Variante würde ene bessere Reaktion des Systems auf Benutzerhandlungen im Kopiervorgang ergeben, d.h. ohne System-"verblassen". Allerdings würde die Strömung mit geringerer Priorität agieren, und wahrscheinlich wäre die Kopiergeschwindigkeit langsamer. Also beschloss ich das Kopieren innerhalb des aktuellen Hauptstroms zu belassen, es als Handler auf einem Timer in der Komponente zu machen. Deswegen kann das System auf Mausklicks nur in den Zeiträumen der Verarbeitung eines Timer-Ereignis reagieren. Allerding können Sie die Synchronisation durch Klicken auf Stop anhalten - das System wird den Klick verarbeiten, wenn es sich auf der Liste von Ziel-Terminals bewegt.

Fazit

Wir haben es geschafft die Aufgabe zu lösen und ein technisches Werkzeug erhalten - ein Synchronisations-System mit seiner Parameter-Einrichtung, Protokollieren und Anzeigen möglicher Fehler, usw. Ich habe die Masken für die kopierten Dateien von der Datei INSTALL.LOG aus dem Stammordner des Terminals entnommen, Abschnitt [CopyFiles]. Wahrscheinlich werden Sie während des Betriebs weitere Dateien mit anderen Endungen finden, die synchronisiert werden sollten. Es wäre sehr nützlich und interessant für andere Nutzer, wenn Sie diesen Gesichtspunkt in Kommentaren zu diesem Artikel teilen.

Das fertige binäre Projekt und der Beispiel-Code sind an den Artikel angehangen.


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1488

Beigefügte Dateien |
ctrlSync_cs.txt (11.84 KB)
MT4TerminalSync.zip (56.85 KB)
TestProject.zip (42.87 KB)
Interaktion zwischen MetaTrader 4 und Matlab über CSV Dateien Interaktion zwischen MetaTrader 4 und Matlab über CSV Dateien
Schritt-für-Schritt Anleitungen wie man einen Daten-Arrays Austausch zwischen MetaTrader 4 und Matlab über CSV Dateien organisiert.
Test Visualisierung: Kontostand Charts Test Visualisierung: Kontostand Charts
Genießen Sie den Vorgang des Tests mit Charts, mit Anzeige des Kontostands - alle benötigten Angaben immer im Auge!
Tester im Terminal MetaTrader 4: Man sollte ihn kennen Tester im Terminal MetaTrader 4: Man sollte ihn kennen
Die aufwendige Schnittstelle des Terminals MetaTrader 4 ist führend, aber daneben beinhaltet das Terminal einen intelligent angelegten Tester für Strategien. Und während der Wert von MetaTrader 4 als Handelsplattform offensichtlich ist, kann die Qualität der Strategie-Tests des Testers nur in der Praxis beurteilt werden. Dieser Artikel zeigt die Vorteile und Annehmlichkeiten der Tests in MetaTrader 4.
Atypisches Automatisiertes Trading Atypisches Automatisiertes Trading
Erfolgreiches und komfortables Trading mit der MT4 Plattform ohne detaillierte Marktanalyse - ist das möglich? Kann solches Trading in der Praxis umgesetzt werden? Ich meine, ja. Insbesondere in Bezug auf automatisiertes Trading!