Wednesday 29 March 2017

Jforex Api Wiki

JForexUtils ist eine Sammlung von benutzerfreundlichen, robusten und nützlichen Tools für die Arbeit mit der JForex API von Dukascopy. Es grundsätzlich verpackt die am häufigsten verwendeten native API-Aufrufe, um eine viel sauberere und weniger umständliche Art zu arbeiten. Dieses Wiki basiert auf Version 0.9.8 und höher. JForexUtils setzt auf Java 8 Mit dem Aufkommen von Java 8 haben viele leistungsstarke neue Features wie Streams, Lambdas etc. in die Sprache gebracht. Mit der korrekten Verwendung dieser Werkzeuge wird der Quellcode prägnanter und deklarativer. Warnung: JForexUtils ist nicht kompatibel mit Java-Versionen lt 8 JForexUtils konzentriert sich auf einen deklarativen Stil Ein primäres Entwicklungsziel ist es, dem Benutzer einen deklarativen und fließenden Programmierstil zu bieten. Viele Objekte können von Builder erstellt werden und mit der Verwendung von RxJava können alle Datenströme auch deklariert werden. Dies hält die Bibliothek und Benutzercode lesen und warten. Eine Handelsstrategie schafft, ändert und schließt Aufträge häufig während des Betriebs. Da alle diese Operationen eine Server-Client-Kommunikation beinhalten, macht JForexUtils die RxJava-Bibliothek stark aus. Dies führt zu einer API, in der der Benutzer angeben kann, welche Aktionen für alle auftragsbezogenen Nachrichten zu treffen sind. Es tut nicht weh, wenn Sie einige Grundlagen von RxJava kennen, bevor Sie JForexUtils verwenden, aber es ist nicht erforderlich. JForex API JForex API bietet die Möglichkeit, benutzerdefinierte Software-Anwendungen mit Java-Programmiersprache zu entwickeln. API-Client-Bibliothek kann mit Kundensystemen verknüpft werden. Es kommuniziert direkt mit den Dukascopy Bank Handelsservern über sichere und authentifizierte Internet-Sessions. Es ist nicht notwendig, JForex-Plattform zur gleichen Zeit laufen zu lassen, aber die Plattform kann verwendet werden, um in Echtzeit alle Aktionen zu überwachen, die von einem Kunden-System genommen werden. Um mit dem JForex Software Development Kit (JForex SDK) zu arbeiten, laden Sie es herunter und importieren es in einer Java Integrated Development Environment (IDE) Ihrer Wahl: Das JForex SDK enthält Beispiele für: Strategie mit Live-Datenstrategie Back-Test-Strategie Back - Testen im visuellen Modus Die JForex SDK-Übersicht beschreibt die Änderung und Verbesserung dieser Nutzungsfälle. Für die Strategieentwicklung beginnen Sie mit der Strategie-API-Übersicht. Die neuesten JForex SDK Abhängigkeiten finden Sie immer im öffentlichen Dukascopy Maven Repository. Was bedeutet, dass man ihr Projekt konfigurieren kann, um immer die neueste JForex API Version zu verwenden. Bleiben Sie up-to-date mit unseren neuesten Jforex api Entwicklungen und abonnieren Sie automatische Jforex API Release-Note E-Mails. Vergessen Sie auch nicht, unser API-Support-Forum zu lesen, in dem alle Jforex API-Veröffentlichungen veröffentlicht und diskutiert werden. JForexUtils ist eine Sammlung von benutzerfreundlichen, robusten und nützlichen Tools für die Arbeit mit der JForex API von Dukascopy. Der Zweck dieser Bibliothek ist es, eine umständliche Kesselplatten-Codierung zu vermeiden und eine einfachere Art, die API zu bearbeiten. Heres eine kurze Liste dessen, was getan werden kann: Auftragserstellung, Veränderung und Schließung auf einfache und deklarative Weise Erstellen von Kombinationen von Währungen und Instrumenten aus verschiedenen Quellen Konvertieren von Beträgen von einem Instrument zum anderen Ausführen von Aktionen und Anrufbeantwortern auf dem Strategie-Thread in einer Zeile Automatische Wiederverbindung Unterstützung für eigenständige API Für alle Features und HowTos siehe das Wiki Home. JForexUtils beruht rein auf Java 8, also ist es nicht kompatibel mit Java-Versionen lt 8 Derzeit wird JForexUtils nicht auf MavenCentral oder einem anderen Online-Repository gehostet (wird später getan). Um die Bibliothek in deinem Projekt zu benutzen, musst du sie auf der Seite "Freigaben" packen. Hier finden Sie zwei Versionen: Die JForexUtilsUberJar-.jar-Datei enthält alle Abhängigkeiten, die die JForexUtils-.jar-Datei hat keine enthaltenen Abhängigkeiten, die sie exportiert, damit sie die Datei in einer OSGI-Umgebung verwenden können. Bugs and DiscussionHaving hat die Anatomie eines leeren JForex untersucht Strategie (Teil 1 und Teil 2), seine Zeit, eine Arbeit zu sezieren. MAPlay ist die Strategie, die mit jedem JForex API Download als Demonstration enthalten ist. Sie finden den kompletten Quellcode dieser Strategie in srcsinglejartest im JForex API-Zip-Paket. Erinnern Sie sich, dass die erste Schnittstellenmethode, die zu Beginn der Strategie läuft, onStart ist. Die OnStart-Methode von MAPlay ist unten wiedergegeben. Die Variablen Motor. Indikatoren Und Konsole sind Felder der MAPlay-Klasse. Sie sind globale Variablen innerhalb der Klasse. Welche Linien 42-44 tun, ist, die IEngine zu retten. IIndikatoren Und IConsole-Objekte für spätere Verwendung. Die letzte Zeile von onStart, Zeile 45, dient lediglich dazu, eine Nachricht auf deiner JForex-Programmkonsole zu drucken, um dem Benutzer mitzuteilen, dass die Strategie gestartet wurde. Sobald onStart die Verarbeitung beendet hat, wird der Server wahrscheinlich anrufen, wenn ein Market Tick ankommt. Wenn es nicht während der Marktstunden, dann theres kein Häckchen und irgendein anderes Ereignis könnte anstatt onTick geschehen. Denken Sie an die Methoden als Ereignisse eher als ein linearer Prozess. Sie programmieren Ihre JForex-Strategie nach dem, was Sie mit jedem der sechs IStrategy Interface-Events machen wollen. Für diese spezielle Strategie entscheidet der Programmierer, ihre Strategie auf der Tick-Ebene umzusetzen. Als solches befindet sich ein Großteil des Trading-Algorithmus in onTick für MAPlay. Beachten Sie, dass dies eine Design-Wahl ist, können Sie onBar verwenden, wenn Sie möchten, dass Ihre Strategie auf der Balkenebene verarbeitet wird (oder Sie können sowohl onTick als auch onBar verwenden). Heres den Quellcode für onTick in MAPlay. Auf einen Blick können Sie feststellen, dass die Variablen ma0 und ma1 eine Schlüsselrolle bei der Bestimmung des Setups spielen. Hinweis: Um eine Strategie umzukehren, kann es leichter sein, rückwärts zu arbeiten, wenn der Auftrag platziert wird, was in diesem Fall von engine. submitOrder erfolgt. Ma0 und ma1 halten Ergebnisse aus exponentiellen gleitenden Durchschnitten (EMA). Ma0 ist der aktuelle Wert. Ma1 ist der vorherige Balkenwert. Zeilen 56--63 Überprüfung mit IF-Tests (Zeilen 56 und 60), um zu sehen, ob eine der Variablen ungültige Daten enthält. Wenn die Daten ungültig sind, wird der Indikator berechnet und der Rest des onTick wird mit der return-Anweisung auf Zeile 62 übersprungen. Hinweis: Indikatorwerte können manchmal ungültig sein (Null, negativ oder Double. NaN, abhängig von der jeweiligen Indikatorimplementierung ) Wenn es nicht genügend Daten gibt, um es zu berechnen oder ein Fehler aufgetreten ist, zum Beispiel. Die EMAs werden in den Zeilen 57 und 59 mit dem IIndicators-Objekt (das in onStart initialisiert wurde) geholt. Das JForex Wiki gibt eine Erklärung für seine Verwendung. Beachten Sie, dass ma1 ein Array ist, das in Zeile 38 mit einer Größe gleich der Anzahl aller verfügbaren JForex-Instrumente deklariert wurde. Insbesondere wird sie mit einem speziellen Indexwert wie in ma1instrument. ordinal () verwendet. Mit anderen Worten, es fragt nach dem aktuellen Instrumenten-Slot im ma1-Array. Das aktuelle Instrument ist dasjenige, das in die Methode in Zeile 55 übergeben wird. Das Herunterfahren des Codes, ein weiterer Punkt von Interesse ist Zeile 65, die die Verwendung von instrument. getPipValue () zeigt. Zeile 67 prüft, ob die aktuelle Gesamtzahl der Position Null ist. Wenn es heißt, dh keine geöffnete Position, dann geht die Strategie weiter, um das Eintrittssignal zu prüfen, um einen Handel zu betreten (Zeilen 68-76). PositionenTotal () ist eine benutzerdefinierte Methode, die in den Zeilen 84-92 definiert ist. Es verwendet eine FOR-Schleife, um durch alle Aufträge, die von engine. getOrders (Instrument) erhalten werden, zu durchlaufen. Sobald entweder die lange oder kurze Bedingung, die Zeilen 68 und 72 erfüllt sind, gibt die Strategie eine Bestellung in Zeilen 69 für eine kurze und Linie 73 für eine lange. Die Angaben zur Einreichung von Marktaufträgen sind im JForex Wiki beschrieben. Wenn du diese Strategie stoppst, wird onStop (Zeilen 48-53) aufgerufen. Für diese Strategie schlägt der Programmierer alle Aufträge wieder mit engine. getOrders () und schließt jede Position mit einem Befehl order. close () in Zeile 50. Das ist es für diese triviale Strategie. Wenn es einen Punkt gibt, an den Sie sich erinnern sollten Beachten Sie meine Verwendung der vielen Links zum JForex javadoc und JForex Wiki in diesem Beitrag. Sie werden wahrscheinlich viele Ihrer Antworten aus diesen beiden Quellen finden. Wenn nicht, gibt es immer das JForex Support Board. Nun, da hast du eine Vorstellung davon, wie MAPlay. java arbeitet, seine Zeit, es zu testen. Im nächsten Beitrag im Januar werden wir den JForex Historical Tester diskutieren und was zu sehen ist, wenn man eine Strategie live macht. Wir sahen vier der sechs Methoden in der IStrategy-Schnittstelle in einem früheren Beitrag an. Die letzten beiden Methoden, onTick und onBar, ist, wo Ihre Strategie mit Marktdaten zu verbinden. Entweder man oder beide von diesen Methoden ist, wo Sie Ihren Trading-Algorithmus in setzen. Ihre Strategie wäre dann in der Lage, die Marktdaten zu verarbeiten, wie sie eine Tickbar zu einem Zeitpunkt ankommen. Erinnern Sie sich, dass IStrategy Interface das Skelett Ihrer Strategie ist. Und das IContext-Objekt ist das Herzstück Ihrer Strategie. OnTickonBar ist der Kopf Ihrer Strategie, die Ihren Trading-Algorithmus enthält, der das Gehirn ist. Heres die Methode Definition von onTick. Wichtig: onTick ist für jedes Instrument, das Ihre JForex-Plattform abonniert hat (die Instrumentenliste in Ihrem Arbeitsbereich), aufgerufen. Lassen Sie mich das noch einmal sagen, onTick ist für jedes Instrument aufgerufen, das Ihre JForex-Plattform abonniert hat. Die Standard-Praxis ist es, herauszufinden, Ticks für Instrumente, die Sie nicht wollen, mit einer einfachen IF-return-Anweisung. If (instrument myInstrument) return Tatsächliche Tick-Daten werden mit dem ITick-Objekt aus dem Parameter onTick-Methoden an deine Strategie übergeben. Werfen Sie einen Blick auf die ITick javadoc Eintrag zu sehen, was es bietet. OnBar arbeitet in ähnlicher Weise wie bei OnTick. In welcher OnBar für jedes einzelne geteilte Instrument und die Periode bekannt ist, die JForex bekannt ist. Ebenso musst du alle unerwünschten Instrumente und Perioden herausfiltern oder sonst werden die Ergebnisse aus deiner Strategie erwartet. Ein weiterer Punkt zu beachten ist, dass onBar bietet sowohl eine IBar askBar und IBar bidBar, die die Frage und Bid Bars. Frage: Was passiert, wenn zwei oder mehr Perioden überlappen, wie in 13:45 1, 5 und 15 Minuten Stäbe alle zur gleichen Zeit ankommen (ganz zu schweigen von den Perioden auch in Sekunden). Antwort: Nach Dukascopy Unterstützung im Forum, sie kommen in einer strengen Reihenfolge, zum Beispiel (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 5min.) Sie kommen in Zyklen, wo kleinere Perioden kommt zuerst. JForex Support Forum Wie Sie Ihre Strategie mit JForex programmieren, werden Sie zweifellos mit eigenen Fragen kommen. Der beste Ort, um zu fragen, ist im offiziellen JForex Support Forum. Dies ist die letzte der drei essentiellen JForex-Ressourcen, die ich früher angedeutet habe. Auch wenn Sie keine konkrete Frage haben, gibt es Beispielcodes, Codierungsdiskussion und Hunderte von existierenden QampA von anderen JForex-Entwicklern, die im Forum veröffentlicht wurden. Die bisherige Diskussion war sehr hoch. Um Ihnen zu zeigen, was Sie in einer IStrategy tatsächlich machen können, werden wir im nächsten Beitrag eine Arbeitsstrategie zerlegen. Und was noch besser zu untersuchen als die beliebteste JForex-Strategie von allen - MAPlay. java. Weiter aus Teil 1 dieser Serie: Erste Schritte mit der Programmierung von JForex. Jetzt waren bereit, die reale Sache zu besprechen. Sie erstellen JForex-Strategien mit der IStrategy-Schnittstelle (Was ist ein Interface). Grundsätzlich ist eine Schnittstelle ein Code-Skelett mit einer Reihe von vordefinierten leeren Methoden, die Sie brauchen, um sich selbst zu implementieren. Die sechs Standardmethoden der IStrategy Interface sind: Unten ist eine leere IStrategy Interface Implementierung, auch bekannt als JForex Strategie. Dieser Code wird in JForex gut kompilieren und du kannst ihn sogar laufen lassen. Aber es tut gar nichts, weil es keinen Code gibt, der in jeder der Methoden läuft. Jede der sechs Methoden wird gerade aufgerufen und sofort beendet. Jede der Methoden wird durch ein bestimmtes Ereignis ausgelöst. Sie können wahrscheinlich erraten, was sie von ihrem Namen sind. OnStart (Zeile 5) Dies ist die erste Methode, die aufgerufen wird, wenn Sie Ihre Strategie ausführen. Es läuft einmal und nur einmal am Anfang deiner Strategie. Normalerweise machst du hier deine Initialisierung. Die Sache, die für onStart zu beachten ist, ist in Zeile 5 des Codes. Die Methode Signatur von onStart ist Das Objekt im Parameter und gegeben in dieser Methode ist ein IContext-Objekt. Wenn IStrategy das Skelett ist, dann ist IContext das Herz der Strategie. Bitte werfen Sie einen Blick auf diese javadoc Link zu IContext, um zu sehen, was dieses Objekt tut. Javadoc Jetzt ist eine gute Zeit, um die zweite der drei wesentlichen Ressourcen eines JForex-Programmierers vorzustellen. Der JForex Javadoc ist die einzige aktuellste API-Dokumentation, die jedes Objekt und jede Methode der JForex API erläutert. Denken Sie daran wie ein Referenzhandbuch. Beachten Sie, dass, obwohl seine umfassende, die meisten der Erklärung ist sehr spärlich und möglicherweise unvollständig. IContext ist ein Kern-JForex-Objekt, um auf viele wichtige Komponenten des JForex-Systems zuzugreifen, wie zB die Bestell-Engine, die Diagramme, die Konsole, die Indikatoren. Du hast die Idee. Es ist wichtig Sie möchten in der Regel eine lokale Kopie davon behalten, da dies die einzige Zeit (in onStart) ist, dass dieses Objekt an Sie in IStrategy übergeben wird. OnStop (Zeile 26) Wie der Name schon sagt, wird diese Methode aufgerufen, sobald du einen Stop-Befehl an deine Strategie gesendet hast. Sie machen Ihre Programm-Nachbearbeitung wie Protokollierung und Spülung Daten hier. Nicht viel außergewöhnlich mit diesem. OnMessage (Zeile 18) Während wir wissen, wann onStart und onStop aufgerufen werden, ist onMessage eine asynchrone Methode, in der Sie nicht genau wissen, wann es laufen wird. Diese Methode wird aufgerufen, wenn der Dukascopy-Server Ihre Strategie eine Nachricht sendet. Zum Beispiel ruft der Server onMessage an, damit Sie wissen, dass Ihre Bestellung gefüllt ist. Sie erhalten und verarbeiten die Servernachricht, indem Sie auf das IMessage-Objekt zugreifen, das an Sie übergeben wird. Wichtig: Es gibt keine Garantie, dass Sie jede Nachricht erhalten, die an Ihre Strategie vom Server gesendet wird. Vielleicht ist dein Strategieprozess verstopft. Oder vielleicht hat deine Internetverbindung einen Schluckauf. Wenn Ihre Strategie onMessage nicht vom Server aus irgendeinem Grund angerufen wird, kann der Server nicht weniger kümmern und wird nicht überprüfen und nochmal versuchen. So tut es nichts kritisch wie die Verwaltung Ihrer Aufträge in onMessage onAccount (Zeile 22) Diese Methode wird aufgerufen, wenn Ihr Konto Informationen Update empfangen wird. Die Methode bietet Zugriff auf das IAccount-Objekt. Die Sie verwenden, um Ihre Kontoinformationen zu erhalten. Sagen Sie, wenn Sie eine offene Position haben, ändern sich Ihre Kontoinformationen bei jedem Tick, weil Ihr Eigenkapital Bargeld ist, das nicht realisiert ist. In diesem Fall wird onAccount alle 5 Sekunden vom Server angerufen, um zu vermeiden, dass Sie Ihre Strategie überschwemmen. Wichtiger: Das IAccount-Objekt ist nicht live mit Ihrem Konto im Server verbunden. Es ist nur eine Momentaufnahme deines Kontos. Zum Beispiel, wenn Sie eine lokale Kopie eines IAccount-Objekts behalten. Haben Sie etwas Handel, um Ihr Gleichgewicht zu ändern. Dann frage die gleiche IAccount für Kontostand Informationen, werden Sie nicht sehen, eine Änderung. Als solches, immer aktualisieren Sie Ihre lokale Kopie von IAccount innerhalb der onAccount-Methode, um Ihre Account-Informationen up-to-date für Ihre Strategien verwenden. Um fortgesetzt zu werden, sind onStop, onMessage und onAccount Methoden administrative Methoden für Ihre Strategie. Die letzten beiden Methoden, die gut diskutieren, onTick und onBar, ist, wo die Magie in einer Strategie passiert. Ich spare das Beste für das letzte im nächsten Beitrag. Das größte Problem, das ich beim Lernen hatte, meine eigenen Handelsstrategien in JForex zu programmieren, findet, wo man anfängt zu lernen. Es gab nur wenige JForex-Unterlagen zur Verfügung und ich musste mich durch mühsame Prüfung und Fehler mit Hilfe von Dukascopys technischen Support zu lehren. Die Dinge haben sich sicherlich um so besser verändert, als eine JForex-Community anfängt zu sprießen und Dokumentation dafür ist zumindest genug, um jemanden zu starten. Dieser Beitrag ist der erste von einer Reihe von schnellen Anfänger Guide zum Lernen JForex Programmierung, indem Sie alle diese Ressourcen in ein Tutorial. JForex ist ein Java-Tool JForex ist eigentlich keine Programmiersprache. Es ist eine Anwendungsprogrammierschnittstelle (API) für die Verwendung mit der Standard-Java-Programmiersprache. Als solches ist der erste Schritt zum Lernen, in JForex zu programmieren, Java zu lernen. Zum Glück ist Java eine der beliebtesten Programmiersprachen. So therere viele Ressourcen auf und aus dem Internet, um Java-Programmierung zu lernen. Einige Beispiele für kostenlose Online-Tutorials sind: Die Java Tutorials - Dies ist ein offizielles Tutorial vom Entwickler von Java selbst. Sehr empfehlenswert. Anfänger Java Tutorial - Mehr für die absoluten Anfänger zur Programmierung. Wenn Sie ein Buch bevorzugen, würde ich Head First Java, 2. Auflage empfehlen. Ich bin von diesem Buch auf mein Java gestoßen. Dont auf Java zu viel, obwohl Sie nur die Grundlagen kennen müssen, um mit JForex zu beginnen. Lesen Sie einfach ein paar Kapitel, um die Java-Syntax zu verstehen und dann weiter zu gehen. Sie können sich immer wieder auf sie beziehen. Tauchen in JForex Das JForex Wiki ist eine der drei wesentlichen Ressourcen für JForex Programmierer. Ich werde auf einige bestimmte Seiten des Wiki in viel von dieser Reihe von Beiträgen beziehen. Wenn du das schon gemacht hast, melde dich für ein DEMO-Konto bei Dukascopy an. Dann starten Sie die JForex-Plattform und folgen Sie den Anweisungen auf der Verwendung in JForex Wiki-Seite, um Ihre erste JForex-Strategie zusammenzubringen. So weit so gut In diesem Punkt hoffe ich, dass Sie grundlegende Java-Quellcode verstehen und wissen können, wie Sie beginnen, kompilieren und ausführen JForex-Strategie Im nächsten Beitrag in dieser lernenden JForex-Serie werden wir die Anatomie einer JForex-Strategie studieren.


No comments:

Post a Comment