Skip to main content

Forex Dde Server


Metatrader 5 - DDE - Server Was ist ein Metatrader 5 - DDE - Server und warum ist ein Metatrader 5 - DDE - Server benötigt Metatrader 5 ist die nächste Version nach Metatrader 4, der weltweit führenden Handelsplattform. Im Vergleich zu Metatrader 4 hat sich Metatrader 5 in vielen Bereichen verändert und verbessert. Aber einige Funktionen sind in der neuen Version von Metatrader nicht mehr verfügbar. Eine dieser Funktionen ist der DDE-Dienst, der in Metatrader 4 eine sehr nützliche Funktionalität war, um Zitate aus Metatrader in externe Programme wie Excel, Amibroker oder andere DDE-Clients zu exportieren. Um diese Lücke zu schließen, haben wir einen DDE-Server entwickelt, um diesen zu kompensieren. Mit diesem Server können Sie Metatrader 5 als Datenquelle nutzen und über DDE exportieren. Es funktioniert als ein Connector zwischen Metatrader 5 und einem oder mehreren DDE-Clients. Verwenden Sie die folgenden Parameter: Service: MT5 Thema: Symbol (das ursprüngliche Symbol von MT5, zB für Us-Dollar gegen Euro EURUSD) Item: BID o. ASK o. LETZTES O. ZEIT o. VOLUMEN o. QUOTE BID selbsterklärend ASK selbsterklärend LAST letztes Zitat eines Handels TIME Zeitstempel VOLUME selbsterklärend QUOTE alle Einzelwerte getrennt durch Semikolon SYMBOLBIDASKLASTTIMEVOLUMEdie Software kann direkt heruntergeladen und installiert werden. Die Installationsroutine enthält alle erforderlichen Scripts und Bibliotheken. Nach dem ersten Lauf kann das Programm ohne Einschränkungen für 14 Tage getestet werden. Nach Beendigung der Testphase können Sie eine Lizenz für nur 29,00 Euro über PayPal erwerben. Das PayPal-Formular kann mit dem Button Erwerben einer Lizenz direkt aus dem Programm gestartet werden. Download MT5DDE Setup Installation: Laden Sie das Installationsprogramm herunter Install-MT5DDE. exe Führen Sie das Installationsprogramm aus und folgen Sie den Anweisungen Kopieren Sie die Datei DDE. dll in das Verzeichnis Bibliotheken in der Metarader 5 Installation Kopieren Sie die Dateien DDE. ex5 und DDE. mq5 in das Verzeichnis Indikatoren in der Metarader 5-Installation Beide Verzeichnisse befinden sich im Verzeichnis MQL5 Aktivieren Sie im Metarader 5 den Punkt DLL-Import zulassen. Dies befindet sich unter ToolsOptionsExpert Advisors Verwendung: Start Metarader 5 und öffnen Sie ein Diagramm Starten Sie den MT5-DDE-Server In Metarader 5 öffnen Sie den Navigator und hier den Punkt Custom Indicators Aus der Liste ziehen Sie das Indikator DDE über das Diagramm und legen Sie es ab Punkt zulassen DLL - Importe aktivieren Aktivieren Sie den DDE - Server mit einem Klick auf die Schaltfläche mit dem Symbol Um den DDE - Server zu stoppen, klicken Sie erneut mit dem Symbol Achtung - Wichtig Bevor Sie ein Diagramm schließen, stellen Sie sicher, dass Sie das DDE-Kennzeichen über das Kontextmenü deaktiviert haben. Andernfalls verursacht die beteiligte DLL eine Blockade des DDE-Servers und die anderen Programme und alle Programme müssen neu gestartet werden. Programmierung Services High Risk Investment Warnung: Der Handel von Devisen und Kontrakten für Differenzen auf Margin trägt ein hohes Risiko und ist möglicherweise nicht geeignet Für alle Anleger. Die Möglichkeit besteht, dass Sie einen Verlust über Ihre eingezahlten Fonds aufrechterhalten könnte und daher sollten Sie nicht mit Kapital spekulieren, die Sie nicht leisten können, zu verlieren. Bevor Sie sich für den Handel der Produkte von FXCM entscheiden, sollten Sie sorgfältig über Ihre Ziele, finanzielle Situation, Bedürfnisse und Niveau der Erfahrung. Sie sollten sich aller Risiken des Margin-Handels bewusst sein. FXCM bietet eine allgemeine Beratung, die nicht berücksichtigt Ihre Ziele, finanzielle Situation oder Bedürfnisse. Der Inhalt dieser Website darf nicht als persönlicher Rat verstanden werden. FXCM empfiehlt, sich von einem separaten Finanzberater zu beraten. Bitte klicken Sie hier, um die vollständige Risiko-Warnung zu lesen. FXCM ist eine registrierte Futures Commission Merchant und Retail Devisenhändler mit der Commodity Futures Trading Commission und ist Mitglied der National Futures Association. NFA 0308179 Forex Capital Markets, LLC (FXCM LLC) ist eine operative Tochtergesellschaft der FXCM-Unternehmensgruppe (gemeinsam die FXCM-Gruppe). Alle Referenzen auf dieser Website an FXCM beziehen sich auf die FXCM Gruppe. Bitte beachten Sie, dass die Informationen auf dieser Website nur für Einzelhandelskunden bestimmt sind und bestimmte Darstellungen hierin möglicherweise nicht auf Anspruchsberechtigte Vertragsteilnehmer (d. H. Institutionelle Kunden) im Sinne des Commodity Exchange Act, Abschnitt 1 (a) (12), anwendbar sind. Urheberrecht 2017 Forex Kapitalmärkte. Alle Rechte vorbehalten. 55 Water St. 50th Floor, New York, NY 10041 USAMetaTrader 4 - Beispiele Interaktion zwischen MetaTrader 4 und Matlab via DDE Einleitung Ich habe bereits einen Artikel über den Datenaustausch zwischen MetaTrader 4 und Matlab über CSV-Dateien veröffentlicht (MT 4 lt-CSV-gtMatlab ) Hier. Allerdings ist der in dem Artikel beschriebene Ansatz in vielen Fällen unpraktikabel und oft sogar nicht akzeptabel. Der in MT 4 unterstützte Mechanismus des DDE (Dynamic Data Exchange) ermöglicht es uns, Daten direkt aus einer Applikation direkt in den Computer RAM zu übertragen. Matlab verfügt über die komplette Funktionalität, um sowohl das Frontend als auch das Backend von DDE zu realisieren, so dass wir das Beste aus dieser Gelegenheit machen wollen. MetaTrader 4 DDE-Server stellt nur die neuesten Tickdaten zur Verfügung. Selbst unter Berücksichtigung solcher Einschränkungen ist DDE besser vorzuziehen, wenn beispielsweise mit Zitaten innerhalb von Stäben gearbeitet wird. Wie in dem Artikel von MT 4 lt-CSV-gtMatlab, werde ich die Reihenfolge der Schaffung eines Tauschorganisations-Tool beschreiben. Vergessen Sie nicht, den DDE-Server auf der Registerkarte Tools - gt Optionen - gt Server in Ihrem MetaTrader 4 Client-Terminal zu aktivieren. Bei der Organisation des Datenaustauschs mit DDE gibt es also zwei Enden (Frontend und Backend), zwischen denen die Verbindung aufgebaut wird. Das Frontend ist eine Anwendung, die Daten anfordert (Matlab in unserem Fall), das Backend ist eine Anwendung, die diese Daten zur Verfügung hat (MT 4). Die Daten können vom Server auf den Client über DDE auf drei Arten übertragen werden: - durch die Client-Anfrage, - durch die Client-Anfrage und nachdem der Server mitgeteilt hat, dass die Daten für die Übertragung vorbereitet wurden oder - wenn die Daten bereit sind Für die Übertragung. MetaTrader 4 DDE-Server arbeitet nur in einem (dritten) Modus und sendet die fertigen Daten an den Client, ohne auf Anfragen, Bestätigungen und andere Sachen zu warten. ) Die Aufgabe von Matlab besteht darin, MT 4 darüber zu informieren, dass er über einen Client verfügt, darüber informiert, welche Daten benötigt werden und warten, bis die Daten ankommen. Sobald die Daten ankommen, zeigen wir sie nur in einem Diagramm. Erstellen einer GUI In der Matlab-Umgebung besteht die Möglichkeit, eine grafische Benutzeroberfläche (GUI) zu erstellen. Sobald Sie eine GUI erstellt haben, werden wir in ihr alle Steuerelemente, Preis-Charts und Textinformationen, die wir für notwendig halten, um angezeigt werden. Das Erstellen einer GUI wird in Abschnitt 3 des Artikels MT4 lt-CSV-gtMatlab ausführlicher beschrieben, weshalb ich hier nur den Konsolenbefehl namens guide nenne, der den GUI Creation Wizard startet, und auch die Liste der grafischen Objekte, die wir benötigen . Daher benötigen wir Folgendes: - Eingabefeld Bearbeiten Text, um den Währungspaarnamen einzugeben - Achsen, um das Diagramm anzuzeigen - zwei Textausgabefelder Statischer Text, um den genauen Wert des letzten Zitats oder etwas anderes anzuzeigen. Nachfolgend sehen Sie, wie ich die Objekte in ein GUI-Blatt platziert habe: Sie sollten grafische Objekteigenschaften wie folgt festlegen: Für Achsen: Tag axesChart (hier wird das Diagramm angezeigt) Box um den Chartbereich in ein volles Rechteck umschließen Der Diagrammbereich mit einer linken Linie und eine untere Zeile FontSize 7 (die Standardgröße ist einfach riesig) Units-Pixel (wir benötigen diese beim Charting, um die Skala von 1: 1 festzulegen). Für EditText: Tag editPair (wir geben den Währungspaarnamen in dieses Feld ein). Für StaticText unterhalb des EditText-Feldes: Tag textBid (wir geben hier den genauen Wert des letzten Zitats ein) HorizontalAlignment left (dies ist nicht sehr wichtig, Sie können es als Mitte lassen). Für StaticText ganz unten im Blatt: Tag textInfo HorizontalAlignment left. Jetzt können wir RUN drücken. Ich nannte mein Projekt DDEs, also wenn Sie wollen, dass Ihre Version keine Abweichungen mit mir, bitte nennen Sie Ihr Projekt das gleiche. Wenn das Erscheinungsbild Ihrer GUI zu Ihnen passt und die m-Datei für die Bearbeitung bereit ist, können Sie mit dem Erstellen eines DDE-Clients beginnen. Verbindungsinitialisierung Zuerst sollten Sie den Kanal so organisieren, dass er eine Verbindung zum Server herstellt, wenn er die GUI startet, und kümmert sich um Verbindungsunterbrechungen beim Schließen der Schnittstelle. In Matlab wird die DDE-Verbindung durch die Funktion initialisiert: channel ddeinit (service, topic), wobei: der Name des DDE-Servernamens (MT4) eines Datenabschnittes steht. In unserem Fall kann es die Werte von BID, ASK, QUOTE, etc. nehmen. Die Funktion gibt den Deskriptor des initialisierten Kanals zurück. Dieser Deskriptor wird für weitere Konversationen mit dem DDE-Server verwendet. Sie sollten auch die Austauschmethode angeben. In Matlab wird die von MT4 unterstützte Austauschmethode als Advisory Link bezeichnet und von der Funktion rc ddeadv (channel, item, callback, upmtx, format) initialisiert. Dabei gilt: Channel Descriptor des initialisierten Kanals, Itemdaten, an denen wir interessiert sind, Den Symbolnamen eines Währungspaares, Rückruf einer Zeile, die beim Eintreffen der Daten vom Server ausgeführt werden soll, upmtx Symbolname der Variablen, um die vom Server empfangenen Daten zu platzieren, Formatarray von zwei Flags, das das Format der gesendeten Daten definiert . Die Funktion ddeadv gibt 1 zurück, wenn sie erfolgreich ist, gibt sie 0 zurück. Bitte nicht, dass ein Symbolausdruck als Rückrufparameter und kein Funktionsdeskriptor angegeben wird. Tatsächlich werden wir die eval-Funktion ausführen, die die Zeile ausführt, als ob sie in einer Konsole eingegeben wurde. Dieses Merkmal erzeugt folgende Schwierigkeit: Bei der Ankunft eines neuen Zitats müssen wir eine große Funktion ausführen, die das neue Zitat erhält. Gleichzeitig möchten wir an diese Funktion die Griffe Deskriptoren Struktur, die verwendet werden, um Zugriff auf grafische GUI-Objekte zu erhalten. Allerdings habe ich weder Methoden der Übergabe der Griffe Struktur Deskriptor in ausführbare Zeile noch die Möglichkeit, die Funktion in der m-Datei, die GUI beschreibt aufrufen. Dies führte dazu, dass ich die neue Quotungsempfangsfunktion in eine separate m-Datei platzieren und als normale Matlab-Funktion aufrufen musste. Allerdings erwies sich die Unannehmlichkeiten als Vorteil, nachdem ich entdeckt hatte, dass ich die Verarbeitungsfunktion ohne Unterbrechung der DDE-Client-Operationen bearbeiten konnte. So kann zunächst eine separate Verarbeitungsfunktion erstellt werden, die nur die empfangenen Daten in die Konsole zeigt. Anzeige des Arguments im Konsolen-Song wavread (C: WINDOWSMediaWindows XP - launch. wav) Lesen des Klangwaves (Song, 40000) spielen den Klang mit der Abtastrate von 40 kHz Das Beispiel Funktion oben spielt auch die C: WINDOWSMediaWindows XP - launch. wav Datei, sobald ein neues Angebot ankommt. Speichern Sie den Funktionstext als newTick. m im Arbeitsverzeichnis von MATLAB. Nun können Sie die m-Datei bearbeiten, die das Verhalten unserer GUI beschreibt. Fügen Sie die Verbindungsinitialisierung der DDEsOpeningFcn-Funktion hinzu, und die Deinstallation wird der Funktion figure1CloseRequestFcn hinzugefügt. (Um die Funktion "CloseRequestFcn" der m-Datei hinzuzufügen, sollten Sie im GUI-Editor Folgendes ausführen: Ansicht - gt View Callbacks - gt CloseRequestFcn). --- Wird ausgeführt, bevor DDEs sichtbar gemacht werden. Funktion DDEsOpeningFcn (hObject, eventdata, Handles, varargin) Diese Funktion hat keine Ausgabeargs, siehe OutputFcn. HObject-Handle zur Abbildung von eventdata reserviert - wird in einer zukünftigen Version von MATLAB definiert Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) varargin Befehlszeilenargumente zu DDEs (siehe VARARGIN) Kanal ddeinit (MT4, QUOTE) Initialisierungspaar get (Handles. EditPair, UserData) lesen Sie den Symbolnamen rc ddeadv (Kanal, Paar, newTick (x), x, 1 1) Verbindung aufbauen, wenn (rc1) Wenn die Verbindung aufgebaut wurde, Speichern Sie die Kanal-ID in den Handles. Wählen Sie die Standardbefehlszeilenausgabe für DDEs aus. HObject Update Handles Struktur guidata (hObject, Handles) UIWAIT macht DDEs auf Benutzerreaktion warten (siehe UIRESUME) uiwait (handles. figure1) --- Führt aus, wenn Benutzer versucht Um die Figur 1 zu schließen. Funktion figure1CloseRequestFcn (hObject, eventdata, Handles) hObject handle to figure1 (siehe GCBO) eventdata reserved - in einer zukünftigen Version von MATLAB definiert handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) channelhandles. chann die Kanal-ID von Handles erhalten (Rs1), wenn alles in Ordnung ist disp (Disconnected) informieren Sie das Ende der Konsole Hinweis: delete (hObject) schließt die Figure delete (hObject) --- Führt bei der Objekterstellung nach dem Setzen aller Eigenschaften aus. Funktion editPairCreateFcn (hObject, eventdata, Handles) hObject Handle an editPair (siehe GCBO) eventdata reserviert - in einer zukünftigen Version von MATLAB definiert handles empty - Handles werden erst nach dem Erstellen von CreateFcns erstellt (hObject, String, EURUSD) Symbolname im Eingabefeld Set (hObject, UserData, EURUSD) In ​​den UserData des Eingabefeldes - save Hinweis: Edit-Steuerelemente haben in der Regel einen weißen Hintergrund unter Windows. Siehe ISPC und COMPUTER. If ispc ampamp isequal (get (hObject, BackgroundColor), get (0, defaultUicontrolBackgroundColor)) set (hObject, BackgroundColor, weiß) end Ich habe über die Volltexte der modify-Funktionen zusammen mit dem Text für leere Skelett-Funktionen von der Matlab vorbereitet gegeben Entwickler. Der letzte Baustein trägt den Symbolnamen in das entsprechende Feld ein, bevor die GUI gestartet wird. Der Eintrag wird in die UserData-Eigenschaft kopiert. Wir verwenden immer die Kopie in UserData, während wir den im Feld (String) angezeigten Namen nur verwenden, wenn der Benutzer versucht, die Sicherheit zu ändern. Wenn der Benutzer bei der Eingabe falsch war und ein falscher Name in String geschrieben wurde, kehren wir zu dem in UserData gespeicherten Namen zurück. Der Code unten verwirklicht die Funktion des Symbols zum Ändern von Symbolen: function editPairCallback (hObject, eventdata, Handles) hObject Handle zum EditPair (siehe GCBO) eventdata reserved - definiert in einer zukünftigen Version von MATLAB Handles Struktur mit Handles und Benutzerdaten ( Siehe GUIDATA) alterPaar get (hObject, UserData) vorheriger Symbolname newPair get (hObject, String) neuer Symbolname Kanal handles. chann die Kanal-ID erhalten disconn ddeunadv (channel, oldPair) disconnect wenn (disconn0) (New), newTick (x), x, 1 1) eine neue Verbindung aufbauen, wenn (conn1), falls die Verbindung hergestellt ist, gesetzt ist (hObject, String, oldPair) den alten Symbolnamen im Eingabefeld wiederherstellen, falls dconnected conn ddeadv HObject, UserData, newPair) speichern, welches Symbol sonst verwendet wird, wenn Sie keine neue Verbindung herstellen ddeadv (channel, oldPair, newTick (x), x, 1 1) Wiederherstellen des alten Satzes (hObject, String, oldPair) (Get (hObject, String)) gibt den Inhalt von editPair als doppelte Empfangs-Ticks zurück. Beachten Sie, dass die Verbindung hergestellt ist, und, at Ankunft eines neuen Ticks wird die newTick (x) - Funktion aufgerufen, die das von MT 4 empfangene Argument in eine Konsole versiegelt. Zunächst können Sie das zuletzt empfangene Angebot in der entsprechenden Zeile unserer GUI anzeigen lassen. Dazu müssen wir eine grafische Struktur von GUI-Deskriptoren haben - für die newTick-Funktion stehen Handles zur Verfügung. Verwenden Sie die Funktion setappdata (h, name, value), die die Daten in der Anwendungsdomäne speichert. Geben Sie 0 als Anwendungs-ID an. Es ist der Deskriptor der Matlab-Objektwurzel, es ist invariant, so dass wir es immer wissen können. Fügen Sie direkt nach der Überschrift der Funktion DDEsOpeningFcn die Zeile setappdata (0, hndls, handleles) hinzu: function DDEsOpeningFcn (hObject, eventdata, handles, varargin) setappdata (0, hndls, handles) Nun können Sie in der Funktion newTick die Datei extrahieren Handles durch die Funktion des Wertes getappdata (h, name). Mit 0 als Argument von h angegeben. Dann können wir die GUI-Objekte aus der newTick-Funktion verwalten. Dann transformieren wir das Stringargument, das an die Funktion vom DDE-Server übergeben wird, und zeigen den Wert von Bid in GUI an. Außerdem ermitteln wir die lokale Zeit des Empfangens des Anführungszeichens und zeigen es auch, aber in der GUI-Statusleiste an. Die Ortszeit ist notwendig, da der DDE-Server die Zeit mit Genauigkeit bis zu Minuten überschreitet, was für die Arbeit mit Zecken nicht akzeptabel ist. Die Funktion now liefert die Ortszeit mit Genauigkeit bis zu Bruchteilen einer Millisekunde, so dass wir uns keine Sorgen darüber machen, dass verschiedene Zecken dieselbe Zeit haben werden. Wir extrahieren auch die Serverzeit aus der vom DDE-Server empfangenen Zeile und wandeln sich in das Matlab-Zeitformat um. Unten ist ein weiteres Beispiel für die newTick-Funktion: function newTick (simbols) NEUE TICK-PROCESSING timeLocal jetzt Ermitteln der genauen lokalen Zeitgriffe getappdata (0, hndls) Empfangen von Handles aus root disp (simbols) setzen das Argument in die Konsole (kommentiert) song wavread (C: WINDOWSMediaWindows XP - launch. wav) liest das Tonwellenspiel (Lied, 40000) spielen den Ton mit der Samplingrate von 40 kHz gesetzt (handles. textInfo, String, datestr (timeLocal)) zeigen die lokale Zeit in GUI - - Umwandlung der von MT 4 empfangenen Zeilen sscanf (simbols, iii i: iff) Untersuchung der Zeile nach dem Format intintint int: int float float timeServerVektteile (1: 5) extrahieren die Zeit timeServerVect timeServerVect transpose (column In Zeile) timeServerVect timeServerVect 00 Sekunden hinzufügen timeServer datenum (timeServerVect) in das Matlab-Zeitformat umwandeln Bidteile (6) extrahieren Bid Ask parts (7) extract Ask --- end of transforming --- set (handles. textBid, String, Bid: num2str (Bid)) Gebot in GUI anzeigen Tick-Diagramm zeichnen Hier ist die Fortsetzung der newTick-Funktion, die oben gestartet wurde. Der Code ist mit ausführlichen Kommentaren versehen, also, ich denke, es wird keine Mühe für Sie sein, Kopf oder Schwanz davon zu machen. Ich werde nur erklären, dass das Bid-Zitat-Array, wie das von Handles, im Stammobjektbereich gespeichert wird. Sondern als Daten gespeichert. Die gespeicherten Daten stellen eine Struktur dar, die aus zwei Feldern besteht: data. name - Symbolname eines Währungspaares data. array - zitiert Array selbst. In der newTick-Funktion stehen diese Daten unter dem Namen ticks und die Felder der Struktur haben jeweils die Namen ticks. name und ticks. array. Ticks. array stellt ein Array dar, das aus drei Spalten besteht: - Ortszeit im Matlab-Zeitformat (mit Genauigkeit, die von Matlab Mikrosekunden unterstützt wird) - Serverzeit im Matlab-Zeitformat (mit Genauigkeit bis Minuten) - Bid. Die newTick-Funktion leert das Anführungszeichen-Array, wenn sich der Symbolname im EditPair-Feld geändert hat und die Anführungszeichen für ein anderes Symbol angekommen sind. Wenn sich das nicht geändert hat, werden Zeilen dem vorhandenen Array hinzugefügt. Der Funktionsblock mit dem Diagramm definiert die Parameter (Größe und Position) des axesChart-Fensters und extrahiert daraus die Fensterbreite in Pixeln. Dies ist für das Programm notwendig, um die horizontale Skalierung der Anzeige einzustellen - ein Zitat um ein Pixel. Wenn es weniger Anführungszeichen gibt, als es Pixel in der Fensterbreite gibt, wird das Diagramm als Ganzes gezeichnet. Wenn es mehr Anführungszeichen als Pixel gibt, werden nur die letzten Daten angezeigt, die in das Diagramm passen. --- mit grafischem Array --- GUIpairName get (handles. editPair, UserData) Symbolname if (isappdata (0, data)) wenn keine Daten ticks. name GUIpairName bilden das Namensfeld ticks. array bilden ein Feld - ein leeres (Ticks. name, GUIpairName), wenn der Name ticks. name GUIpairName aus dem Namensfeld ticks. array form geändert hat Ein Feld - ein leeres Array setappdata (0, data, ticks) schreibt die Daten in das Wurzelende ticks. array ticks. array timeLocal timeServer Bid fügt eine Zeile mit den neuen Daten in das bestehende Datenfeld setappdata (0, data, ticks) ein Die Daten in root --- Ende der Arbeit mit dem Array --- --- arbeiten mit Diagramm --- chartSize get (handles. axesChart, Position) erhalten die Diagrammfenstergröße chartSize chartSize (3) die Diagrammfensterbreite lenArray extrahieren (Ticks. array) die Größe des Datenfeldes lenArray lenArray (1) extrahieren Sie die Anzahl der Zeilen im Daten-Array-Set (handles. axesChart, NextPlot, replace) Zeichnungsmodus - ersetzen Sie das alte Diagramm durch ein neues, wenn ( Zeichnen Sie die gesamte Tabelle, die andere Treppen (handles. axesChart, ticks. array (lenArray-chartSize1: lenArray, 3)) die neuesten Daten an, die in die (Handles. axesChart, XLim, 1 chartSize) Einstellen der Skalierung - eine Zahl in einer Breite Pixelsatz (handles. axesChart, NextPlot, add) Zeichnungsmodus - Hinzufügen von Plot (handles. axesChart, 1 chartSize, Gebot Gebot, m ) Zeichnen Sie das Bid horizontal Speichern von Daten in Datei Die letzte zu beschreibende Funktion ist das Speichern von Tickdaten in einer Datei durch die Benutzeranforderung. Wir speichern die Daten durch Drücken einer Schaltfläche, so fügen Sie das Push Button-Objekt in das GUI-Formular mit dem Editor. Legen Sie die folgenden Objekteigenschaften fest: Tag pushSave, String Save. Nach Drücken der M-Datei-Editor-Taste wird die Vorlage der pushSaveCallback-Funktion am Ende des DDEs. m automatisch hinzugefügt. Unten ist der vollständige Text der Funktion, die die Daten speichert: --- Ausführen auf Knopfdruck in pushSave. Funktion pushSaveCallback (hObject, eventdata, Handles) hObject Handle zu pushSave (siehe GCBO) eventdata reserved - wird in einer zukünftigen Version von MATLAB definiert Handles Struktur mit Handles und Benutzerdaten (siehe GUIDATA) date datestr (now, yyyy-mm-dd ) Lerne das Datum (String) kennen datestr (jetzt, HH-MM-SS) lerne die Zeit kennen (string) name get (handles. editPair, UserData) lerne den Namen des Symbols kennen Den Dateinamen userName, userPath uiputfile (template. txt) den Namen und den Pfad vom Benutzer erhalten, wenn userName 0 wenn Cancel nicht gedrückt wird geticks getappdata (0, data) die Daten von root erhalten timesStr datestr (ticks. array (: , 1)) bilden ein String-Array aus Zeit und Datum bidStr num2str (ticks. array (:, 3)) bilden Sie ein String-Array mit dem Namen BID delimStr (1: length (bidStr)) bilden einen Spaltentrenner genauer, bilden eine Zeile, In eine Spalte umgewandelt werden matrixtimesStr delimStr bidStr sammelt alle Str in eine Matrix dlmwrite (userPath userName, matrix,) sichern die Matrix in einem Dateiende Die Funktion bereitet den Dateinamen vor, der aus dem Datum, der Zeit und dem Symbolnamen des Security besteht. Beim Speichern werden die Symbolmatrizen vorbereitet: - timesStr - Lokale Zeit und Datum entsprechend der Anführungszeichen - delimStr - Begrenzer - bidStr - BID Spalte. Dann sind sie alle in einer Matrix vereint. DelimStr repräsentiert eine Zeile, die aus Leerzeichen besteht, die Länge der Zeile entspricht der Länge der BID-Spalte. Beim Zusammenführen wird die delimStr Zeile in eine Spalte transponiert und trennt die Spalte Zitate von der Zeit. Fazit Ich hoffe, die oben beschriebene Methode wird Ihnen erlauben, die gesamte Fülle von mathematischen Funktionen in Matlab für die Entwicklung und Prüfung Ihrer automatisierten Handelsstrategien verwenden. Erstellen eines DDE-Server Hat jemand Erfahrung beim Einrichten eines DDE-Server Im Versuch, mehrere Metatrader-Terminals Streaming zu bekommen Tick-Daten in meine Datenbank. Ich pflegte, es über Skripts mit Verbindungen zu mysql zu tun, aber anscheinend Im fehlende Zecken. Im Blick in die Einrichtung eines Skripts, das die eingehenden Preisdaten erfasst und sendet sie über einen dde-Server. Der interne MT4 DDE-Server ist gut für das, was er macht, funktioniert aber nicht über mehrere Broker. Mitglied seit: Jun 2007 Status: Seien Sie sich, alle anderen genommen wird 2.733 Beiträge Hat jemand Erfahrung beim Einrichten eines DDE-Server Im Versuch, mehrere Metatrader-Terminals Streaming-Tick-Daten in meine Datenbank zu bekommen. Ich pflegte, es über Skripts mit Verbindungen zu mysql zu tun, aber anscheinend Im fehlende Zecken. Im Blick in die Einrichtung eines Skripts, das die eingehenden Preisdaten erfasst und sendet sie über einen dde-Server. Der interne MT4 DDE-Server ist gut für das, was er macht, funktioniert aber nicht über mehrere Broker. Versucht, einen Weg vor - ich glaube nicht, es kann getan werden Datenbanken verwenden eine Syntax MT4, um den DDE-Server zu finden, da alle MT4-Plattform verwenden die gleiche Syntax - die Daten rufen würde die Informationen aus allen offenen Quellen zur gleichen Zeit, Und wird nicht in der Lage sein, um es für den Einsatz der einzige Weg, ich sehe, dass dies getan ist, um die syntaxDDE-Server-Link zu finden und umbenennen jeden der Makler - das ist so über meinen Kopf, wenn Sie eine Datenbank vor dem Öffnen der mt4-Plattform öffnen Bitten Sie um Erlaubnis, das Terminal zu öffnen - also mögliches Umbenennen des Terminals könnte helfen, die andere Möglichkeit zu sein, die Daten zu einer vor dfined CSV Akte zu exportieren - über eine EA (nicht sure, wenn es mit scripts getan werden kann) - dann haben Sie Ihren Datenbankanruf Up der csv-Datei für Daten Hat jemand Erfahrung beim Einrichten eines DDE-Server Im Versuch, mehrere Metatrader-Terminals Streaming-Tick-Daten in meine Datenbank zu bekommen. Ich pflegte, es über Skripts mit Verbindungen zu mysql zu tun, aber anscheinend Im fehlende Zecken. Im Blick in die Einrichtung eines Skripts, das die eingehenden Preisdaten erfasst und sendet sie über einen dde-Server. Der interne MT4 DDE-Server ist gut für das, was er macht, funktioniert aber nicht über mehrere Broker. Ronald, ich dachte darüber nach mehr in, wie DDE arbeitet. Leider war ich sehr beschäftigt mit der Arbeit in dieser Woche. Ich werde sehen, was ich dieses Wochenende modellieren kann und dann sehen, was in der kommenden Woche live geschieht. Können Sie ein wenig mehr auf die Infrastruktur, die Sie im Sinn haben, ausgearbeitet Joined Oct 2005 Status: Pip Slappa Extrordinaire 1.006 Beiträge Ive sah in diese Art der Sache vor und schloss, dass es nicht die Mühe wert war. Wenn ich ein Projekt wie deines machen sollte, schreibe Id eine DLL, um die Zecken von mehreren MT4-Instanzen zu speichern. Jede Instanz würde einen Indikator laufen lassen, der nichts tut, außer das Tick zu empfangen und die DLL-Speicherfunktion aufzurufen. Sie werden nicht verpassen Ticks, die DLL-Handles Warteschlangen der Zecken kommen und speichern Sie die DB. Sie sind in einem Labyrinth von twisty kleinen Passagen, alle gleich. Ich glaube nicht, es kann getan werden Datenbanken verwenden eine Syntax MT4, um den DDE-Server zu finden, da alle MT4-Plattform verwenden die gleiche Syntax - die Daten würde den Aufruf der Info aus allen offenen Quellen zur gleichen Zeit, und wird nicht in der Lage, es für den Einsatz der einzige Weg, ich sehe, dass dies getan ist, um die syntaxDDE-Server-Link zu finden und umbenennen jeder der Broker - das ist so über meinem Kopf, wenn Sie öffnen Eine Datenbank vor dem Öffnen der mt4-Plattform fragt es Erlaubnis, das Terminal zu öffnen - so möglich Umbenennen des Terminals könnte helfen. Im Versuch, Latenz zwischen Quelle und Prozessor zu reduzieren. Die Verwendung des internen DDE-Servers ist fast nicht möglich. Ich muss definitiv meinen eigenen DDE-Server aufbauen und diesen über EA oder Script im Terminal ausführen. Ronald, ich dachte darüber nach mehr in, wie DDE arbeitet. Leider war ich sehr beschäftigt mit der Arbeit in dieser Woche. Ich werde sehen, was ich dieses Wochenende modellieren kann und dann sehen, was in der kommenden Woche live geschieht. Können Sie ein wenig mehr über die Infrastruktur, die Sie im Auge Ich arbeite an einem Best-Preis-System zu erweitern meine bestehenden Handelssysteme. Also die Art und Weise Im sehen die Architektur: Ich habe einen DDE-Server und Client läuft auf jedem MT4-Terminal Fütterung der Aggregator Preisinformationen. Der Aggregator ähnelt den Umgangstabellen, die ich hatte, als ich für RBS arbeitete. Der Aggregator sendet das beste Gebot und die beste Frage für jedes Paar zu einer Charting-Plattform (wahrscheinlich ein anderes MT4-Terminal), auf dem ich meine EAs platzieren werde. Die EAs senden Handelssignale auf der Basis der Informationen, die sie von dem Aggregator erhalten. Die Handelssignale werden zu einem DDE-Client laufen, der als Skript auf den Metatrader-Plattformen läuft, so dass ich meine Geschäfte erledigen kann und in Bewegung bleibt. Ive sah in diese Art der Sache vor und schloss, dass es nicht die Mühe wert war. Wenn ich ein Projekt wie deines machen sollte, schreibe Id eine DLL, um die Zecken von mehreren MT4-Instanzen zu speichern. Jede Instanz würde einen Indikator laufen lassen, der nichts tut, außer das Tick zu empfangen und die DLL-Speicherfunktion aufzurufen. Sie werden nicht verpassen Ticks, die DLL-Handles Warteschlangen der Zecken kommen und speichern Sie die DB. Es ist nicht so viel Speicherung Zecken als in der Lage, auf sie schnell zu reagieren, wie sie kommen. Fassen Sie zusammen, was ich versuche zu tun: Im Versuch, ein Skript in Metatrader, die ich auf ein Diagramm fallen lassen können, und haben den DDE-Server in diesem Skript-Feed mein Aggregator alle Preis-und Trade-Position Informationen, wie es kommt in. Dieses Skript wird auch über einen DDE-Client, den ich dann verwenden können, um Aufträge von meinem Aggregator zu empfangen. Ich bin Einrichtung eines Aggregators, oder sogar ein DDE-Client auf einer Metatrader-Plattform, die die Offline-Charts generiert, auf denen ich meine EAs. Also drei Komponenten: Knoten - Sendet Preisinformationen für den Handel und empfängt Befehle, um Trades auszuführen. Aggregator - Sammelt die Preisfindungsdaten, ermittelt das beste Gebot und fragt nach jedem Paar und sendet es an den Master. Master - Erstellt Offline-Diagramme mit den besten Preisen aus meinem Harem von Brokern, damit meine EAs Trades platzieren und den Markt vollständig über so viele verschiedene Liquiditätsanbieter wie möglich analysieren können. Angesichts der Menge Größe Im-Handel jetzt in meinen Systemen, wenn ich einen Durchschnitt von 1,4 Pips pro Handel sparen kann, weil dieses, stehe ich, um meine Renditen ein weiteres 4-5 zu erhöhen. Ich kann am Ende nur Einstellung jemand, um alle notwendigen Code für mich schreiben. Aber wenn ich es selbst tun kann, um so besser. Yep, ich habe bereits rohe Futtermittel von 3 Brokern. Aber Im immer noch einige Preisdiskrepanzen zu sehen. Im nicht ganz auf der Ebene, um direkt mit einem Liquiditätsanbieter (500M scheint die magische Zahl sein), so Im versuchen, mein Risiko durch die Ausbreitung Geschäft zwischen mehreren Brokern zu senken. Es ist schön, die Hebelwirkung zu sagen, der Broker, Ich mag nicht, wie youre füllen meine Trades, könnte ich nur bewegen mein Volumen zu konkurrierenden broker. quot Und sie in der Regel geben in. Diejenigen, die nicht verloren das Geschäft, das ich angeboten. Ich havent wirklich betrachtete dieses noch, aber dachte, daß es wert sein kann Posting: Hat jemand Erfahrung, die Einrichtung eines DDE Bedieners Im, der versucht, mehrfache metatrader Terminals zu erhalten, die Tickdaten in meine Datenbank strömen. Ich pflegte, es über Skripts mit Verbindungen zu mysql zu tun, aber anscheinend Im fehlende Häckchen. Im Blick in die Einrichtung eines Skripts, das die eingehenden Preisdaten erfasst und sendet sie über einen dde-Server. Der interne MT4 DDE-Server ist gut für das, was er macht, funktioniert aber nicht über mehrere Broker. Sorry, off topic hier. Da Ihr der Kerl in das Knowhow, wie bekomme ich mutliple Zeitrahmen auf dem gleichen Diagramm. Z. B. auf dem 5m-Chart Ich möchte in der Lage zu sehen, 4hr, 1hr und 30m Charts in einer Ecke der 5m-Chart. D. h. alle in demselben 5-m-Diagramm. Danke im Voraus. Mitglied seit: Mar 2008 Status: Cointegrated Member 621 Beiträge RR, nicht sicher, wo Sie derzeit auf dieser. Ive experimentiert mit diesem Tool, dataloggersuitedde-to-mssql-2.htm Ermöglicht Ihnen, DDE-Daten direkt in eine Datenbank mit odbc oder andere spezifische Treiber abrufen. Können Handelsdaten aus Metatraders DDE-Schnittstelle gezogen werden die gleiche Weise Zitate können Die Bildwiederholrate scheint zu langsam, aber ich glaube, sie setzen die Demo, die Art und Weise mit Absicht. EDIT: ah, 220 für die Enterprise-Version. Ich war in der Lage, die dde Daten in den Logger zu ziehen, nur nicht in die Datenbank, da es sich um eine kommerzielle Hinzufügen auf die Basis kostenloses Produkt. Verwenden Sie mysql Ich möchte Korrelation und andere Modelle in SPSS erstellen und möchte mysql als Schnittstelle zwischen metatrader und eine SPSS-DLL, die über python ausgesetzt werden können, verwenden. Yep, ich habe bereits rohe Futtermittel von 3 Brokern. Aber Im immer noch einige Preisdiskrepanzen zu sehen. Im nicht ganz auf der Ebene, um direkt mit einem Liquiditätsanbieter (500M scheint die magische Zahl sein), so Im versuchen, mein Risiko durch die Ausbreitung Geschäft zwischen mehreren Brokern zu senken. Es ist schön, die Hebelwirkung zu sagen, der Broker, Ich mag nicht, wie youre füllen meine Trades, könnte ich nur bewegen mein Volumen zu konkurrierenden broker. quot Und sie in der Regel geben in. Diejenigen, die nicht verloren das Geschäft, das ich angeboten.

Comments

Popular posts from this blog

Forex Lund Göppettider Pgґsk

Gewinne bis zu 92 alle 60 Sekunden Online-Binäroptionsstrategie 438 Wie können sie also bestimmen, ob die beiden Anlagen tatsächlich identisch sind. Stier. Die Transaktionsverarbeitung in Design - und Software-Engineering-Anwendungen wird in Korth et al. Die totale Schlafzeit scheint in Strepsirhines länger zu sein als in Haplorhines, mit zwei interessanten abgeleiteten Zuständen, die eine sehr ausgedehnte Schlafzeit und Menschen mit einer reduzierten Schlafzeit haben. 12) maximal 4. Sie müssen die Rohdaten in die Tabelle eingeben. Der E-Mini-Papierhandel stimmt mit der empirischen Gl. Viele Patienten machen es nicht durch die Evaluierungsphase der Suche nach Hilfe. Online-Binäroptionsstrategie 438 Filho, F. 54 6. Zwei Modelle schlagen Mechanismen für kooperative Bindung vor Biochemie jetzt online Binäroptionsstrategie 438 sehr viel über die Online-Binäroptionsstrategie 438 T forex club libertex R-Zustände des Hämoglobins, aber noch viel zu lernen Wie der TnR-Übergang auftritt. 0 Steri

Forex Trading Einkommen Steuer Ukraine

Haben Sie eine Meinung über die US-Dollar-Handel FXCM ein führender Forex-Broker Was ist Forex Forex ist der Markt, wo alle Weltwährungen Handel. Der Forex-Markt ist der größte, liquideste Markt der Welt mit einem durchschnittlichen täglichen Handelsvolumen von mehr als 5,3 Billionen. Es gibt keinen zentralen Austausch, wie es über den Ladentisch. Forex-Handel ermöglicht es Ihnen, Währungen zu kaufen und zu verkaufen, ähnlich Aktienhandel, außer Sie es tun können 24 Stunden am Tag, fünf Tage die Woche haben Sie Zugang zu Margin Handel, und Sie gewinnen die Exposition gegenüber internationalen Märkten. FXCM ist ein führendes Forex-Brokerage. Fair und Transparent Execution Seit 1999 hat FXCM die besten Online-Forex Trading Erfahrung auf dem Markt zu schaffen. Wir pionierten die No Dealing Desk Forex Ausführung Modell, die wettbewerbsfähige, transparente Ausführung für unsere Händler. Ausgezeichneter Kundenservice Mit erstklassiger Trading-Ausbildung und leistungsstarken Tools, führen wir

Forex Management Bedeutung

Ein OTC-Markt, in dem Käufer und Verkäufer Devisentransaktionen durchführen. Der Forex-Markt ist nützlich, weil es hilft Handel und Transaktionen zwischen den Ländern, und es ermöglicht auch eine Investitionsmöglichkeit für risikosuchende Investoren, die dont mind Engagement in Spekulationen. Einzelpersonen, die im Forex Markt handeln, schauen sorgfältig auf eine ökonomische und politische Situation des Landes, da diese Faktoren die Richtung seiner Währung beeinflussen können. Einer der einzigartigen Aspekte des Forex-Marktes ist, dass das Handelsvolumen so hoch ist. Teilweise weil die ausgetauschten Einheiten so klein sind. Es wird geschätzt, dass rund 4 Billionen durch den Forex-Markt jeden Tag geht. Auch als Devisenmarkt. Negativ tragen paar forex scalping täglich cut off währung tag trading system liquidation level forex broker manuelle ausführungen Copyright copy 2017 WebFinance, Inc. Alle Rechte vorbehalten. Unerlaubte Vervielfältigung, ganz oder teilweise, ist streng verboten. W