Jforex Api Ibar


Es gibt nur zwei weitere Handelstage im April Dukascopy JForex Strategy Contest übrig. Ich bin derzeit auf Platz 6. Aber theres ein heftiger Kampf für meinen Platz. Ive bewegte zwischen 6. und 8. die ganze Woche, obwohl ich havent irgendeinen Handel machte. Die anderen Leute setzen auf große Wetten in der Hoffnung, in einer Top 6 zu quetschen. Warum Nach der gewinnenden Preisstruktur werden die 4. bis 6. Gewinner jeweils 1.000 erhalten. Während der 7. bis 10. werden jeweils nur 500. Mit meinem aktuellen Konto stehen bei 120.032 (20 Gewinn) in diesem Monat, es ist durchaus lebensfähig für andere zu versuchen, meinen Platz zu nehmen. Sehen Sie die Tabelle unten für die Top-10-Standing ab diesem Schreiben. Meine Optionen sind entweder Feuer meine Strategie, um mehr Trades zu machen oder nichts zu tun. Das Risiko, meine Strategie erneut zu führen, ist, dass ich Geld verlieren und mich noch weniger konkurrenzfähig machen kann. Meine Strategien Arbeitszeitrahmen ist in Stunden, so gibt es nicht viel Raum für Fehler. Als solches fühle ich, dass mit nur zwei Tagen des Handels links, Zeit ist nicht auf meiner Seite. Auf der anderen Seite werde ich wahrscheinlich meinen 6. Platz verlieren, da ich nicht weit von anderen hinter mir bin. Also, wenn ich nichts tun, werde ich wahrscheinlich am Ende der 7. oder 8. und verlieren die Hälfte des Preisgeldes. Nach dem Nachdenken über diese kurz, Ive beschlossen, nichts zu tun. Die Chancen sind einfach zu viel gegen mich. Ich habe zu viele Leute in diesem Monat Wettbewerb riskiert, um von einem guten Rang aufzustehen, nur um sich zu viel aussetzen und verlieren aus der Top-10 vollständig gesehen. Ich fand heraus, dass die konkurrierende Strategie in der Dukascopy JForex Strategy Contest nicht 100 automatisch sein muss Laut Contest Support im offiziellen Forum. Ich kann Parameter wie Take-Profit-Ziel, Stop-Loss und Long-Only-oder Short-only-Trades gesetzt. Das macht diesen Wettbewerb wesentlich einfacher zu programmieren, da ich eine halbautomatische Strategie implementieren kann, was ich in meinem echten Handel bevorzuge. Das Problem beim Aufbau eines automatisierten Handelssystems ist, dass sich die Marktbedingungen häufig und ohne Vorankündigung ändern. Daher braucht es mehr als ein paar Zeilen, um ein konsequent profitables System zu programmieren, um unerwünschte Zustände herauszufiltern. Wie ich schon sagte, weil alle Gewinner in diesem Wettbewerb ihre Quellcodes veröffentlichen müssen, möchte ich nicht zu viel Zeit auf diesen Wettbewerb verbringen. Jetzt weiß ich, dass ich in diesem Wettbewerb halbautomatisch handeln kann. Ich kann meine Analyse nur manuell durchführen und dann die Strategie verwenden, um Trades auszuführen, wenn ich dies wünsche. Das ist genau wie mein echter Handelsprozeß, wie vorher dargestellt. Wie Sie sich vorstellen können, bin ich sehr glücklich über diese Nachricht. Ich brauche nicht, um meinen Kopf zu zerkratzen mehr, um eine neue Strategie für den nächsten Monat Wettbewerb aufzubauen. Ich programmierte und testete mehrere neue Ideen in den letzten 2 Wochen, aber havent etwas besser als meine bisherige Strategie gefunden. Was im April gut läuft. Dieser Dukascopy JForex Strategy Contest war ein großer Anreiz für mich, mich mit JForex vertraut zu machen. Da ich beabsichtige, es für meinen wirklichen Handel bei Dukascopy zu verwenden (öffnen Sie ein Konto mit diesem Teilnehmerlink, um 35 Rabatt auf Provisionen zu erhalten), später dieses Jahr, ist dieses eine Win-Win-Situation für mich, wie ich die API erlernt und möglicherweise gewinnt einigen Preis Geld zur gleichen Zeit. Dies ist eine Erläuterung meiner automatisierten Handelsstrategie für den Dukascopy JForex Strategy Contest im April. Diese Strategie hat gerade ihren ersten Handel heute nach dem Laufen für etwa 72 Stunden. Mein Contest-Demo-Konto mit einem Gewinn von 7 auf diesem ersten Handel geschlossen. Beachten Sie, dass diese Strategie für die Konkurrenz in einem Wettbewerb und nicht für echte Handel (d. H. Seine rein ein kostengünstiges Spiel) gebaut ist. Hier ist das Konzept für diese hohe Wahrscheinlichkeit Handel Setup. Wie in Abbildung 1 dargestellt, markiert der rote Pfeil heute meinen kurzen Eintrag auf EURGBP. Dies sind die technischen Analyse-Indikatoren, die die Strategie verwendet: Trend: Signalisiert durch 50 Bar gleitenden Durchschnitt über (bullish) oder unten (bearish) der 200 bar gleitenden Durchschnitt. Momentum: Überverkauft oder überkauft RSI Bedingungen, aber nicht in einer traditionellen Weise verwendet. Volatilität: Ich nutze den Keltner-Kanal zur Messung der Volatilität. Preisaktion: Verhalten des Leuchters beobachten, um die Trendfortsetzung zu identifizieren. Dies ist, wo das Geheimnis dieser Strategie passiert. Ich werde das unten erklären. Beachten Sie, dass ich eine Bollinger Bands in der Tabelle von Abbildung 1 verwendet, weil ich nicht finden konnte, die Keltner Channel-Anzeige in Metatrader (meine Charting-Software). Es beeinflußt meine Begriffsabbildung irgendwie nicht. Das Setup: Identifizieren Sie den übergreifenden Trend über 50200 gleitende Mittelwerte, wie oben erläutert. Bestätigen Sie, dass der Preis weiterhin auf dem Trend liegt, indem Sie überprüfen, ob der aktuelle Marktpreis auf der rechten Seite des 200-Bar-gleitenden Durchschnitts liegt. Preis oben für bullish und unten für bearish. Sobald Schritte 1-2 vorhanden sind, wird davon ausgegangen, dass der Trend stark ist. Wir suchen ein Setup in Richtung Trends. Insbesondere suchen wir nach einem ausgefallenen Counter-Trend-Retracement-Setup mit Kerzenhalter in Kombination mit dem Keltner-Kanal. Klingt fancy aber seine einfache. Nach einem kurzen Beispiel müssen die Stäbe hoch über dem Keltner-Kanal eindringen, doch schließt sie sich darin. Dann wird der kurze Eintrag signalisiert. Das Gegenteil für einen Long-Side-Eintrag. RSI überkaufte und überverkaufte Bedingungen werden verwendet, um langsame und stetige Gegen-Trend-Bewegungen herauszufiltern (diese sind böse). Ein weiterer Vorteil der Verwendung eines Preis-Kanal ist, dass ich es auch verwenden, um meine Take Gewinnziel und Stop-Loss zu halten. Wie ich schon sagte, weil Dukascopy davon ausgeht, dass die Kandidaten ihre Quellcodes gewinnen können, benutze ich hier nichts Eigenhaftes oder Außergewöhnliches. Als solches ist dies völlig anders als das, was ich zu handeln, auf meinem eigenen. Nämlich mehr Vertrauen auf Indikatoren und weniger auf Preis-Aktion und Risikomanagement. Nachdem studierte die Anatomie einer leeren JForex-Strategie (Teil 1 und Teil 2), seine Zeit zu sezieren eine funktionierende ein. MAPlay ist die Strategie, die in jedem JForex-API-Download als Demonstration enthalten ist. Den vollständigen Quellcode dieser Strategie finden Sie im srcsinglejartest im JForex API-Zip-Paket. Beachten Sie, dass die erste Schnittstellenmethode, die zu Beginn der Strategie läuft, onStart ist. Die onStart-Methode von MAPlay wird unten dargestellt. Die Variablen-Engine. Indikatoren. Und console sind Felder der MAPlay-Klasse. Sie sind globale Variablen innerhalb der Klasse. Was die Zeilen 42 - 44 tun, ist, die IEngine zu speichern. IIndikatoren. Und IConsole-Objekte für spätere Verwendung. Die letzte Zeile von onStart, Zeile 45, dient lediglich zum Ausdrucken einer Nachricht auf Ihrer JForex-Programmkonsole, um dem Benutzer mitzuteilen, dass die Strategie gestartet wurde. Sobald der OnStart beendet ist, wird der Server wahrscheinlich auf onTick aufrufen, wenn ein Markttick ankommt. Wenn sein nicht während Marktstunden, dann theres kein Häckchen und etwas anderes Ereignis anstelle von onTick passieren könnte. Denken Sie an die Methoden als Ereignisse statt an einen linearen Prozess. Sie programmieren Ihre JForex-Strategie entsprechend dem, was Sie mit jedem der sechs IStrategy-Interface-Ereignisse durchführen möchten. Für diese spezielle Strategie entscheidet der Programmierer, ihre Strategie auf der Tick-Ebene umzusetzen. Als solches wohnt ein großer Teil des Handelsalgorithmus in onTick für MAPlay. Beachten Sie, dass dies eine Entwurfsauswahl ist, können Sie onBar verwenden, wenn Sie Ihre Strategie auf Barlevel verarbeiten möchten (oder Sie können onTick und onBar verwenden). Hier ist der 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 rückgängig zu machen, kann es leichter sein, rückwärts zu arbeiten, wenn der Auftrag platziert wird, was in diesem Fall durch engine. submitOrder erfolgt. Ma0 und ma1 Ergebnisse aus exponentiellen gleitenden Durchschnitten (EMA). Ma0 ist der aktuelle Wert. Ma1 ist der vorherige Balkenwert. Die Zeilen 56-63 überprüfen mit IF-Tests (Zeilen 56 und 60), ob eine der Variablen ungültige Daten enthält. Wenn die Daten ungültig sind, wird das Kennzeichen berechnet und der Rest des onTick wird mit der return-Anweisung auf Zeile 62 übersprungen. Hinweis: Indikatorwerte können abhängig von der jeweiligen Indikatorimplementierung manchmal ungültig (Null, negativ oder Double. NaN ), Wenn nicht genügend Daten vorhanden sind, um sie 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) abgerufen. Das JForex Wiki bietet eine Erläuterung seiner Verwendung. Beachten Sie, dass ma1 ein Array ist, das in Zeile 38 mit einer Grße äquivalent zu 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 ist für die aktuellen Instrumente Steckplatz in der ma1-Array fragen. Das aktuelle Instrument ist dasjenige, das in das Verfahren in Zeile 55 übergeben wird. Wenn der Code heruntergefahren wird, ist ein weiterer interessanter Punkt die Linie 65, die die Verwendung von instrument. getPipValue () zeigt. Die Zeile 67 prüft, ob die aktuelle Gesamtzahl der Positionen Null ist. Wenn dies der Fall ist, bedeutet dies, dass keine offene Position vorliegt, dann geht die Strategie weiter, um das Eingangssignal zu überprüfen, um einen Handel einzugeben (Zeilen 68-76). PositionsTotal () ist ein benutzerdefiniertes Verfahren, das in den Zeilen 84-92 definiert ist. Es benutzt eine FOR-Schleife, um durch alle Befehle zu laufen, die von engine. getOrders (instrument) erhalten werden. Sobald entweder die lange oder kurze Bedingung, die Zeilen 68 und 72 erfüllt sind, sendet die Strategie eine Anweisung in den Zeilen 69 für eine kurze und Zeile 73 für eine lange. Die Einzelheiten der Einreichung von Marktaufträgen ist im JForex Wiki beschrieben. Wenn Sie diese Strategie beenden, wird onStop (Zeilen 48-53) aufgerufen. Für diese Strategie durchläuft der Programmierer alle Aufträge erneut 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, dass Sie sich erinnern sollten. Beachten Sie meine Verwendung der vielen Links zu den JForex javadoc und JForex Wiki in diesem Beitrag. Sie sind wahrscheinlich, viele Ihrer Antworten von diesen zwei Quellen zu finden. Wenn nicht, theres immer das JForex Support Board. Nun, da youve hatte eine Vorstellung davon, wie MAPlay. java funktioniert, seine Zeit, es zu testen. In der nächsten Post im Januar werden wir die JForex Historical Tester diskutieren und was wir bei der Ausführung einer Strategie live beobachten sollten. Wir sahen vier der sechs Methoden in der IStrategy-Schnittstelle in einem früheren Post. Die letzten beiden Methoden, onTick und onBar, ist, wo Ihre Strategie mit Marktdaten zu verbinden. Entweder eine oder beide dieser Methoden ist, wo Sie Ihre Handels-Algorithmus in. Ihre Strategie wäre dann in der Lage, die Marktdaten zu verarbeiten, wie sie ankommen ein tickbar zu einem Zeitpunkt. Denken Sie daran, dass IStrategy Interface das Skelett Ihrer Strategie ist. Und das IContext-Objekt ist das Herz Ihrer Strategie. OnTickonBar ist der Kopf Ihrer Strategie, die Ihren Handel Algorithmus, die das Gehirn enthält. Hier ist die Methodendefinition von onTick. Wichtig: OnTick wird für jedes Instrument aufgerufen, das Ihre JForex-Plattform abonniert hat (die Instrumentenliste in Ihrem Arbeitsbereich). Lassen Sie mich sagen, dass wieder, onTick ist für jedes Instrument, dass Ihre JForex-Plattform abonniert aufgerufen wird. Die übliche Praxis ist es, Ticks für Instrumente herauszufiltern, die Sie mit einer einfachen IF-return-Anweisung nicht möchten. If (instrument myInstrument) return Tatsächliche Tickdaten werden an Ihre Strategie über das ITick-Objekt vom Parameter onTick methods übergeben. Werfen Sie einen Blick auf die ITick javadoc Eintrag zu sehen, was es bietet. OnBar arbeitet ähnlich wie onTick. InBar wird für jedes subordinierte Instrument und die Periode, die JForex bekannt ist, aufgerufen. Ebenso müssen Sie alle unerwünschten Instrumente und Perioden herausfiltern, sonst werden die Ergebnisse Ihrer Strategie erwartet. Ein weiterer Punkt zu beachten ist, dass onBar sowohl eine IBar askBar und IBar bidBar, die Frage und Bid Bars darstellt. Frage: Was passiert, wenn zwei oder mehr Perioden überlappen, wie in 13:45 1, 5 und 15 Minuten Bars sind alle zur gleichen Zeit (nicht zu erwähnen, die Perioden in Sekunden zu). Antwort: Laut Dukascopy Support im Forum, sie kommen in einer strengen Ordnung, zum Beispiel (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 5min.) Sie kommen in Zyklen, wo kleinere Zeiträume an erster Stelle kommt. JForex Support Forum Wie Sie Ihre Strategie mit JForex programmieren, werden Sie zweifellos mit eigenen Fragen aufwarten. Der beste Ort, um zu fragen, ist auf dem offiziellen JForex Support Forum. Dies ist die letzte der drei essentiellen JForex-Ressourcen, auf die ich früher hingewiesen habe. Selbst wenn Sie keine spezielle Frage haben, gibt es Beispielcodes, Codierungsdiskussion und Hunderte von vorhandenem QampA von anderen JForex Entwicklern, die im Forum gepostet werden. Die Diskussion war bisher sehr hoch. Um Ihnen zu zeigen, was Sie tatsächlich in einer IStrategy tun können, sezieren wir eine Arbeitsstrategie im nächsten Post. Und was besser zu prüfen als die beliebtesten JForex-Strategie von ihnen alle - MAPlay. java. Fortsetzung von Teil 1 dieser Serie: Erste Schritte beim Lernen der JForex-Programmierung. Waren jetzt bereit, die reale Sache zu besprechen. Sie erstellen JForex-Strategien mithilfe der IStrategy-Schnittstelle (Was ist eine Schnittstelle). 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-Schnittstelle sind: Es folgt eine leere Implementierung der IStrategy-Schnittstelle, die auch als JForex-Strategie bezeichnet wird. Dieser Code wird gut in JForex kompilieren und Sie können es sogar ausführen. Aber es tut überhaupt nichts, weil es keinen Code, um in jeder der Methoden laufen. Jede der sechs Methoden wird nur aufgerufen und sofort beenden. 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 beim Ausführen der Strategie aufgerufen wird. Es wird einmal und nur einmal zu Beginn Ihrer Strategie ausgeführt. Normalerweise machst du hier die Initialisierung. Die Sache zu beachten für onStart ist in Zeile 5 des Codes. Die Methodensignatur von onStart ist Das Objekt im Parameter, das Ihnen in dieser Methode übergeben wird, ist ein IContext-Objekt. Wenn IStrategy das Skelett ist, dann ist IContext das Herzstück der Strategie. Bitte werfen Sie einen Blick auf diese javadoc Link zu IContext zu sehen, was dieses Objekt tut. Javadoc. Jetzt ist eine gute Zeit, um die zweite der drei wesentlichen Ressourcen eines JForex-Programmierers einzuführen. Die 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 umfassenden, die meisten der Erklärung ist sehr spärlich und möglicherweise unvollständig. IContext ist ein Kern-JForex-Objekt, das auf viele wichtige Komponenten des JForex-Systems zugreift, wie beispielsweise die Bestellmaschine, die Diagramme, die Konsole und die Indikatoren. Du hast die Idee. Es ist wichtig, dass Sie in der Regel eine lokale Kopie davon behalten möchten, da dies das einzige Mal (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 Sie einen Stop-Befehl an Ihre Strategie senden. Sie tun Ihre Programmumarbeitung wie Protokollierung und Spülen von Daten hier. Nicht viel außergewöhnlich mit diesem. OnMessage (Zeile 18) Wenn wir wissen, wann onStart und onStop aufgerufen werden, onMessage ist eine asynchrone Methode, die Sie nicht genau wissen, wann es ausgeführt wird. Diese Methode wird aufgerufen, wenn der Dukascopy-Server eine Strategie sendet. Der Server ruft beispielsweise OnMessage auf, damit Sie wissen, dass Ihre Bestellung gefüllt wurde. Sie empfangen 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 wurde. Vielleicht ist Ihr Strategieprozess verstopft. Oder vielleicht Ihre Internetverbindung hatte einen Schluckauf. Wenn Ihre Strategie onMessage nicht vom Server aufgerufen wird, aus welchem ​​Grund auch immer, der Server könnte nicht weniger und wird nicht überprüft noch versuchen wieder. So tun Sie nichts kritisches wie die Verwaltung Ihrer Aufträge in onMessage onAccount (Zeile 22) Diese Methode wird aufgerufen, wenn Ihre Kontoinformationen Aktualisierung 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, ändert sich Ihre Kontoinformationen auf jede Zecke, weil Ihr Eigenkapital ist Bargeld unrealisierten Profitverlust. In diesem Fall wird onAccount alle 5 Sekunden vom Server aufgerufen, um zu vermeiden, dass Ihre Strategie überflutet wird. Wichtiger: Das IAccount-Objekt ist nicht live mit Ihrem Konto im Server verbunden. Es ist lediglich eine Momentaufnahme Ihres Kontos. Wenn Sie beispielsweise eine lokale Kopie eines IAccount-Objekts behalten. Tun Sie etwas Handel, um Ihre Balance zu ändern. Dann fragen Sie die gleiche IAccount für Kontostand Informationen, sehen Sie nicht eine Änderung. Aktualisieren Sie daher immer Ihre lokale Kopie von IAccount innerhalb der onAccount-Methode, um Ihre Kontoinformationen aktuell für Ihre Strategien zu verwenden. Die Fortsetzung der onStart-, onStop-, onMessage - und onAccount-Methoden sind 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 die letzte in der nächsten Post. Das größte Problem hatte ich beim Lernen, meine eigenen Trading-Strategien in JForex programmieren zu finden, wo ich anfangen zu lernen. Es gab nur wenige JForex-Dokumentationen zur Verfügung, und ich musste mich durch mühevolle Versuch und Irrtum mit Hilfe von Dukascopys technische Unterstützung lehren. Die Dinge haben sich sicherlich zum Besseren verändert, da eine JForex-Community zu sprießen beginnt und die Dokumentation für sie mindestens ausreicht, um jedermann zu starten. Dieser Beitrag ist der erste einer Reihe von Anfängern, um das Lernen von JForex Programmierung, indem Sie alle diese Ressourcen in einem Tutorial. JForex ist ein Java-Tool JForex ist eigentlich keine Programmiersprache. Es ist eine API (Application Programming Interface) für die Verwendung mit der Standard-Java-Programmiersprache. Als solcher ist der erste Schritt zum Lernen, in JForex zu programmieren, Java zu lernen. Zum Glück ist Java eine der beliebtesten Programmiersprachen. So gibt es 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 zu programmieren. Wenn Sie ein Buch bevorzugen, würde ich empfehlen Head First Java, 2. Auflage. Ich bürstete auf meinem Java aus diesem Buch. Dont auf Java zu viel, aber Sie müssen nur wissen, die Grundlagen zu beginnen mit JForex. Lesen Sie einfach ein paar Kapitel, um die Java-Syntax zu verstehen und dann weiterzugehen. Sie können immer darauf zurückgreifen, um sie später. Tauchen in JForex Das JForex Wiki ist eine der drei wesentlichen Ressourcen für JForex-Programmierer. Ich werde auf einige spezifische Seiten des Wiki in vielen dieser Reihe von Beiträgen beziehen. Wenn Sie das noch nicht getan haben, registrieren Sie sich für ein DEMO-Konto bei Dukascopy. Dann starten Sie die JForex-Plattform und folgen Sie den Anweisungen auf der JForex-Wiki-Seite verwenden, um Ihre erste JForex-Strategie zusammenzubauen. So weit so gut Ich hoffe, Sie können den grundlegenden Java-Quellcode verstehen und wissen, wie Sie startopen, kompilieren und ausführen können JForex-Strategie. Im nächsten Beitrag in dieser Lern-JForex-Reihe werden wir die Anatomie einer JForex-Strategie studieren. Im April-Dukascopy-JForex-Strategie-Wettbewerb sind nur noch zwei weitere Handelstage übrig. Ich bin derzeit auf Platz 6. Aber theres ein heftiger Kampf für meinen Platz. Ive bewegte zwischen 6. und 8. die ganze Woche, obwohl ich havent irgendeinen Handel machte. Die anderen Leute setzen auf große Wetten in der Hoffnung, in einer Top 6 zu quetschen. Warum Nach der gewinnenden Preisstruktur werden die 4. bis 6. Gewinner jeweils 1.000 erhalten. Während der 7. bis 10. werden jeweils nur 500. Mit meinem aktuellen Konto stehen bei 120.032 (20 Gewinn) in diesem Monat, ist es durchaus lebensfähig für andere zu versuchen, meinen Platz zu nehmen. Sehen Sie die Tabelle unten für die Top-10-Standing ab diesem Schreiben. Meine Optionen sind entweder Feuer meine Strategie, um mehr Trades zu machen oder nichts zu tun. Das Risiko, meine Strategie erneut zu führen, ist, dass ich Geld verlieren und mich noch weniger konkurrenzfähig machen kann. Meine Strategien Arbeitszeitrahmen ist in Stunden, so gibt es nicht viel Raum für Fehler. Als solches fühle ich, dass mit nur zwei Tagen des Handels links, Zeit ist nicht auf meiner Seite. Auf der anderen Seite werde ich wahrscheinlich meinen 6. Platz verlieren, da ich nicht weit von anderen hinter mir bin. Also, wenn ich nichts tun, werde ich wahrscheinlich am Ende der 7. oder 8. und verlieren die Hälfte des Preisgeldes. Nach dem Nachdenken über diese kurz, Ive beschlossen, nichts zu tun. Die Chancen sind einfach zu viel gegen mich. Ich habe zu viele Leute in diesem Monat Wettbewerb riskiert, um von einem guten Rang aufzustehen, nur um sich zu viel aussetzen und verlieren aus der Top 10 vollständig gesehen. Ich fand heraus, dass die konkurrierende Strategie in der Dukascopy JForex Strategy Contest nicht 100 automatisch sein muss Laut Contest Support im offiziellen Forum. Ich kann Parameter wie Take-Profit-Ziel, Stop-Loss und Long-Only-oder Short-only-Trades gesetzt. Das macht diesen Wettbewerb wesentlich einfacher zu programmieren, da ich eine halbautomatische Strategie umsetzen kann, was ich in meinem echten Handel bevorzuge. Das Problem beim Aufbau eines automatisierten Handelssystems ist, dass sich die Marktbedingungen häufig und ohne Vorankündigung ändern. Daher braucht es mehr als ein paar Zeilen, um ein konsequent profitables System zu programmieren, um unerwünschte Zustände herauszufiltern. Wie ich schon sagte, weil alle Gewinner in diesem Wettbewerb ihre Quellcodes veröffentlichen müssen, möchte ich nicht zu viel Zeit auf diesen Wettbewerb verbringen. Jetzt weiß ich, dass ich in diesem Wettbewerb halbautomatisch handeln kann. Ich kann meine Analyse nur manuell durchführen und dann die Strategie verwenden, um Trades auszuführen, wenn ich dies wünsche. Das ist genau wie mein echter Handelsprozeß, wie vorher dargestellt. Wie Sie sich vorstellen können, bin ich sehr glücklich über diese Nachricht. Ich brauche nicht, um meinen Kopf zu zerkratzen mehr, um eine neue Strategie für den nächsten Monat Wettbewerb aufzubauen. Ich programmierte und testete mehrere neue Ideen in den letzten 2 Wochen, aber havent etwas besser als meine bisherige Strategie gefunden. Was im April gut läuft. Dieser Dukascopy JForex Strategy Contest war ein großer Anreiz für mich, mich mit JForex vertraut zu machen. Da ich beabsichtige, es für meinen wirklichen Handel bei Dukascopy zu verwenden (öffnen Sie ein Konto mit diesem Teilnehmerlink, um 35 Rabatt auf Provisionen zu erhalten), später dieses Jahr, ist dieses eine Win-win Situation für mich, wie ich die API erlernt und möglicherweise gewinnt einigen Preis Geld zur gleichen Zeit. Dies ist eine Erläuterung meiner automatisierten Handelsstrategie für den Dukascopy JForex Strategy Contest im April. Diese Strategie hat gerade ihren ersten Handel heute nach dem Laufen für etwa 72 Stunden. Mein Contest-Demo-Konto mit einem Gewinn von 7 auf diesem ersten Handel geschlossen. Beachten Sie, dass diese Strategie für die Konkurrenz in einem Wettbewerb und nicht für echte Handel (d. H. Seine rein ein kostengünstiges Spiel) gebaut ist. Hier ist das Konzept für diese hohe Wahrscheinlichkeit Handel Setup. Wie in Abbildung 1 dargestellt, markiert der rote Pfeil heute meinen kurzen Eintrag auf EURGBP. Dies sind die technischen Analyse-Indikatoren, die die Strategie verwendet: Trend: Signalisiert durch 50 Bar gleitenden Durchschnitt über (bullish) oder unten (bearish) der 200 bar gleitenden Durchschnitt. Momentum: Überverkauft oder überkauft RSI Bedingungen, aber nicht in einer traditionellen Weise verwendet. Volatilität: Ich nutze den Keltner-Kanal zur Messung der Volatilität. Preisaktion: Verhalten des Leuchters beobachten, um die Trendfortsetzung zu identifizieren. Dies ist, wo das Geheimnis dieser Strategie passiert. Ich werde das unten erklären. Beachten Sie, dass ich eine Bollinger Bands in der Tabelle von Abbildung 1 verwendet, weil ich nicht finden konnte, die Keltner Channel-Anzeige in Metatrader (meine Charting-Software). Es beeinflußt meine Begriffsabbildung irgendwie nicht. Die Einrichtung: Identifizieren Sie den übergreifenden Trend über 50200 Bewegungsdurchschnitte, wie oben erläutert. Bestätigen Sie, dass der Preis weiterhin auf dem Trend liegt, indem Sie überprüfen, ob der aktuelle Marktpreis auf der rechten Seite des 200-Bar-gleitenden Durchschnitts liegt. Preis oben für bullish und unten für bearish. Sobald Schritte 1-2 vorhanden sind, wird davon ausgegangen, dass der Trend stark ist. Wir suchen ein Setup in Richtung Trends. Insbesondere suchen wir nach einem ausgefallenen Counter-Trend-Retracement-Setup mit Kerzenhalter in Kombination mit dem Keltner-Kanal. Klingt fancy aber seine einfache. Nach einem kurzen Beispiel müssen die Stäbe hoch über dem Keltner-Kanal eindringen, doch schließt sie sich darin. Dann wird der kurze Eintrag signalisiert. Das Gegenteil für einen Long-Side-Eintrag. RSI überkaufte und überverkaufte Bedingungen werden verwendet, um langsame und stetige Gegen-Trend-Bewegungen herauszufiltern (diese sind böse). Ein weiterer Vorteil der Verwendung eines Preis-Kanal ist, dass ich es auch verwenden, um meine Take Gewinnziel und Stop-Loss zu halten. Wie ich schon sagte, weil Dukascopy davon ausgeht, dass die Kandidaten ihre Quellcodes gewinnen können, benutze ich hier nichts Eigenhaftes oder Außergewöhnliches. Als solches ist dies völlig anders als das, was ich zu handeln, auf meinem eigenen. Nämlich mehr Vertrauen auf Indikatoren und weniger auf Preis-Aktion und Risikomanagement. Nachdem studierte die Anatomie einer leeren JForex-Strategie (Teil 1 und Teil 2), seine Zeit zu sezieren eine funktionierende ein. MAPlay ist die Strategie, die in jedem JForex-API-Download als Demonstration enthalten ist. Den vollständigen Quellcode dieser Strategie finden Sie im srcsinglejartest im JForex API-Zip-Paket. Beachten Sie, dass die erste Schnittstellenmethode, die zu Beginn der Strategie läuft, onStart ist. Die onStart-Methode von MAPlay wird unten dargestellt. Die Variablen-Engine. Indikatoren. Und console sind Felder der MAPlay-Klasse. Sie sind globale Variablen innerhalb der Klasse. Was die Zeilen 42 - 44 tun, ist, die IEngine zu speichern. IIndikatoren. Und IConsole-Objekte für spätere Verwendung. Die letzte Zeile von onStart, Zeile 45, dient lediglich zum Ausdrucken einer Nachricht auf Ihrer JForex-Programmkonsole, um dem Benutzer mitzuteilen, dass die Strategie gestartet wurde. Sobald der OnStart beendet ist, wird der Server wahrscheinlich auf onTick aufrufen, wenn ein Markttick ankommt. Wenn sein nicht während Marktstunden, dann theres kein Häckchen und etwas anderes Ereignis anstelle von onTick passieren könnte. Denken Sie an die Methoden als Ereignisse statt an einen linearen Prozess. Sie programmieren Ihre JForex-Strategie entsprechend dem, was Sie mit jedem der sechs IStrategy-Interface-Ereignisse durchführen möchten. Für diese spezielle Strategie entscheidet der Programmierer, ihre Strategie auf der Tick-Ebene umzusetzen. Als solches wohnt ein großer Teil des Handelsalgorithmus in onTick für MAPlay. Beachten Sie, dass dies eine Entwurfsauswahl ist, können Sie onBar verwenden, wenn Sie Ihre Strategie auf Barlevel verarbeiten möchten (oder Sie können onTick und onBar verwenden). Hier ist der 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 rückgängig zu machen, kann es leichter sein, rückwärts zu arbeiten, wenn der Auftrag platziert wird, was in diesem Fall durch engine. submitOrder erfolgt. Ma0 und ma1 Ergebnisse aus exponentiellen gleitenden Durchschnitten (EMA). Ma0 ist der aktuelle Wert. Ma1 ist der vorherige Balkenwert. Die Zeilen 56-63 überprüfen mit IF-Tests (Zeilen 56 und 60), ob eine der Variablen ungültige Daten enthält. Wenn die Daten ungültig sind, wird das Kennzeichen berechnet und der Rest des onTick wird mit der return-Anweisung auf Zeile 62 übersprungen. Hinweis: Indikatorwerte können abhängig von der jeweiligen Indikatorimplementierung manchmal ungültig (Null, negativ oder Double. NaN ), Wenn nicht genügend Daten vorhanden sind, um sie 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) abgerufen. Das JForex Wiki bietet eine Erläuterung seiner Verwendung. Beachten Sie, dass ma1 ein Array ist, das in Zeile 38 mit einer Grße äquivalent zu 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 ist für die aktuellen Instrumente Steckplatz in der ma1-Array fragen. Das aktuelle Instrument ist dasjenige, das in das Verfahren in Zeile 55 übergeben wird. Wenn der Code heruntergefahren wird, ist ein weiterer interessanter Punkt die Linie 65, die die Verwendung von instrument. getPipValue () zeigt. Die Zeile 67 prüft, ob die aktuelle Gesamtzahl der Positionen Null ist. Wenn dies der Fall ist, bedeutet dies, dass keine offene Position vorliegt, dann geht die Strategie weiter, um das Eingangssignal zu überprüfen, um einen Handel einzugeben (Zeilen 68-76). PositionsTotal () ist ein benutzerdefiniertes Verfahren, das in den Zeilen 84-92 definiert ist. Es benutzt eine FOR-Schleife, um durch alle Befehle zu laufen, die von engine. getOrders (instrument) erhalten werden. Sobald entweder die lange oder kurze Bedingung, die Zeilen 68 und 72 erfüllt sind, sendet die Strategie eine Anweisung in den Zeilen 69 für eine kurze und Zeile 73 für eine lange. Die Einzelheiten der Einreichung von Marktaufträgen ist im JForex Wiki beschrieben. Wenn Sie diese Strategie beenden, wird onStop (Zeilen 48-53) aufgerufen. Für diese Strategie durchläuft der Programmierer alle Aufträge erneut 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, dass Sie sich erinnern sollten. Beachten Sie meine Verwendung der vielen Links zu den JForex javadoc und JForex Wiki in diesem Beitrag. Sie sind wahrscheinlich, viele Ihrer Antworten von diesen zwei Quellen zu finden. Wenn nicht, theres immer das JForex Support Board. Nun, da youve hatte eine Vorstellung davon, wie MAPlay. java funktioniert, seine Zeit, es zu testen. In der nächsten Post im Januar werden wir die JForex Historical Tester diskutieren und was wir bei der Ausführung einer Strategie live beobachten sollten. Wir sahen vier der sechs Methoden in der IStrategy-Schnittstelle in einem früheren Post. Die letzten beiden Methoden, onTick und onBar, ist, wo Ihre Strategie mit Marktdaten zu verbinden. Entweder eine oder beide dieser Methoden ist, wo Sie Ihre Handels-Algorithmus in. Ihre Strategie wäre dann in der Lage, die Marktdaten zu verarbeiten, wie sie ankommen eine Tickbar zu einem Zeitpunkt. Denken Sie daran, dass IStrategy Interface das Skelett Ihrer Strategie ist. Und das IContext-Objekt ist das Herz Ihrer Strategie. OnTickonBar ist der Kopf Ihrer Strategie, die Ihren Handel Algorithmus, die das Gehirn enthält. Hier ist die Methodendefinition von onTick. Wichtig: OnTick wird für jedes Instrument aufgerufen, das Ihre JForex-Plattform abonniert hat (die Instrumentenliste in Ihrem Arbeitsbereich). Lassen Sie mich sagen, dass wieder, onTick ist für jedes Instrument, dass Ihre JForex-Plattform abonniert aufgerufen wird. Die übliche Praxis ist es, Ticks für Instrumente herauszufiltern, die Sie mit einer einfachen IF-return-Anweisung nicht möchten. If (instrument myInstrument) return Tatsächliche Tickdaten werden an Ihre Strategie über das ITick-Objekt vom Parameter onTick methods übergeben. Werfen Sie einen Blick auf die ITick javadoc Eintrag zu sehen, was es bietet. OnBar arbeitet ähnlich wie onTick. InBar wird für jedes subordinierte Instrument und die Periode, die JForex bekannt ist, aufgerufen. Ebenso müssen Sie alle unerwünschten Instrumente und Perioden herausfiltern, sonst werden die Ergebnisse Ihrer Strategie erwartet. Ein weiterer Punkt zu beachten ist, dass onBar sowohl eine IBar askBar und IBar bidBar, die Frage und Bid Bars darstellt. Frage: Was passiert, wenn zwei oder mehr Perioden überlappen, wie in 13:45 1, 5 und 15 Minuten Bars sind alle zur gleichen Zeit (nicht zu erwähnen, die Perioden in Sekunden zu). Antwort: Laut Dukascopy Support im Forum, sie kommen in einer strengen Ordnung, zum Beispiel (1min 1min 1min 1min 1min 5min 1min 1min 1min 1min 1min 5min.) Sie kommen in Zyklen, wo kleinere Zeiträume an erster Stelle kommt. JForex Support Forum Wie Sie Ihre Strategie mit JForex programmieren, werden Sie zweifellos mit eigenen Fragen aufwarten. Der beste Ort, um zu fragen, ist auf dem offiziellen JForex Support Forum. Dies ist die letzte der drei wesentlichen JForex-Ressourcen, auf die ich früher hingewiesen habe. Even if you dont have any specific question, there are sample codes, coding discussion, and hundreds of existing QampA from other JForex developers posted in the forum. The discussion so far has been very high level. To show you what you can actually do in an IStrategy, we will dissect a working strategy in the next post. And what else better to examine than the most popular JForex strategy of them all -- MAPlay. java. Continuing on from Part 1 of this series: Getting started learning JForex programming. now were ready to discuss the real thing. You build JForex strategies by using the IStrategy Interface (What is an Interface ). Basically, an Interface is a code skeleton with a set of predefined empty methods that youll need to implement yourself. The six standard methods of the IStrategy Interface are: Below is an empty IStrategy Interface implementation, also known as a JForex strategy. This code will compile fine in JForex and you can even run it. But it doesnt do anything at all because there is no code to run in each of the methods. Each of the six methods will just be called and exit immediately. Each of the method is triggered by a specific event. You can probably guess what they are from their name. onStart (line 5) This is the first method that is called when you run your strategy. It will run once and only once at the start of your strategy. Normally you do your initialization in here. The thing to note for onStart is in line 5 of the code. The method signature of onStart is The object in the parameter and given to you in this method is an IContext object. If IStrategy is the skeleton, then IContext is the heart of the strategy. Please take a look at this javadoc link to IContext to see what this object does. Javadoc . Now is a good time to introduce the second of the three essential resources of a JForex programmer. The JForex Javadoc is the single most up-to-date API documentation explaining each and every object and methods of the JForex API. Think of it like a reference manual. Note that although its comprehensive, most of the explanation is very sparse and possibly incomplete. IContext is a core JForex object to access many important components of the JForex system, such as the ordering engine, charts, console, indicators. You get the idea. It is important You typically want to keep a local copy of it as this is the only time (in onStart) that this object will be passed to you in IStrategy. onStop (line 26) As the name suggest, this method is called once you send a stop command to your strategy. You do your program wrap-up such as logging and flushing data here. Not much out of the ordinary with this one. onMessage (line 18) Whereas we know when onStart and onStop will be called, onMessage is an asynchronous method in that you dont know exactly when it will run. This method is called when the Dukascopy server sends your strategy a message. For example, the server calls onMessage to let you know that your order has been filled. You receive and process the server message by accessing the IMessage object that is passed to you. Important: There is no guarantee that you will receive each and every message sent to your strategy from the server. Perhaps your strategy process is clogged. Or maybe your internet connection had a hiccup. If your strategy onMessage doesnt get called by the server for whatever reason, the server couldnt care less and wont be checking nor trying again. So dont do anything critical like managing your orders in onMessage onAccount (line 22) This method is called whenever your account information update is received. The method provides access to the IAccount object. which you use to get your account information. Say if you have an open position, your account information changes on every tick because your equity is cash unrealized profitloss. In that case, onAccount is called every 5 seconds by the server at most to avoid flooding your strategy. More Important: The IAccount object is not connected live to your account in the server. It is merely a snapshot of your account. For example, if you keep a local copy of an IAccount object. Do some trading to change your balance. Then ask the same IAccount for account balance information, you will not see a change. As such, always update your local copy of IAccount within the onAccount method to keep your account information up-to-date for your strategys use. To be continued onStart, onStop, onMessage, and onAccount methods are administrative methods for your strategy. The last two methods that well discuss, onTick and onBar, is where the magic happens in a strategy. I am saving the best for last in the next post. The biggest problem I had when learning to program my own trading strategies in JForex is finding where to start learning. There were few JForex documentation available at the time and I had to teach myself through painstaking trial and error with the help of Dukascopys technical support. Things have certainly changed for the better as a JForex community is starting to sprout and documentation for it is at least sufficient to get anyone started. This post is the first of a series of quick beginners guide to learning JForex programming by putting all these resources in a tutorial. JForex is a Java tool JForex is actually not a programming language. It is an application programming interface (API) for use with the standard Java programming language. As such, the first step to learning to program in JForex is to learn Java. Luckily, Java is one of the most popular programming languages. So therere plenty of resources on and off the web to learn Java programming. Some examples of free online tutorials are: The Java Tutorials -- This is an official tutorial from the developer of Java themselves. Sehr empfehlenswert. Beginners Java Tutorial -- More geared for the absolute beginners to programming. If you prefer a book, I would recommend Head First Java, 2nd Edition. I brushed up on my Java from this book. Dont dwell on Java too much though as you only need to know the basics to get started with JForex. Just read a few chapters to understand the Java syntax and then move on. You can always refer back to them later. Diving into JForex The JForex Wiki is one of the three essential resources for JForex programmers. I will be referring to some specific pages of the Wiki in much of this series of posts. If you havent done so already, signup for a DEMO account at Dukascopy. Then launch the JForex platform and follow the instructions on the Use in JForex wiki page to assemble your first JForex strategy So far so good By this point, I hope you can understand basic Java source code and know how to startopen, compile, and run a JForex strategy. In the next post in this learning JForex series, we will study the anatomy of a JForex strategy .

Comments

Popular Posts