Sunday 11 June 2017

Forex Nn Ind

Kein Warten eine Minute :) Es gibt keine Möglichkeit, es auszuführen Tick durch tick - es tauscht am Ende der Bar: Auch ist der Zeitrahmen 1 Stunde: Auch auch :) Ich habe keine Ahnung, wie es durchführen wird. Ich habe es nur auf GESCHICHTE getestet. Open-Preise nur Modus ist genug, und schnell genug, um zu testen und zu optimieren. Es ist auf Bewährung für etwa eine Woche auf meiner Demo, und so weit produziert nur 1 Handel, so dass nicht erwarten, dass es loszuwerden Geld :) sofort. Wenn ich genug von den REALEN Geschäften habe, post post, Ill post. Auch auch auch :))) read authors disclaimer. Es ist ein Beispiel, kein Graal. Schade :( gtgtgt Lassen Sie mich versuchen, es von Anfang an ltltlt 1. Kopieren eines Experten aus dem Artikel. Sichern als testexpert. mq4.Kompilieren (F5): Erfolg. Kopieren eines Indikators. Speichern (in Indikatoren Verzeichnis) als Testind. mq4 Kompilieren: Erfolg 3. OOPS Umbenennen des Indikators im Expertencode, da es nicht mehr forexnnind ist :) 4. Testing. Einstellungen: EURUSD, H1, Nur offene Preise, Neuberechnung geprüft. Ergebnisse: 0 Trades. OK, ich glaube, ich habe es. Ich weiß, was das Problem ist. Ill steckte es in die nächste Post, um es lesbar zu halten. OK, hier bin ich, halten meine Promice (siehe das Ende meiner Prev Post). Der Grund gibt es keine Trades, ist im Experten-propetries-Dialog. Eigenschaften sind nicht gesetzt Sie sind alle Nullen. Werfen Sie einen Blick auf den Experten. Wenn wir NICHT testen (Echtzeit-Handel), werden die Eigenschaften zu den optimalen Werten quot initiiert. Wenn wir TESTEN - sie sind nicht. Sie müssen es von Hand zu tun. Also, um die prev. Post: 5. Einstellung von Experteigenschaften auf: dBuyLevel 0.21 dSellLevel 0.9 dStopLoss 200 Punkt dTrailingStop 200 Punkt (und zur Optimierung müssen Sie auch für jede Variable einen Bereich festlegen) Ergebnisse dieses Tests (wie aus dem Artikel hervorgeht Optimiert): Stäbe im Test 17770 Zecken modelliert 35440 Modellierungsqualität n / a Anfängliche Einlage 1000.00 Gesamtnettogewinn 2098.85 Bruttoergebnis 6758.65 Bruttoverlust -4659.80 Profitfaktor 1.45 Voraussichtlicher Gewinn 32.29 Absoluter Drawdown 0.00 Maximaler Drawdown () 1188.55 (27.7) Total Trades 65 Short Positionen (gewonnen) 2 (50,00) Lange Positionen (gewonnen) 63 (44,44) Gewinne (insgesamt) 29 (44,62) Verlustgewerbe (insgesamt) 36 (55,38) Größter Gewinnhandel 802,00 Verlusthandel -204,90 Durchschnittlicher Gewinnhandel 233,06 Verlust Trade -129.44 Maximale aufeinanderfolgende Gewinne (Gewinn in Geld) 6 (1330,35) aufeinanderfolgende Verluste (Geldverlust) 5 (-628,25) Maximaler Konsekutivgewinn (Anzahl der Gewinne) 1330,35 (6) Konsekutiver Verlust (Anzahl der Verluste) -652,10 (4 ) Durchschnittliche aufeinanderfolgende Siege 2 aufeinanderfolgende Verluste 2 Im Allgemeinen (ich verwendet verschiedene Datumsbereich) - das gleiche wie in Artikel versprochen. Wow, das war lang:) SnowCron Self-Organizing Maps mit Self-Organizing Map zu erstellen Neural Network Trading System. FOREX Technische Analyse mit Auto - Einstufung Kohonen Neural Network. Neural Network Trading mit dem Kohonen Neural Network. In diesem kostenlosen Online-Tutorial finden Sie den vollen Zyklus der Verwendung von Cortex integrierte Self Organizing Maps (SOM, kohonen neuronale Netze) für Forex-Handel (oder Aktienhandel, die Idee ist die gleiche). Sie lernen, wie Sie Eingaben für die Self Organizing Maps wählen. Und wie zu entscheiden, was mit der Ausgabe zu tun. Sie finden ein Beispiel für ein fertiges Skript, das die Optimierung sowohl der Self Organizing Maps (Anzahl der Neuronen) als auch der Handelsparameter (Stop Loss etc.) durchführen kann. Endlich (der Teil, der in den meisten Tutorials nicht vorhanden ist) Erfahren Sie, was als nächstes zu tun. Schließlich kann Cortex Neural Networks Software nicht tun, Echtzeit-Handel, müssen Sie etwas wie Trade Station, MetaStocks oder MetaTrader verwenden. Wie portieren Sie die Self Organizing Maps-basierte Forex Trading-Strategie von Cortex auf Ihre bevorzugte Handelsplattform Haben Sie sich mit DLLs, ActiveX-Steuerelemente und Low-Level-Programmierung Die Antwort ist NEIN. Cortex ist mit dem einfach zu bedienenden Feature ausgestattet, mit dem Sie die daraus resultierenden (trainierten) Self Organizing Maps problemlos in die Skriptsprache Ihrer Handelsplattform portieren können. Keine DLLs, DDE, ActiveX oder andere Low-Level-Lösungen - alles ist einfach und einfach. Wichtiger Hinweis: Dies ist NICHT ein wie Tutorial zu handeln. Stattdessen zeigt es Ihnen, wie Sie Cortex verwenden, aber Sie müssen noch Ihr eigenes Handelssystem erfinden. Die, die wir hier verwenden, ist kaum ein Ausgangspunkt und sollte nicht für Forex-Handel verwendet werden, wie ist. Die Idee dieses Textes ist es, Ihnen beizubringen, Self Organizing Maps-basierte Forex Trading-Strategie zu erstellen und sie an die Handelsplattform Ihrer Wahl Port. Das Beispiel ist jedoch vereinfacht und kann nur als Darstellung der Handelsprinzipien verwendet werden. Gleichermaßen funktioniert das MACD-Handelssystem, das in vielen Tutorials zu finden ist, nicht mehr gut (wie sich die Märkte geändert haben), ist aber dennoch ein gutes Beispiel für den Einsatz von Indikatoren für den mechanischen Handel. In zwei Worten: tun Sie Ihre eigene Analyse. Ein weiterer wichtiger Hinweis: Das Tutorial ist mit Beispielen, viele von ihnen. Um Ihr Leben zu erleichtern, habe ich sie alle, nicht nur Fragmente. Allerdings macht es den Text viel länger. Außerdem gehe ich von Anfang an, ungeschickt, Handelssysteme, zu fortgeschritteneren, jedes Mal erklären, was verbessert worden und warum. Seien Sie geduldig oder springen Sie direkt zu dem Abschnitt, den Sie benötigen. Abschließende wichtige Anmerkung: der Code ist nicht etwas, das in Stein gemeißelt wird, es könnte ändern, während dieser Text geschrieben wurde. Die endgültigen Versionen der Skriptdateien sind im Cortex Neural Networks Software Archiv enthalten. Clustering-Daten: Einfacher Test Zunächst einmal versuchen wir einen einfachen Ansatz - lassen Sie unsere Self Organizing Map mit der Sequenz 0 und 1 zu füttern. Dies sollte uns zwei Cluster, die leicht zu unterscheiden ist visuell: Wie wir sehen können, Self Organizing Maps Kann diese Aufgabe leicht erledigen, indem sie zwei Clasters erzeugt: Wenn wir Daten und Siegerneuronen darstellen, können wir sehen, dass das System gut funktioniert - 0 und 1 sind klar getrennt. Clustering Map: Ergebnisse visualisieren Der Ansatz, den wir im vorherigen Beispiel verwendeten, ist ziemlich ungeschickt - wir haben die Anzahl der Gewinner-Neuronen aufgetragen. Dies ist nicht sehr informativ, und wenn wir diese Informationen nutzen wollen, zum Beispiel als eine Eingabe von neuronalen Netzwerk-Software - nicht sehr nützlich. Der Grund dafür ist - die Zahl eines Neurons ist innerhalb einer 0 - Größe eines Matrixbereichs, und Neural Network muss eine komplexe Beziehung zwischen ihm und einem Cluster - Neuron zu finden. Auch auf einem Diagramm, gibt es uns eine nicht offensichtliche Linie. In einem SOM können wir ein Neuron durch seine Koordinaten (X, Y) und ein Signal, das es erzeugt, durch Addition einer Z-Koordinate eindeutig identifizieren. Außerdem wird eine Farbe in einer Computergrafik gewöhnlich durch einen (Rot-, Grün-, Blau-) Vektor dargestellt, so dass hier ein Trick ist: Lassen Sie uns bitten, dass unser System nicht die Neuronenzahlen, sondern die entsprechenden Farben erzeugt. Wir verwenden die folgenden Formeln in C-Sprache: Lets Walk durch den Code, diesmal werden wir eine SIN (X) - Funktion verwenden. Wie Sie sehen können, ist das Klassifizieren von Mustern in SIN (x) gut gemacht. Auch auf einem glatten Farbendiagramm ist es leicht zu sehen, dass Farben zu ähnlichen Trendteilen eines Diagramms korrekt zugeordnet sind. Forex-Signale: Verwenden von echten Zitaten Jetzt können wir echte Zitate verwenden und sehen, ob unsere selbstorganisierende Karte in der Lage sein wird, dieselbe Weise zu behandeln, wie sie SIN (x) behandelt hat. Wie Sie aus dem Diagramm sehen können, funktionierte die SOM, aber. Die Klassifizierung ist nicht sehr nützlich. Das Problem ist, wie man erwarten würde, in der Tatsache, dass die Tabelle (CLOSE-Anführungszeichen für EURUSD) steigt, so dass das gleiche Muster am Anfang eines Diagramms und an seinem Ende betrachtet wird (durch selbstorganisierende Karte) als Zwei völlig unterschiedliche Muster. Forex Trading-Strategie: Mit NOC-Indikator NOC (Normalize On Condition) Indikator wurde erstellt und verwendet in einem der vorherigen Artikel zu behandeln die Anforderung der NN - es müssen normalisierte Daten zu arbeiten. Wir werden NOC mit selbstorganisierender Karte verwenden, um die Trends der CLOSE-Anführungszeichen zu klassifizieren. Hinweis. Dass ich persönlich nicht denken, dass NOC ist ein perfekter Indikator für die Verwendung mit SOM. Eine Art von Claster-Indikator, zeigt Geldfluss zwischen verschiedenen Währungen, wird höchstwahrscheinlich eine viel bessere Arbeit zu tun. Also, betrachten Sie dies als ein Beispiel, und bauen Sie Ihre eigenen Handelssystem. Zum Absturz des Systems können Sie die im Cortex-Archiv enthaltene eurusdh1long. txt-Zitatdatei zusammen mit der kürzeren eurusdh1.txt verwenden. Wenn Sie es verwenden (indem Sie die kurze im Code), können Sie sehen, unsere Systemverhalten in der aus Probe-Test, auf die Daten, die es nie gesehen. In diesem Test fällt NOC nicht aus, scheint aber auch nicht. Außerdem verwenden wir Zyklen, um schönere Parameter zu finden. Oben ist ein kleines Fragment eines resultierenden Diagramms. Beachten Sie, dass es sehr schwer zu sagen, was verwenden können wir für diese Art von einer Klassifizierung, aber a) vielleicht, FFBP Neural Network kann Sence out of it und b) es ist nur ein Beispiel. Wir können auch täglich Diagramme verwenden. Unten ist der fast identische Code für MSFT Aktienkurs. FOREX Handelsstrategie ohne Kohonen SOM Mit dem Diagramm haben wir im oben genannten Kapitel, ist es schwer, ein Devisenhandelssystem zu schaffen. Es gibt eine Klassifizierung, in Ordnung. Aber es sieht nicht aus wie trend up - green, trent down - red. So können wir ein FFBP neuronales Netzwerk zu mak sence aus ihm heraus. Um es besser zu machen, können sowohl Self-Organizing Map-Ausgang und NOC als FFBP NN-Eingänge. Wir werden das Skript aus dem Artikel über Neural Networks FOREX Trading verwenden. Dass, wie ich vermute, Sie bereits gelesen haben. Zunächst können Sie die ursprüngliche, SOM-freie, Skript erneut und finden Sie die optimale Menge von NN-Parameter. Hier können wir einen Gewinner auswählen. Beachten Sie, dass das Schlagen des Marktes nicht unser Ziel hier ist, was wir tun wollen, ist es, mehr oder weniger arbeiten FFBP-System zu nehmen und zu sehen, ob seine Leistung kann durch die Bereitstellung von zusätzlichen Eingaben von SOM verbessert werden. Gewerben: 27 (Kaufen: 27, Verkauf: 0) NocInterval: 12, Reichweite: 0.004, Ma: 3 Lag: 2, Neuronen: 5 Haltestelle: 0.0200, Tp: 0.0000, Anhalten: 0.600000, Buy: 0.170, Sell: 0.900 Drawdown: 0.299 Profit: 6174.000000 (lang: 6174.000000, kurz: 0.000000) Diese Grafik sieht gut aus. Im nächsten Kapitel werden wir zusätzlich zu NOC die Self-Organizing Map-Ausgabe verwenden. Mit Kohonen Neural Network und FFBP Neural Network zusammen Wir werden Zyklen aus dem vorherigen Beispiel zu entfernen, und eine selbstorganisierende Karte, um es hinzuzufügen. Die Kohonen SOM wurde von som04.tsc erstellt, beachten Sie, dass Sie dieses Skript zuerst ausführen müssen. Also, zuerst som04.tsc laufen lassen und die resultierende Selbstorganisierende Karte zu som04winner. kh umbenennen. Das folgende Skript verwendet das bestehende Kohonen-SOM und versucht, optimale Parameter für FFBP NN zu finden, das neben NOC auch seine Ausgabe als Eingabe verwendet. Gewerben: 29 (Kaufen: 29, Verkauf: 0) NocInterval: 12, Reichweite: 0.000, Ma: 3 Lag: 2, Neuronen: 7 Stop: 0.0200, Tp: 0.0000, Anhalten: 0.500000, Buy: 0.140, Sell: 0.900 Drawdown: 0.557 Gewinn: 6677.000000 (long: 6677.000000, short: 0.000000) Wie Sie sehen können, ist mindestens ein Chart besser, als es ohne SOM war, obwohl es nur ein Beispiel ist und für ein echtes Handelssystem, NOC Ist, wahrscheinlich, nicht die beste Wahl der Eingabe für Kohonen SOM (es ist sehr gut für FFBP NN, jedoch). Entfernen von Zyklen aus FFBP Neural Network Trading System Jetzt können wir unser Handelssystem zu einer echten Handelsplattform Port. Schließlich kann Cortex Neural Networks Software nicht online handeln, also müssen wir MetaTrader, TradStation oder etwas anderes verwenden. Wir erstellen hier ein Skript für den MetaTrader-Experten, der sowohl unsere FFBP NN als auch SOM verwendet. Wir tun es in zwei Schritten. Zunächst werden wir die Schritte aus Neural Networks FOREX Handel Artikel, für unsere Gewinner FFBP wiederholen. Dann fügen wir SOM hinzu. Um es zu tun, entfernen wir Zyklen aus dem som05.tsc-Code, verlässt es uns mit einem Code, der eine einzige gewinnende NN verwendet. Dann fügen wir Code zu diesem Skript, DRUCKEN Gewichte von Neuronen. Wir formatieren diese Ausgabe, um es mit MetaTradern (oder anderen Handelsplattform, es ist bis zu Ihnen) Syntax entsprechen. Als Ergebnis haben wir ein großes Array mit NN-Gewichten, die wir in den Experten - / Indikatorcode einer Handelsplattform Ihrer Wahl einfügen können. Für jetzt können wir alle unnötigen Zyklen von som5.tsc entfernen, damit wir das Skript haben, das mit einem Gewinner NN arbeitet. Da wir existng gewinnende NN verwenden, müssen wir es irgendwo erhalten. Der Cortex kommt mit som05winner1.nn (erstellt in som05.tsc und dann umbenannt). Beachten Sie, dass der Code noch Zyklen - nur so vertraut wie möglich - aber diese Zyklen nur einmal durchgeführt werden. Auch einige Parameter für den Noc und das Netzwerk sind hartcodiert: som06.tsc, FFBP, noch keine SOM Exportieren von Gewichten der Neuronalen Netze Im nächsten Schritt werden die Gewichte des Neuronalen Netzwerks in die Skriptsprache einer Handelsplattform unserer Wahl exportiert. Hier sind wir nur die Wiederholung der Neural Networks Forex Trading. Um es zu tun, fügen wir einige PRINT-Anweisungen an die som06.tsc, und es wird die notwendige Ausgabe zu produzieren. Fügen Sie einfach den folgenden Code in die som06.tsc: Hinweis, dass die Logik dahinter wurde in Neural Networks Forex Trading Artikel bereits diskutiert. Kurz gesagt, wird die Ausgabe dieses Skripts so formatiert, dass es mit dem Skriptmodul MQ4, MetaTraders kompatibel ist. MetaTrader ist eine Handelsplattform, die wir verwenden, wenn Sie etwas anderes wollen, zB TradeStation, müssen Sie den Code entsprechend seiner Syntax ändern. Dann werden wir in den folgenden Kapiteln diesen Code in das MetaTraders-Kennzeichen einfügen und es für den Handel verwenden. Emulation APPLYNN Der nächste Schritt ist nicht wirklich erforderlich, aber es ist etwas, das nützlich sein kann, um Fehler im Code zu finden und zu beheben. Wir werden eine Version von som06.tsc erstellen, aber dieses Mal verwenden wir SLANG (Cortex integrierte Skriptsprache), um die APPLYNN-Funktion zu emulieren. Der Grund dafür ist, dass wir im nächsten Kapitel den Port auf die Skriptsprache einer MetaTrader-Handelsplattform portieren, also ist es eine gute Idee, sicherzustellen, dass alles funktioniert. Portierung FFBP Neural Network auf Handelsplattform Der folgende Code ist von Neural Networks Forex Trading Artikel genommen. Es ist ein gebrauchsfertiges Indikatorpaar und ein Experte, der diesen Indikator verwendet. Keine kohonen neuronalen Netzwerk-Code noch nicht. Wie üblich, denken Sie daran, dass es nur ein Beispiel ist, das nicht unbedingt immer rentabel sein wird. Da auch ein Teil unseres MetaTrader-Codes für alle Experten und Indikatoren gleich ist, haben wir ihn in eine separate Bibliotheksdatei verschoben. MetaTrader-Bibliotheken sind nichts als einschließbare Dateien. Diese Bibliothek kümmert sich um die Synhronisierung, wenn zwei oder mehr Experten versuchen, in der gleichen Zeit, sowie von wenigen anderen Dingen laufen. Wenn Sie MetaTrader verwenden, wird es Ihnen helfen, robuste Experten zu schaffen, in jedem Fall ist die MQL-Sprache einfach zu verstehen. Mylib. mql, eine Helfer-Bibliothek Kohone Neural Network FFBP Neuronales Netzwerk, keine Zyklen Wir sind mit einem Devisenhandelssystem, das nur FFBP-Netze verwendet, getan. Jetzt werden wir die gleiche Arbeit mit einer Forex Trading-Strategie zu tun. Das FFBP und Kohonen SOM zusammen verwendet. Zuerst, lass uns som07.tsc wieder, und führen Sie es, um die besten FFBP-Netzwerk auswählen. Beachten Sie, dass die Kohonen-Cluster-Map für dieses Skript früher (in som04) erstellt und als som07winer. kh gespeichert wurde, so dass wir es nicht neu erstellen müssen. Gewerben: 52 (Kaufen: 52, Verkauf: 0) NocInterval: 12, Reichweite: 0.004, Ma: 3 Lag: 2, Neuronen: 3 Stop: 0.0200, Tp: 0.0000, Stop aufstocken: 0.600000, Buy: 0.170, Sell: 0.900 Drawdown: 0.981 Profit: 6820.000000 (lang: 6820.000000, kurz: 0.000000) Dann können Sie Zyklen von som07.tsc entfernen, um das Skript zu erhalten, das wir portieren möchten: Exportieren von Gewichten der selbstorganisierenden Karte Fügen Sie den Code zum Drucken von Neural hinzu Netzwerkparameter, sowohl für FFBP Neural Network als auch für selbstorganisierende Maps. Wir tun es durch Hinzufügen der folgenden zu som10.tsc: Emulation APPLYSOM-Funktion Der nächste Schritt ist, um den Code hinzuzufügen, dass die Anwendung-Funktion emuliert, mit generischer Scripting-Sprache anstelle von Cortex-spezifische Aufrufe. Da wir bereits diesen Code für FFBP NN haben, können wir uns nur auf SOM konzentrieren. Porting Self-Organizing Map Forex Trading System basiert auf MT Der letzte Schritt ist es, unser Skript an MetaTrader Port, so dass es für echte Trading verwendet werden kann. Wir werden den gleichen Experten wie in der FFBP nur Beispiel oben verwenden, aber das Kennzeichen enthält sowohl FFBP und SOM-Code. Beachten Sie, dass zusätzlich mylib. mq4 verwendet wird, sein Code ist der gleiche wie in FFBP nur Beispiel. Der Indikatoren-Code wurde basierend auf nur FFBP-Beispiel erstellt, indem der SOM-Code, portiert von som12.tsc: Final Notes Das ist es. Sie können nun Cortex Neural Network Software-Skript, das SOM-Ausgang als seine Eingänge, unter anderen Eingaben, optimieren, um Handel zu tun und es an die Handelsplattform Ihrer Wahl Port. Beachten Sie, dass dies nicht Ihre einzige Option ist - Sie können diese Methode verwenden, um zum Beispiel FFBP NN zu erstellen, das mehr als ein Kennzeichen plus eine andere FFBP NN-Ausgabe als Eingabe verwendet, und so weiter. Download Cortex Order Cortex Preisliste ansehen Die Sichtbarkeit ist für diese Seite sehr wichtig. Wenn Sie möchten, wenden Sie sich bitte an diese URLSnowCron Neuronale Netze für FOREX Trading In diesem Artikel: ein Beispiel für die Verwendung unserer Neural Networks Software, um ein komplettes neuronales Netzwerk Handelssystem zu schaffen. In diesem Beispiel wird die Cortex-integrierte Skriptsprache verwendet. So lesen Sie bitte zuerst die Skriptsprache. Mit Neuronalen Netzwerken zu schaffen FOREX Trading-Strategie In diesem kostenlosen Online-Tutorial finden Sie den vollen Zyklus der Verwendung neuronaler Netze (Cortex Neural Networks Software) für Forex-Handel (oder Börsenhandel die Idee ist die gleiche). Sie lernen, Eingaben für die künstlichen neuronalen Netze zu wählen. Und wie zu entscheiden, was als Ausgang zu verwenden. Hier finden Sie ein Beispiel für ein fertiges Skript, das die neuronale Netzwerkoptimierung sowohl der Struktur des Neuronalen Netzes (Anzahl der Neuronen) als auch des Devisenhandelssystems ermöglicht (Stopverlust etc.) Die meisten Tutorials), werden Sie lernen, was als nächstes zu tun. Schließlich kann Cortex Neural Networks Software nicht tun, Echtzeit-Trading, müssen Sie etwas wie Trade Station, MetaQuotes oder MetaTrader verwenden. Wie portiere ich das Forex-Handelssystem von Cortex zu deiner bevorzugten Handelsplattform? Du musst mit DLLs, ActiveX-Steuerelementen und Low-Level-Programmen umgehen. Cortex Neural Networks Software kommt mit der einfach zu bedienenden Funktion, mit der Sie das entstandene (trainierte) Neuronale Netzwerk problemlos in die Skriptsprache Ihrer Handelsplattform portieren können. Keine DLLs, DDE, ActiveX oder andere Low-Level-Lösungen - alles ist einfach und einfach. Wichtiger Hinweis: Dies ist NICHT ein wie Tutorial zu handeln. Stattdessen erfahren Sie, wie Sie Cortex Neural Networks Software verwenden. Aber Sie müssen noch Ihr eigenes Handelssystem erfinden. Die, die wir hier verwenden, ist kaum ein Ausgangspunkt und sollte nicht als Forexhandelsstrategie verwendet werden, wie ist. Die Idee dieses Textes ist es, Ihnen beizubringen, NN-basierte Handelssysteme zu schaffen und sie an die Handelsplattform Ihrer Wahl zu portieren. Das Beispiel ist jedoch vereinfacht und kann nur als Darstellung der Handelsprinzipien verwendet werden. Gleichermaßen funktioniert das MACD-Handelssystem, das in vielen Tutorials zu finden ist, nicht mehr gut (wie sich die Märkte geändert haben), ist aber dennoch ein gutes Beispiel für den Einsatz von Indikatoren für den mechanischen Handel. In zwei Worten: tun Sie Ihre eigene Analyse. Eine weitere wichtige Anmerkung: das Tutorial verwendet Beispiele, viele von ihnen. Um Ihr Leben zu erleichtern, habe ich sie alle, nicht nur Fragmente. Allerdings macht es den Text viel länger. Außerdem gehe ich von der ersten, ungeschickt, Forex Trading System. Bis fortgeschritten, jedes Mal erklären, was verbessert worden war und warum. Seien Sie geduldig oder springen Sie direkt zu dem Abschnitt, den Sie benötigen. Abschließende wichtige Anmerkung: der Code ist nicht etwas, das in Stein gemeißelt wird, es könnte ändern, während dieser Text geschrieben wurde. Die endgültigen Versionen der Script-Dateien sind im Cortex-Archiv enthalten. Fallstricke von FOREX BUY / SELL Signale: Was ist falsch mit einfachen Beispielen In der Cortex Neural Networks Software Benutzer führen wir ein einfaches Beispiel eines aftifficial Neural Network. Vorhersage des Preises der GENZ-Aktie. Um herauszufinden, was mit diesem Ansatz falsch ist, können Sie das gleiche einfache Beispiel mit MSFT. TXT anstelle der GENZ. TXT (verwenden Sie 800 Datensätze in der Lerngruppe, wie MSFT. TXT ist ein wenig kürzer, dann GENZ. TXT). Es würde einfach nicht funktionieren Warum Der Grund wird offensichtlich, wenn Sie sich fragen: Was ist der Grund neuronale Netzwerk-Prognose der zukünftigen Werte kann auf dem ersten Platz getan werden Die Antwort ist: es ist das Lernen zu tun, was heißt neuronale Netzwerk-Muster Anerkennung. Um Muster zu erkennen, und wenn es eine verborgene Logik in diesen Mustern gibt, dann wird sogar ein neues Muster (mit derselben Logik) erkannt. Das ist ein Trick - mit der gleichen Logik. Es gibt nicht einmal ein, aber drei Probleme hier. Zunächst einmal, wenn Sie sich die Microsofts Aktienkurs, werden Sie feststellen, dass es ging in den Lernteil unserer Daten, und seitwärts - in der Prüfung Teil. So ist es möglich, dass sich die Logik geändert hat. Zweitens und noch wichtiger - WAS IST DAS MUSTER Du siehst, wenn wir das neuronale Netzwerk im Bereich von 10-100 unterrichteten und es dann in der 1 bis 3 Reihe vorstellten, sind es unterschiedliche Muster 10, 20, 30 und 1, 2, 3 ähneln dem menschlichen, weil - WEIL - wir diese Fähigkeit haben, durch zehn zu dividieren, wenn sie mit Zahlen mit null endet. Es ist, was eine Vorverarbeitung der Daten genannt wird, und standardmäßig kann das NN es nicht tun. Können wir es lehren Natürlich. Was ist es genau, müssen wir es lehren Dies ist die dritte, und die wichtigste. Wir brauchen nicht die Preisvorhersage Wir interessieren uns nicht Was wir brauchen, ist FOREX Verkaufssignale zu kaufen. Nun, warten Sie eine Minute Wir müssen a) unseren Eingang (sowohl Lernen und Testen) im gleichen Bereich haben, und wir brauchen b) in der Lage sein, Entscheidungen zu treffen, die auf sie basiert Es ist nicht das, was wir nennen einen Indikator Bingo So, thats Was wir tun werden - wir werden einen Indikator aufbauen, um ihn dem NN als Input zuzuführen, und wir werden versuchen, eine Vorhersage des Indikatorwerts und nicht des wertlosen Aktienkurses zu erhalten Zitate aus der Festplatte, öffnen Sie die Neural Network-Datei und starten Sie das Lernen - alle in einem automatisierten Modus. Erstellen Sie eine neue Skriptdatei (oder öffnen Sie die mit dem Cortex Neural Networks-Softwarearchiv) und nennen es stocksnn. tsc. Zuerst müssen wir die Preiswerte aus der MSFT. TXT-Datei herunterladen. Wir werden die CLV-Anzeige verwenden (siehe unten), aber um sie zu berechnen, brauchen wir Split-eingestellte Werte für High und Low, nicht nur für Close. Hier ist, wie sie zu bekommen. Stocksnn. tsc, part 1 Die erste Zeile weist den Pfad der StrStockPath-Variable zu, natürlich müssen Sie sie bearbeiten, wenn sich Ihre Datendatei im anderen Verzeichnis befindet. In der zweiten Zeile geben wir an, dass dieser Pfad nicht relativ (relativ zum Speicherort der Cortex. exe-Datei) ist. Der TABLELOADER empfängt den Pfad, den leeren String für die Startzeile, 1 -, um die erste Zeile (Spaltennamen), einen Teil der Fußzeilenzeile (die letzte Zeile in MSFT. TXT enthält keine Daten) zu überspringen, wird ebenfalls angewiesen Um die Spaltennummer 0 zu laden (und arrDate aufzurufen), 2 (arrHigh), 3 (arrLow), 4 (arrC) und 6 (arrClose). Eine vollständige Beschreibung von TABLELOADER finden Sie im SLANG-Referenzhandbuch. Anschließend berechnen wir die Teilung, indem wir die Einstellung "Nah verstellt" beenden und diesen Wert verwenden, um den Wert "Niedrig" und "Hoch" einzustellen. Die MSFT. TXT-Datei enthält die neuesten Daten FIRST, während wir sie LAST möchten. Als Nächstes müssen wir einen Indikator erstellen. Lets sagen, es wird ein Close Location Value-Indikator sein, obwohl im realen Leben würde ich wahrscheinlich mehr als ein Indikator als NN-Eingang. Der Wert Close Location Value wird wie CLV (Close - Low) - (High - Close)) / (High - Low) berechnet, wobei Close, Low und High für das Intervall gelten, nicht unbedingt für einen einzelnen Balken. Beachten Sie, dass wir es in der 0 - 1 Bereich, um es einfacher zu normalisieren, um unsere NNs Bereich (das ist wieder, 0-1) wollen. Stocksnn. tsc, part 3 Als nächstes müssen wir eine Lag-Datei erstellen. Verwenden Sie Lags gleich 1, 2. 9 (Details zu Dateifunktionen finden Sie im SLANG-Referenzhandbuch). Beachten Sie, dass das Cortexs NN-Dialogfeld einfache Verzögerungen automatisch erzeugen kann (Sie können die Schaltfläche "Verzögerung generieren" verwenden). Aber später in diesem Text, werden wir mit komplexen Verzögerungen arbeiten (das heißt, sie sind nicht 1, 2, 3. aber 1, 3, 64. was auch immer), so müssen wir den Code, der diese Aufgabe umgehen kann, zu schaffen Eine flexiblere Weise. Stocksnn. tsc, Teil 4 Mit der Lag-Datei sind wir bereit, unser erstes neuronales Netzwerk zu erstellen. Diese Funktion nimmt viele Parameter, also seien Sie vorsichtig. Allerdings ist der Code wirklich einfach. By the way, die meisten dieser Code kann entfernt werden, wenn Sie denken, Sie können Zahlen verarbeiten, anstatt sinnvolle Namen in Ihrem Code, aber das wäre eine sehr schlechte Kodierung Praxis sein. Stocksnn. tsc, Teil 5 Nachdem wir ein neuronales Netzwerk und die verzögerte Datei mit Daten haben, müssen wir das Netzwerk lehren. Die Lag-Datei (msftind. lgg) hat 1074 Datensätze, daher ist es sinnvoll, 800 als Lern-Set zu verwenden und die verbleibenden 274 als Test-Set. Sie können natürlich eine Netzwerkdatei öffnen und auf die Schaltfläche Ausführen auf der Registerkarte Lernen klicken. Aber da dies eine Einführung in die erweiterte Cortex Neural Networks Software-Programmierung ist, können wir verwenden SLANG builtin Skriptsprache statt. Der folgende Code bringt den modalen Dialog mit den Ann NN-Einstellungen auf. Beachten Sie, dass, wenn Sie ein Privileg haben möchten, auf die Schaltfläche Ausführen zu klicken, Sie das stocksnn. tsc ändern müssen, Teil 6 Das bStartLearning kann 0 sein. In diesem Fall wartet der Dialog auf Ihre Eingabe oder 1, dann auf das Lernen Wird aytomatisch beginnen. Das bResumeScript, wenn gleich 1, wird das Skript wieder aufnehmen, wenn Sie den Dialog schließen, indem Sie auf die Schaltfläche OK klicken. Das bReset wird verwendet, um das Netzwerk zurückzusetzen, bevor das Lernen beginnt. Führen Sie das Skript aus, und warten Sie, bis der Epoch-Zähler 1000 überschreitet, und klicken Sie dann auf Beenden. Klicken Sie auf Apply (Übernehmen). Dies führt den gesamten Datensatz (sowohl Lernen und Testen) über die NN, und erstellen Sie die. APL-Datei, die sowohl die ursprüngliche Input-Output und die NN-generierte Vorhersage, so können Sie leicht darstellen und gegeneinander kompatibel . Gehen Sie auf die Registerkarte Ausgabe, wählen Sie die Datei msftind. apl aus, klicken Sie auf Datei durchsuchen, markieren Sie Felder und wählen Sie dann das Kontrollkästchen Nein in der linken Liste aus, und halten Sie die STRG-Taste gedrückt, während Sie mit der Maus auswählen Rechten Listenfeld. Klicken Sie auf Diagramm, um zu sehen, wie gut unsere Vorhersage ist. Gut. Es ist mehr oder weniger gut, von dem, was wir sagen können, indem wir es betrachten. Trotzdem nichts Außergewöhnliches. Dies war nur ein Beispiel dafür, was Sie mit SLANG Scripting tun können, und wie Sie Cortexs Routine-Aufgaben zu automatisieren. Allerdings haben wir bis jetzt nichts von Hand gemacht. Gut. Fast nichts, denn wenn Sie eine benutzerdefinierte Lag-Datei erstellen wollen, mit, sagen wir, Clv-100, Clv-50, Clv-25. Spalten, dann müssen Sie SLANG (oder Excel.) Verwenden, da Sie nicht in Cortex ohne Skripting tun können. FOREX Handelsstrategie: was zu optimieren Hier ist unser nächstes Problem. Brauchen wir eine gutaussehende Vorhersage, oder brauchen wir die, die wir verwenden können, um mit Gewinn zu handeln? Die Frage scheint seltsam, aber nur darüber nachdenken für einen Moment. Lets sagen, wir haben eine sehr gute 1-Stunden-Vorhersage. 95 genau. Dennoch, wie weit kann der Preis in einer Stunde gehen Nicht zu weit, ich habe Angst. Vergleichen Sie es mit der Situation, wenn Sie eine ziemlich ungenaue 10-Stunden-Vorhersage haben. Wird es besser sein, diese Frage zu beantworten, müssen wir tatsächlich handeln, wird ein einfacher Vergleich der mittleren Fehler, die von den beiden NNs wird nicht helfen. Der zweite Teil (des gleichen Problems) liegt in der Art, wie wir eine gute Vorhersage definieren. Nehmen wir an, wir haben ein Netzwerk, das die Vorhersage erzeugt, die genau 75 ist. Vergleichen Sie es mit dem NN, das 100 genaue Vorhersage produziert. Der letzte ist besser. Nun, DIVIDE die Ausgabe (Vorhersage) der 100 genaue NN von 10. Wir haben ein sehr ungenaues Netzwerk, da sein Signal nicht in der Nähe des Signals, das wir als eine gewünschte Ausgabe verwendet. Und doch kann es genauso verwendet werden, wie wir 100 genaues NN verwendet haben, alles, was wir tun müssen, ist, es zu multiplizieren, um 10 Siehe, die NN wird durch Abstimmung der mittleren quadratischen Fehler, und nicht die Korrelation, also zumindest in Theorie, eine bessere NN kann zeigen, schlechte Ergebnisse, wenn für die tatsächliche Börse / Forex Trading verwendet. Um dieses Problem zu lösen, müssen wir unsere NNs mit dem Handel testen und die Ergebnisse dieses Handels (Gewinn und Drawdowns) verwenden, um zu entscheiden, ob diese NN besser ist als die andere. Machen wir das. Lets erstellen Sie ein Programm, das verwendet werden, um Feinabstimmung NN, und dieses Mal, durch Feinabstimmung, werden wir handeln Ergebnisse bedeuten. Neural Network Trading: Wenige kurze Notizen Zunächst einmal, in unserem Beispiel oben, wird das automatische Lernen nie aufhören, weil wir keine Stop-Kriterien angegeben haben. Im Dialog oder in der CREATENN-Funktion können Sie die min. (Wenn das NN es erreicht, stoppt es und wenn bResumeScript auf 1 gesetzt ist, wird der Dialog geschlossen und das Skript wird fortgesetzt). Auch yo kann die maximale Anzahl von Epochen, oder beides. Ich verwende es nicht im Beispiel unten, zumindest nicht immer, denn ich plane das Lernen zu beobachten und auf STOP zu klicken, wenn ich denke, dass die NN bereit ist. Wenn Sie es im vollautomatischen Modus tun möchten, achten Sie auf diese Parameter. Zweite. Eine der Möglichkeiten, um ein Netzwerk kleiner, schneller und genauer zu machen, ist mit dem kleinen Netzwerk beginnen, und erhöhen Sie die Größe, Neuron von Neuron. Die Anzahl der Eingangsneuronen wird durch die Anzahl der Eingangsdatenspalten bestimmt (aber wir können sie auch variieren), und die Anzahl der Ausgangsneuronen sollte gleich der Anzahl der Ausgangsdatenspalten sein (normalerweise eine, aber nicht notwendigerweise ). Das bedeutet, dass wir die Anzahl der Neuronen in den ausgeblendeten Layern optimieren müssen. Auch, wie ich schon erwähnt, wissen wir nicht wirklich, welche Daten zu verwenden. Will Clv-256 (15 Tage verzögert) erhöhen die Genauigkeit unserer Vorhersage Brauchen wir Clv-256 Wird es besser sein, beide von ihnen in der gleichen NN verwenden, oder wird das Hinzufügen Clv-256 Ruine unsere Leistung Mit verschachtelten Zyklen zu versuchen, verschiedene Input-Parameter können Sie: Erstellen Sie die NN, so wie wir es für die Bestandsdaten (lassen Sie mich wiederholen, für die NN gibt es keinen Unterschied zwischen Aktien und FOREX, es ist nur passiert, dass ich paar hochwertige Dateien für Dateien haben FOREX, die ich verarbeiten möchte, beim Schreiben dieses Textes). Versuchen Sie verschiedene Kombinationen von Verzögerungen. Versuchen Sie verschiedene Anzahl von Neuronen in der ausgeblendeten Ebene. . Und verschiedene Kombinationen von verschiedenen Indikatoren. . und so weiter. Jedoch wenn Sie alle möglichen Kombinationen aller möglichen Parameter versuchen, erhalten Sie NIE Ihre Resultate, egal wie schnell Ihr Computer ist. Im folgenden werden wir einige Tricks verwenden, um Berechnungen auf ein Minimum zu reduzieren. Übrigens kann es scheinen, dass wenn Sie von einem verborgenen Neuron beginnen, dann erhöhen Sie es auf 2, 3 und so weiter, und an einem gewissen Punkt der Fehler (Qualität der Vorhersage) oder der Gewinn (wenn Sie die NN durch testen Handel mit ihm) beginnt zu gehen, dann haben Sie Ihren Gewinner. Leider kann ich nicht beweisen, dass es nach dem ersten Auftritt keinen zweiten geben kann. Es bedeutet, dass der Fehler wie 100, 30, 20, 40, 50 gehen kann (es war nur auf seinem Minimum, rechts) und dann 30, 20, 10, 15. (das zweite Minimum). Wir müssen nur alle vernünftigen Zahlen testen. Dritte. Optimierung ist ein zweischneidiges Schwert. Wenn Sie Ihren Code zu optimieren, funktioniert es möglicherweise nicht außerhalb der Daten, die Sie zur Feinabstimmung verwendet. Ich werde mein Bestes tun, um diese Falle zu vermeiden. Wenn Sie weitere Optimierungen an Ihrem Code oder NN vornehmen möchten, rate ich Ihnen, eine Recherche im Internet durchzuführen, um mehr über versteckte Probleme dieses Ansatzes zu erfahren. Ich werde auch auf die Glätte der Profitkurve achten. The profit that looks like 0, -500, 1000, -100, 10000 may be great, but the profit 0, 100, 200, 300, 400. is better, as it is less risky. We may talk about it later. Finally, for this example we are going to use FOREX, rather than stock prices. From the point of view of the NN there is no difference, and from my point - Forex is much more fun to trade. If you prefer stocks, the code can easily be modified. A FOREX Trading Strategy to play with First of all, lets create a prototype of our code, one that can easily be optimized in future. It is going to be a trading system, that uses a Neural Network to trade and produces a chart (profit against trade number). It will also calculate drawdown, as a measure of robustness of our trading system. forexnn01.tsc, part 1 The main difference here is that we use functions, instead of placing all the code in the main block of the program. This way it is much easier to manage. Second, we have a TestNet function. I am using a very simple algorithm of trading. The CLV indicator is confined to 0 - 1 interval (our version of CLV is), so when the indicator crosses up the dBuyLevel (see code above), I am buying, when it is crossing down the dSellLevel, I am selling. Obviously, it is not the best trading strategy, but it will do for our purpose (just for now). If you want to improve it, here are some pointers. First, you may want to have a system, that is not ALWAYS in the market. Second, you may want to use more than one indicator as inputs, and maybe, more than one NN, so that the trading decision is made based on few predicted indicators. We will add some improvements to the trading algorithm later. We use some standard assumptions of the FOREX trading: spread is 5 points, leverade is 100, min. lot is 100 (mini-FOREX). Lets take a look at our trading system. Once again, it is an oversimplified one. An important note: the TestNn() is called last, and it has access to all variables that were created to that point. So if you see a variable that I am using, without initializing it, it probably means that it was initialized in NewNn(), TeachNn() or some other function that was called prior to TestNn(). To make things easier, comments are placed in the code. forexnn01.tsc, part 2 Few words about the drawdown. There are few ways of calculating it, and we are using what I consider the most honest. The drawdown is a measure of instability of our system. What is a chance, that it will loose money Lets say the initial amount is 1000. If the profit goes 100, 200, 300, 400. the drawdown is 0. If it goes 100, 200, 100. then the drawdown is 0.1 (10), as we have just lost an amount, equal to 1/10 of the initial deposit (from 1200 to 1100). I would strongly advice against using trading systems with large drawdowns. Also, here I use a drawdown, that is to be used with variable lot size. However, in the actual samples, that come with the eBook, you will see another version: As you can see, here we always use 1000 (the initial amount) to calculate the drawdown. The reason is simple: we always use the same lot size (no money management yet), so there is no difference, how much money we have already accumulated on our account, an average profit should be constant. The worse possible scenario in this case looks like this: from the very beginning (1000 on account) we are loosing money. If we use 1000 to calculate the drawdown, we will get the worse drawdown. This will help us not to trick ourselves. For example, say, we traded for some time, and we have 10,000 on our account. Then we loose some money, and we now have 8,000. Then we have recovered, and got 12,000. Good trading system Probably not. Lets repeat the logic again, as it is very important (and it will become even more important, when we start doing money management). We trade using fixed size lots. So, statistically, there is no guarantee, that the maximum loss will not happen at the very beginning, when we only have 1000. And if it happens, we will have -1000 (10,000 - 8,000), so the trading system is probably too risky. When we talk about the money management (probably, not in this text), we will have to use different approach to drawdown calculation. Note, that in this trading system, I am using the worse possible scenario: I am buying using High and selling, using Low. Many testers do not follow these rules, and create trading systems, that work fine on historical data. But in the real life, these trading systems have very poor performance. Why Take a look at the price bar. It has Open, High, Low and Close. Do you know, how the price was moving inside the bar No. So, lets say, your trading system generated a buy signal, at the bottom of the price bar (if dLow Note that I am using dLotSize equal 0.1 lot (100). Obviously, in the real trading, you will benefit greatly, if the lot size is calculated depending on the money you have, something like: forexnn01.tsc, part 3 However, we are doing testing here, not trading. And for testing, we need, among other things, to see how smooth the profit curve is. This is much easier to do if the lot size is the same (in ideal situation, for dLotSize 100 we will get a straight line, with some positive slope, while in case of the adjustable lot size we will get an exponent, that is much harder to analyze). Later in this text, we will apply money management rules to our trading system, but not yet. After we are done with the last part of our testing function, lets walk through the rest of the code. The following function creates a CLV indicator. It takes the interval as a parameter, which means that we can call it many times, during the optimization, passing different numbers. Note, that I am using the NN that works in the 0 - 1 interval. The data can be normalized, of course, but I chose to divide the indicator by 2 and to add 0.5, so that it is in 0 - 1 range. forexnn01.tsc, part 4 To make lag file, we can use the CREATELAGFILE function. Alternatively, we can do it by explicitly providing all the necessary code. In this case, we have more control, and we are going to need it, if we begin varying number of lagged columns and so on. forexnn01.tsc, part 5 The nRemoveFirst parameter is important. Many functions, like indicators, moving averages, lag generators, for that matter, do not work well within the first few records of the dataset. Lets say we have MA(14) - what will it place in the records 1 - 13 So we choose to simply remove the first few (unreliable) records. For the NewNn, as well as for all functions of this program, we need to pass as parameters only what can be changed during optimization process. For example, there is no need to pass a skip before parameter, as it is always the same. forexnn01.tsc, part 6 The TeachNn function simply brings up the NN dialog. forexnn01.tsc, part 7 Finally, we need a charting function. It is not mandatory, but it is always a good idea to see what our profit line looks like. The following code uses the XML to produce a chart, so it is a good idea to read the tutorial. Alternatively, you can draw the chart, rather than saving it in a file. To do it, use one of the samples, that are in the samples/scripts directory. Finally, you can modify the code, to produce HTML, rather than XML. HTML is easier to learn, but the code itself will be a bit less readable. forexnn01.tsc, part 8 Compile and Run the script. Gut. As expected, using 7 hours as an interval for the CLV produced very poor results: FOREX Trading Strategies and Optimization The reason for the poor results is quite obvious: we used the Interval, Stop Loss, buy and sell levels and other parameters, that were purely random - we just picked first that came in mind What if we try few combinations FOREX Trading Signals: What to optimize First of all, by overoptimizing the buy and sell levels, we can ruin our future performance. However we still can tune them, especially, if the performance is close for close values of buy and sell limits. For example, if we have -10 profit at buy limit equal 0.3, and 1000 profit when it equals 0.35, then there is probably a lucky coincidence, and we should not use 0.35 for our trading system, as in future it will probably not happen again. If, instead, we have -10 and 10 (instead of 1000), it may be safer to use. Generally, our trading system should be built for WORSE possible scenario, as if during the real trading the performance will be better, then during the test, we will survive, but not the other way around. We can vary the value for the indicator interval, provided we have enough trades, so that we can be confident, in terms of statistics, in the performance of a system. We certainly can vary the number of neurons, I dont think it can be overoptimized easily. We can vary number of inputs and lags for inputs. It is possible to overoptimize this, but it is not very likely to happen. And, of course, we can try different indicators. Accurate FOREX Signals: How to optimize As have already been mentioned, if we start trying all possible combinations, it will take forever. So we are going to cheat. We will create pre-defined sets of parameters, that we think are reasonable, and pass them to the program. To make as few calculations as possible, note, that Clv-1 and Clv-2 are, probably, important, but what about Clv-128 And - if we already have Clv-128, do we need Clv-129 Probably, not. So we are going to have something like Clv-1, Clv-2, Clv-4, Clv-8. Clv-128 with just few variations, which will make our calculation time thousands times shorter. FOREX Professional System Trading: Can it work at all What is it exactly we want to predict Until this point we have used 1 hour chart for EURUSD, and we were predicting the next bars CLV. Will the CLV2 be better What about CLV3 Also, especially considering the poor performance of our first trading system, it would be nice to know, that - at least in the ideal world, the goal (profitable trading) can be achieved. To answer these questions, lets create a simple testing program. We assume, that our prediction is 100 accurate, and, based on this assumption, we will use CLVN, not the NN predicted one. Thats right - we are going to take data from the future, and to use them instead of the NN prediction. This approach wouldnt work in the real life, of course, but at leats, it will give us some ideas of what to expect. When looking at the results, please keep in mind, that we are not using any advanced money management, our lot size is set to a minimum 100. If you use variable lot sizes, results will be dramatically different. But even at a lot size set to 0.1 we can see (below) that getting the information from the future is an ultimate traders holly graal. forexnn02.tsc, part 1 You are already familiar with this code, it was used in FOREXNN01.TSC. It handles data loading. The only difference is in the part that obtains the list of files in the images directory and deletes all files with the. PNG extention. The reason for this code is simple: during our tests we are going to create many - may be, thousands - image files. We dont want them to hung around after we are done. So at the beginning of the script we are deleting images, created by other scripts. forexnn02.tsc, part 2 Just a few comments. We do not want to try all possible values for, for example, CLV interval. Instead, we can create an array, that contains only values we want to test. Then (see below) we will walk through this array. Stop losses are important part of any trading strategy, so I have decided to vary them as well. It is a dangerous idea, however, as it is easy to overoptimize the system. I am planning to test different values for buy and sell levels, but it will be done in cycle, without using arrays. Unlike in our previous example, we want to have a large XML file, containing many images. To do it, I have moved the code, that is forming the XML header and footer outside of the Chart function. Read one of the online XML tutorials for details. Note, that I am using 0 as the first lag, which means, that first I am testing the indicator (CLV) that was not shifted from the future. Just to get an idea, how good out trading system would be without NN (horrible, is the right word. It is loosing all the money). Cortex uses the Internet Explorer control to display XML pages. When pages grow large, it takes a lot of memory. If your computer cannot handle it, consider creating multiple XML or HTML pages, instead. In the case of forexnn02, it should not be a problem, as the page is relatively short. Alternatively (that is what I am doing in scripts later in this text), create XML file, but do not open it from Cortex. Open them using Internet Explorer instead - unlike IE control, the Internet Explorer does not have the memory problem. Now the code that is trying different combinations of parameters. forexnn02.tsc, part 3 Here, we are using nested cycles. In every cycle, we are assidning some variable (for example, nInterval for the outer cycle). This way the cycle will assign values of all elements of a corresponding array, one in a time. Then WITHIN it, the inner cycle is used, and so on, so that all combinations of all array elements are tested. In the innermost cycle, I am calling the Test() function, to test trade, and Chart() to add a new picture to a list of images saved on disk. Note, that this Chart() does not show any images, until all cycles are completed. The Test() and CreateClv() functions are almost the same as in the previous example. The only real difference is due to the fact that it is called more then once. To do it, I am calling ARRAYREMOVE to cleanup arrays. Also, notice, that we are only creating charts for the combinations of parameters, that produce trading system with positive profit. Otherwise, we call continue, to skip the Chart() function. Finally, we have Take Profit now, so our trading system can be a bit more flexible. forexnn02.tsc, part 4 The Chart() function was broken into two pieces. The header and the footer should be written to the XML file only once, so they were moved to the main part of the program. Also, I am using the counter, to save files under the different names. The information about parameters is written to the header of an image, so we can easily see which one it is. Finally, images are only saved for winning configurations, meaning the balance at the end should be more, then at the beginning. forexnn02.tsc, part 5 Run the program (it will take some time to complete). You will end up with a large XML page with images, one for each winning configuration. Some of the results are great, however, as we used data from the future, this system will not work in the real life. Actually, if you look at the Test() function, you will notice, that the cycle stops before we reach the last element of arrClose: for(nBar nRemoveFirst 1 nBar THIS IS C, just an example. As you can see, the code is really simple. Now lets do the same using the SLANG script. As in examples before, we will keep the overall structure of the code, so that this example looks familiar. The only difference is that instead of using the built-in APPLYNN function, we call the function of our own. The code that we do not use (such as cycles) is commented, but not removed. Note, that the logic behind it was discussed in Neural Networks and Stock / Forex Trading article already. Briefly, the output of this script is formated to be compatible with the MQL, MetaTraders scripting engine. MetaTrader is a trading platform we use, if you want something different, like TradeStation, for example, you will have to alter the code to comply to its syntax. Then, in the following chapters, we are going to insert this code in the MetaTraders indicator, and to use it to trade. Porting script to trading platform The next step is not really required, but it is something, that may be useful. We are going to create a version of a tsc file (one above), but this time, we will use SLANG (Cortex scripting language) to emulate APPLYNN function. The reason is, in the next chapter we are going to port it to the scripting language of a MetaTrader trading platform, so it is a good idea to make sure everything works. After we run this function, we discover, that the result it produces is the same, as the forexnn05a produced, which means the code works fine. Note, that there is a difference at the beginning of the charts, as our NN does not try to process the data at the beginning (where lag is incomplete), while the built-in NN does not know about this problem. Of course, it doesnt affect the result, as the beginning of the chart is ignored by using the nRemoveFirst parameter in our script (set to 200, which is guaranteed to be larger, then our lag). Using third-party trading platform We have the NN that (more or less) can be used. We have the script, implementing this NN without calls to the Cortex-specific NN functions. Now we are going to port it to the trading platform that can be used for the real trading, which means it can contact brocker, place orders and earn (or loose) money. As a trading platform, I am going to use MetaTrader Disclaimer: I am not related to MetaQuotes in any way. I do not work for them, I am not their affiliate and so on. I use MetaTrader, ONLY because I like it. I find this program user-friendly, flexible and powerful, and not a monster. Also, it is free (compare to other packages of this class). The only (minor) problem is that it is not always easy to find the dealer using MT in your area. Then, when you do a research, you may find couple of brockers, with screenshots on their web sites, that look suspiciously familiar. Yes, they use MetaTrader, but they dont call it MetaTrader I have asked for clarification at the companys forum, and they have told me, that they dont reveal brockers using their services. Very strange. One of the brockers that is not hiding the fact they use MT, is Alpari. They will allow you to open a Demo account, so that you can trade in a real time, but without risking your money. Warning I am not going to recommeng services of Alpari. Once again, I am not being paid for that. Try their Demo account, and use your own judgement. Or you can start your own research at Internet forums. Finally, if you do not like the MT, you can probably follow the example below using TS, MS or some other trading platform. This is just an example. Our MT-based trading system will include two files, the indicator and an expert. This is the way they call it in MQL (scripting language of MT), and I am going to follow this naming convention. The indicator implements the neural network and draws a chart. An expert takes these data and does trading. As MetaTrader has a strategy tester, we will be able to test our strategy, to see how good it is. I will assume, that you are familiar with MQL programming, it is quite close to SLANG and tutorials can be found both at MetaQuotes and Alpari. Finally, I am using the code structure, that is borrowed from MetaQuotes forum, permission to use it the author of the corresponding posts had granted me permission to use fragments of his code. Also, as some of our MetaTrader code is the same for all experts and indicators, we moved it to a separate library file. MetaTraders libraries are nothing but includable files. This library takes care of synhronization, when two or more expert are trying to run in the same time, as well as of few other things. If you use MetaTrader, it will help you to create robust experts, in any case, the MQL language is easy to understand. mylib. mql, a helper library The code should look familiar, all I did was re-writing it, using slightly different language syntax of MQL. This indicator has two buffers, and draws two lines, one for the original NOC, and one for the NN-predicted NOC. For trading, you dont have to draw both indicator lines, of course (see MQL tutorials to learn how to do it), but I have decided to show them together, so you can compare. Another difference, that you should know about, is the way MT performs testing. It may, in some cases, be more accurate, then one we did (we did the worse case scenario). Of course, you can always to change the SLANG script from the examples above, to implement any logic you want. The result of our testing in MT is a bit better, then in Cortex, due to all these reasons. Keep in mind, that MT calculates the DD in a different way. I still think, that my way is better. In should be especially noted, that no additional optimization had been performed using MetaTraders optimizer. We have just plugged our MTS (mechanical trading system) in, and it worked as expected. Das ist es. You can now create Cortex Neural Network, optimize it to do trading, and to port it to the trading platform of your choice. Download Cortex Order Cortex View Price List Visibility is very important for this site. If you like it please link to this URL


No comments:

Post a Comment