Monday 18 September 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 na Anfangsablagerung 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 (Gewinnt) 2 (50,00) Lange Positionen (gewonnen) 63 (44,44) Profit Trades (insgesamt) 29 (44,62) Verlust Trades (von insgesamt) 36 (55,38) Größter Gewinnhandel 802,00 Verlusthandel -204,90 Durchschnittlicher Gewinnhandel 233,06 Verlusthandel - 129.44 Maximale Konsekutivgewinne 6 (1330.35) Konsekutive Verluste (Geldverlust) 5 (-628.25) Maximaler Konsekutivgewinn (Anzahl der Gewinne) 1330.35 (6) Konsekutiver Verlust (Anzahl der Verluste) -652.10 (4) Durchschnitt Nacheinander gewinnt 2 aufeinanderfolgende Verluste 2 Generell (ich verwendet verschiedene Datumsbereich) - das gleiche wie in Artikel versprochen. Wow, das war lang:) SnowCron 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-Programmierung 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 für ein 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 lehrten 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" auf "Schließen" setzen und diesen Wert verwenden, um "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, so dass es sinnvoll ist, 800 als Lern-Set und die restlichen 274 als Test-Set verwenden. 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 genaue 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 können schlechte Ergebnisse zeigen, wenn für die tatsächliche Aktien-Forex-Handel 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. Der Gewinn, der wie 0, -500, 1000, -100, 10000 aussieht, kann groß sein, aber der Profit 0, 100, 200, 300, 400. ist besser, da es weniger riskant ist. Wir können später darüber reden. Schließlich, für dieses Beispiel werden wir FOREX verwenden, anstatt Aktienkurse. Aus der Sicht der NN gibt es keinen Unterschied, und von meinem Punkt - Forex ist viel mehr Spaß zu handeln. Wenn Sie Aktien bevorzugen, kann der Code einfach geändert werden. Eine FOREX-Handelsstrategie zum Spielen Zunächst einmal können wir einen Prototyp unseres Codes erstellen, der in Zukunft einfach optimiert werden kann. Es wird ein Handelssystem, das ein Neuronales Netzwerk zu handeln und produziert ein Diagramm (Gewinn gegen Handels-Nummer). Es wird auch kalkulieren Drawdown, als Maß für die Robustheit unseres Handelssystems. Forexnn01.tsc, Teil 1 Der Hauptunterschied hier ist, dass wir Funktionen verwenden, anstatt den ganzen Code in den Hauptblock des Programms zu legen. Auf diese Weise ist es viel einfacher zu verwalten. Zweitens haben wir eine TestNet-Funktion. Ich bin mit einem sehr einfachen Algorithmus des Handels. Die CLV-Anzeige ist auf 0 - 1 Intervall beschränkt (unsere Version von CLV ist), also wenn der Indikator den dBuyLevel kreuzt (siehe Code oben), kaufe ich, wenn er den dSellLevel überquert, den ich verkaufe. Offensichtlich ist es nicht die beste Handelsstrategie, aber es wird für unseren Zweck (nur für jetzt) ​​zu tun. Wenn Sie es verbessern wollen, hier sind einige Hinweise. Zuerst möchten Sie vielleicht ein System haben, das nicht IMMER auf dem Markt ist. Zweitens können Sie mehr als ein Kennzeichen als Eingaben und vielleicht mehr als ein NN verwenden, damit die Handelsentscheidung auf der Basis von wenigen vorhergesagten Indikatoren erfolgt. Wir werden einige Verbesserungen des Handelsalgorithmus später hinzufügen. Wir verwenden einige Standardannahmen des FOREX-Handels: Spread ist 5 Punkte, Hebelade ist 100, min. Los ist 100 (Mini-FOREX). Werfen wir einen Blick auf unser Handelssystem. Wieder einmal ist es ein überdimensionaler. Ein wichtiger Hinweis: Der TestNn () wird zuletzt aufgerufen und hat Zugriff auf alle Variablen, die zu diesem Zeitpunkt erstellt wurden. Wenn Sie also eine Variable sehen, die ich verwende, ohne sie zu initialisieren, bedeutet das wahrscheinlich, dass sie in NewNn (), TeachNn () oder einer anderen Funktion initialisiert wurde, die vor TestNn () aufgerufen wurde. Um die Dinge zu erleichtern, werden Kommentare in den Code platziert. Forexnn01.tsc, Teil 2 Wenige Worte zum Drawdown. Es gibt wenige Weisen, es zu berechnen, und wir verwenden, was ich die ehrlichste betrachte. Der Drawdown ist ein Maß für die Instabilität unseres Systems. Was ist eine Chance, dass es Geld verlieren lets sagen, dass der anfängliche Betrag 1000 ist. Wenn der Gewinn 100, 200, 300, 400 geht, ist der Drawdown 0. Wenn es 100, 200, 100. dann geht, ist der Drawdown 0.1 ( 10), da wir gerade einen Betrag von 110 der ursprünglichen Einzahlung (von 1200 bis 1100) verloren haben. Ich würde stark Ratschläge gegen den Einsatz von Handelssystemen mit großen Drawdowns. Auch hier nutze ich einen Drawdown, der mit variabler Losgröße verwendet werden soll. Jedoch in den tatsächlichen Proben, die mit dem eBook kommen, sehen Sie eine andere Version: Wie Sie sehen können, hier verwenden wir immer 1000 (der Anfangsbetrag), um den Drawdown zu berechnen. Der Grund ist einfach: Wir verwenden immer die gleiche Losgröße (kein Geldmanagement noch), so gibt es keinen Unterschied, wie viel Geld wir bereits auf unserem Konto angesammelt haben, sollte ein durchschnittlicher Gewinn konstant sein. Das schlimmste Szenario in diesem Fall sieht so aus: Von Anfang an (1000 auf Rechnung) verlieren wir Geld. Wenn wir 1000 verwenden, um den Drawdown zu berechnen, erhalten wir den schlechteren Drawdown. Das wird uns helfen, uns nicht zu betrügen. Zum Beispiel sagen wir, wir handelten für einige Zeit, und wir haben 10.000 auf unserem Konto. Dann verlieren wir etwas Geld, und wir haben jetzt 8.000. Dann haben wir uns erholt und 12.000. Gutes Handelssystem Wahrscheinlich nicht. Lets wiederholen Sie die Logik wieder, da es sehr wichtig ist (und es wird noch wichtiger, wenn wir mit Money Management beginnen). Wir handeln mit festen Größe Lose. Also, statistisch gesehen, gibt es keine Garantie, dass der maximale Verlust nicht am Anfang geschieht, wenn wir nur 1000 haben. Und wenn es passiert, haben wir -1000 (10.000 - 8.000), so ist das Handelssystem wahrscheinlich auch riskant. Wenn wir über das Geldmanagement reden (vermutlich nicht in diesem Text), müssen wir einen anderen Ansatz zur Drawdown-Berechnung verwenden. Beachten Sie, dass in diesem Handelssystem, ich bin mit dem schlechteren möglichen Szenario: Ich bin mit High-und Verkauf, mit Low kaufen. Viele Tester folgen nicht diesen Regeln und schaffen Handelssysteme, die auf historischen Daten gut funktionieren. Aber im wirklichen Leben haben diese Handelssysteme sehr schlechte Leistung. Warum Werfen Sie einen Blick auf die Preisleiste. Es hat Open, High, Low und Close. Weißt du, wie sich der Preis in der Bar bewegte. Also, sagen wir, dein Handelssystem hat ein Kaufsignal erzeugt, am unteren Rand der Preisleiste (wenn dLow beachte, dass ich dLotSize gleich 0.1 Lot (100) verwende. Offensichtlich, in der realen Handel profitieren Sie stark, wenn die Losgröße wird abhängig von dem Geld, das Sie haben, so etwas wie: forexnn01.tsc, Teil 3 Allerdings tun wir hier testen, nicht zu handeln (DLotSize 100), so erhalten wir eine gerade Linie mit einer positiven Steigung, während wir in der Lage sind, Englisch: eur-lex. europa. eu/LexUriServ/LexUri...0053: EN: HTML In diesem Text werden wir Geldmanagementsysteme auf unser Handelssystem anwenden, aber noch nicht, nachdem wir mit dem letzten Teil unserer Arbeit fertig sind Funktion, lässt Sie durch den Rest des Codes zu gehen. Die folgende Funktion erstellt eine CLV-Indikator. Es nimmt das Intervall als Parameter, das bedeutet, dass wir es viele Male nennen können, während der Optimierung, die Übergabe von verschiedenen Zahlen. Beachten Sie, dass ich die NN, die im 0 - 1-Intervall arbeitet. Die Daten können natürlich normalisiert werden, aber ich entschied mich, den Indikator durch 2 zu teilen und 0,5 hinzuzufügen, so dass er im Bereich von 0 - 1 liegt. Forexnn01.tsc, Teil 4 Um eine Lag-Datei zu erstellen, können wir die CREATELAGFILE-Funktion verwenden. Alternativ können wir es durch explizite Bereitstellung aller erforderlichen Code. In diesem Fall haben wir mehr Kontrolle, und wir werden es brauchen, wenn wir anfangen, die Anzahl der zurückgebliebenen Spalten und so weiter zu ändern. Forexnn01.tsc, part 5 Der Parameter nRemoveFirst ist wichtig. Viele Funktionen, wie Indikatoren, gleitende Durchschnitte, Lag-Generatoren, für diese Angelegenheit, funktionieren nicht gut innerhalb der ersten Datensätze des Datensatzes. Nehmen wir an, wir haben MA (14) - was wird es in den Datensätzen platzieren 1 - 13 Also wählen wir einfach die ersten (unzuverlässigen) Datensätze entfernen. Für die NewNn, sowie für alle Funktionen dieses Programms, müssen wir als Parameter nur übergeben, was während des Optimierungsprozesses geändert werden kann. Beispielsweise besteht keine Notwendigkeit, einen Sprung vor dem Parameter zu übergeben, da er immer derselbe ist. Forexnn01.tsc, Teil 6 Die TeachNn-Funktion bringt einfach das NN-Dialogfeld auf. Forexnn01.tsc, part 7 Schließlich brauchen wir eine Chartfunktion. Es ist nicht zwingend, aber es ist immer eine gute Idee, um zu sehen, wie unsere Gewinnlinie aussieht. Der folgende Code verwendet das XML, um ein Diagramm zu erstellen, also ist es eine gute Idee, das Tutorium zu lesen. Alternativ können Sie das Diagramm zeichnen, anstatt es in einer Datei zu speichern. Verwenden Sie dazu eine der Samples, die sich im Verzeichnis samplesscripts befinden. Schließlich können Sie den Code ändern, um HTML, anstatt XML zu erzeugen. HTML ist leichter zu lernen, aber der Code selbst wird ein bisschen weniger lesbar sein. Forexnn01.tsc, part 8 Kompilieren Sie das Skript und führen Sie es aus. Gut. Wie erwartet zeigte die Verwendung von 7 Stunden als Intervall für den CLV sehr schlechte Ergebnisse: FOREX Handelsstrategien und Optimierung Der Grund für die schlechten Ergebnisse ist ganz offensichtlich: Wir haben die Intervall, Stop Loss, Kauf und Verkauf Ebenen und andere Parameter, die waren Rein zufällig - wir haben uns nur das erste Mal ausgesucht Was passiert, wenn wir versuchen, einige Kombinationen FOREX Trading Signals: Was zu optimieren Vor allem durch Überoptimierung der Kauf-und Verkauf Ebenen können wir unsere zukünftige Performance ruinieren. Allerdings können wir noch tune sie, vor allem, wenn die Performance ist für enge Werte von Kauf-und Verkauf Grenzen zu schließen. Zum Beispiel, wenn wir -10 Gewinn zu kaufen Grenze gleich 0,3 haben, und 1000 Gewinn, wenn es 0,35 entspricht, dann gibt es wahrscheinlich einen glücklichen Zufall, und wir sollten nicht 0,35 für unser Handelssystem, wie in Zukunft wird es wahrscheinlich nicht passieren Nochmals. Wenn stattdessen haben wir -10 und 10 (anstelle von 1000), kann es sicherer zu verwenden. In der Regel sollte unser Trading-System für WORSE mögliche Szenario, als ob während des realen Handels die Leistung besser sein wird, dann während des Tests werden wir überleben, aber nicht umgekehrt. Wir können den Wert für das Indikatorintervall variieren, sofern wir genügend Trades haben, so dass wir in Bezug auf die Statistik in der Performance eines Systems überzeugt sein können. Wir können sicherlich die Anzahl der Neuronen variieren, ich glaube nicht, dass es leicht überoptimiert werden kann. Wir können die Anzahl der Eingänge und Verzögerungen für Eingänge variieren. Es ist möglich, dies zu optimieren, aber es ist nicht sehr wahrscheinlich zu passieren. Und natürlich können wir verschiedene Indikatoren ausprobieren. Genaue FOREX-Signale: Wie zu optimieren Wie bereits erwähnt, wenn wir versuchen, alle möglichen Kombinationen, wird es ewig dauern. Also werden wir betrügen. Wir erstellen vordefinierte Sätze von Parametern, die wir für vernünftig halten und an das Programm weitergeben. Um so wenig Berechnungen wie möglich zu machen, ist es wichtig, dass Clv-1 und Clv-2 wichtig sind, aber was ist mit Clv-128 Und - wenn wir bereits Clv-128 haben, brauchen wir Clv-129 Wahrscheinlich nicht. So werden wir so etwas wie Clv-1, Clv-2, Clv-4, Clv-8 haben. Clv-128 mit nur wenigen Variationen, die unsere Berechnungszeit tausendmal kürzer machen wird. FOREX Professional System Trading: Kann es überhaupt funktionieren Was genau ist es genau wollen wir vorhersagen Bis zu diesem Punkt haben wir 1-Stunden-Chart für EURUSD verwendet, und wir waren die Vorhersage der nächsten Bars CLV. Wird der CLV2 besser sein Was ist mit CLV3 Auch angesichts der schlechten Performance unseres ersten Handelssystems wäre es schön zu wissen, dass - zumindest in der idealen Welt - das Ziel (profitables Trading) erreicht werden kann. Um diese Fragen zu beantworten, können wir ein einfaches Testprogramm erstellen. Wir nehmen an, dass unsere Vorhersage 100 genau ist, und, basierend auf dieser Annahme, werden wir CLVN verwenden, nicht die NN vorhergesagt. Das ist richtig - wir nehmen Daten aus der Zukunft und nutzen sie statt der NN-Vorhersage. Dieser Ansatz würde nicht im wirklichen Leben arbeiten, natürlich, aber bei leats, wird es geben uns einige Ideen, was zu erwarten. Wenn Sie die Ergebnisse betrachten, denken Sie bitte daran, dass wir keine fortgeschrittene Geldverwaltung verwenden, unsere Losgröße ist auf ein Minimum von 100 festgelegt. Wenn Sie variable Losgrößen verwenden, werden die Ergebnisse dramatisch anders sein. Aber selbst bei einer Menge, die auf 0,1 gesetzt ist, können wir (unten) sehen, dass immer die Informationen aus der Zukunft ein ultimatives Trader Holly Graal ist. Forexnn02.tsc, part 1 Sie kennen diesen Code bereits, er wurde in FOREXNN01.TSC verwendet. Es verarbeitet das Laden von Daten. Der einzige Unterschied besteht in dem Teil, der die Liste der Dateien im Bilderverzeichnis erhält und alle Dateien mit der Erweiterung. PNG löscht. Der Grund für diesen Code ist einfach: Während unserer Tests werden wir viele Tausenderbilder erstellen. Wir wollen nicht, dass sie hängen, nachdem wir fertig sind. Also am Anfang des Skripts löschen wir Bilder, die von anderen Skripten erstellt wurden. Forexnn02.tsc, part 2 Nur ein paar Kommentare. Wir wollen nicht alle möglichen Werte für zB CLV-Intervall ausprobieren. Stattdessen können wir ein Array erstellen, das nur Werte enthält, die wir testen möchten. Dann (siehe unten) gehen wir durch dieses Array. Stop-Verluste sind wichtiger Bestandteil jeder Trading-Strategie, so habe ich beschlossen, sie auch zu variieren. Es ist jedoch eine gefährliche Idee, da es leicht ist, das System zu überoptimieren. Ich plane, verschiedene Werte für Kauf - und Verkaufsniveaus zu prüfen, aber es erfolgt im Zyklus, ohne Arrays zu verwenden. Anders als in unserem vorherigen Beispiel wollen wir eine große XML-Datei mit vielen Bildern haben. Um dies zu tun, habe ich den Code verschoben, der den XML-Header und die Fußzeile außerhalb der Diagrammfunktion bildet. Lesen Sie eine der Online-XML-Tutorials für Details. Beachten Sie, dass ich 0 als erste Verzögerung verwende, was bedeutet, dass ich zuerst den Indikator (CLV) teste, der nicht von der Zukunft verschoben wurde. Nur um eine Idee zu bekommen, wie gut Out-Trading-System wäre ohne NN (schrecklich, ist das richtige Wort, es ist das ganze Geld verlieren). Cortex verwendet das Internet Explorer-Steuerelement, um XML-Seiten anzuzeigen. Wenn Seiten groß werden, dauert es eine Menge Speicher. Wenn Ihr Computer nicht damit umgehen kann, sollten Sie stattdessen mehrere XML - oder HTML-Seiten erstellen. Im Fall von forexnn02 sollte es kein Problem sein, da die Seite relativ kurz ist. Alternativ (das ist, was ich tue, in Skripten später in diesem Text), erstellen Sie XML-Datei, aber nicht öffnen Sie es von Cortex. Öffnen Sie sie mit Internet Explorer stattdessen - im Gegensatz zu IE-Steuerelement verfügt der Internet Explorer nicht über das Speicherproblem. Nun ist der Code, der verschiedene Kombinationen von Parametern versucht. Forexnn02.tsc, part 3 Hier verwenden wir verschachtelte Zyklen. In jedem Zyklus sind wir assidning einige Variable (zum Beispiel nInterval für den äußeren Zyklus). Auf diese Weise wird der Zyklus Werte von allen Elementen eines entsprechenden Arrays, eines in einer Zeit zuweisen. Dann wird innerhalb des Inneren der innere Zyklus verwendet, und so weiter, so dass alle Kombinationen aller Arrayelemente getestet werden. Im innersten Zyklus rufe ich die Test () - Funktion auf, um den Handel zu testen, und Chart (), um ein neues Bild zu einer Liste von Bildern hinzuzufügen, die auf der Festplatte gespeichert sind. Beachten Sie, dass dieses Diagramm () keine Bilder zeigt, bis alle Zyklen abgeschlossen sind. Die Funktionen Test () und CreateClv () sind fast dieselben wie im vorherigen Beispiel. Der einzige Unterschied ist, dass es mehr als einmal aufgerufen wird. Um es zu tun, rufe ich ARRAYREMOVE zu reinigen Arrays. Beachten Sie auch, dass wir nur erstellen Diagramme für die Kombination von Parametern, die Handelssystem mit positivem Gewinn zu produzieren. Ansonsten rufen wir fortsetzen, um die Funktion Chart () zu überspringen. Schließlich haben wir Take Profit jetzt, so dass unser Handelssystem ein bisschen flexibler sein kann. Forexnn02.tsc, part 4 Die Funktion Chart () wurde in zwei Teile unterteilt. 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. Sehr eigenartig. 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 URLSnowCron Self-Organizing Maps Using Self-Organizing Map to create Neural Network Trading System. FOREX Technical Analysis with Auto Classification Kohonen Neural Network. Neural Network Trading with Kohonen Neural Network. In this free online tutorial you will find the full cycle of using Cortex built-in Self Organizing Maps (SOM, kohonen neural networks) for Forex trading (or stock trading, the idea is the same). You will learn how to choose inputs for the Self Organizing Maps . and how to decide what to do with the output. You will find an example of a ready to use script that allows to perform optimization of both the Self Organizing Maps (number of neurons) and the trading parameters (stop loss etc.) Finally (the part that is not present in most tutorials), you will learn what to do next. After all, Cortex Neural Networks Software cannot do real time trading, you need to use something like Trade Station, MetaStocks or MetaTrader. How to port the Self Organizing Maps based forex trading strategy from Cortex to your favorite trading platform Do you have to deal with DLLs, ActiveX controls and low-level programming The answer is NO. Cortex comes with the easy to use feature that allows you to easily port the resulting (trained) Self Organizing Maps to the scripting language of your trading platform. No DLLs, DDE, ActiveX or any other low-level solutions - everything is plain and simple. Important note: this is NOT a how to trade tutorial. Instead, it tells you how to use Cortex, but you still need to invent your own trading system. The one we use here is barely a starting point, and shouldnt be used for Forex trading as is. The idea of this text is to teach you to create Self Organizing Maps - based forex trading strategy and to port them to the trading platform of your choice. The example is, however, ovesimplified, and can only be used as the illustration of trading principles. Same way, the MACD trading system, that can be found in many tutorials, is not working well anymore (as markets have changed), but still is a good example of using indicators for mechanical trading. In two words: do your own analysis. Another important note: the tutorial is using examples, lots of them. To make your life easier, I have included them all, not just fragments. However it makes the text much longer. Also, I am going from the very first, clumsy, trading systems, to more advanced, every time explaining what had been improved and why. Be patient, or jump directly to the section you need. Final important note: the code is not something carved in stone, it could change while this text was written. The final versions of script files are included in Cortex Neural Networks Software archive. Clustering Data: Simple test First of all, lets try a straightforward approach - lets feed our Self Organizing Map with sequence of 0 and 1. This should give us two clusters, that is easy to distinguish visually: As we can see, Self Organizing Maps can easily handle this task, creating two clasters: When we plot data and winner neurons, we can see, that the system works well - 0 and 1 are clearly separated. Clustering Map: Visualizing results The approach we used in the previous example is quite clumsy - we plotted numbers of winner neurons. This is not very informative, and if we want to use this information, for example, as an input of neural networks software - not very useful. The reason is - the number of a neuron is within a 0 - size of a matrix range, and Neural Network will have to figure out a complex relation between it and a cluster neuron belongs to. Also, on a chart, it will give us a non-obvious line. In a SOM, we can uniquely identify a neuron by its coordinates (X, Y) and a signal it produces - by adding a Z - coordinate. Also, a color in a computer graphics is usually represented by (Red, Green, Blue) vector, so here is a trick: lets ask our system to produce not the neuron numbers, but the corresponding colors. We use the following formulas in C language: Lets walk through the code, this time, we are going to use a SIN(X) function. As you can see, classifying patterns in SIN(x) is done fine. Also, on a smooth colors chart, it is easy to see, that colors are properly assigned to similar trend parts of a chart. Forex Signals: Using real quotes Now, lets use real quotes and see if our self-organizing map will be able to handle them same way it handled SIN(x). As you can see from the chart, the SOM worked, but. The classification is not very useful. The problem is, as one would expect, in the fact, that the chart (CLOSE quotes for EURUSD) is going up, so the same pattern at the beginning of a chart and at its end is considered (by self-organizing map ) as two completely different patterns. Forex Trading Strategy: Using NOC indicator NOC (Normalize On Condition) indicator was created and used in one of the previous articles to handle the requirement of the NN - it need normalized data to work. We are going to use NOC with self-organizing map to classify trends of the CLOSE quotes. Hinweis. that I personally DO NOT think that NOC is a perfect indicator to be used with SOM. Some kind of a claster indicator, showing money flow between different currencies, will most likely do a much better job. So please, consider this as an example, and build your own trading system. To crash test our system, you can use eurusdh1long. txt quotes file, that is included in the Cortex archive, together with the shorter eurusdh1.txt. When you use it (by replacing the short one in the code), you can see our systems behaviour in the out of sample test, on the data, it never seen. In that test, NOC does not fail, but does not shine either. Also, we use cycles to find nicer parameters. Above is a small fragment of a resulting chart. Note, that it is very hard to say what use can we have for this type of a classification, but a) maybe, FFBP Neural Network can make sence out of it and b) it is just an example. We can also use daily charts. Below is the nearly identical code for MSFT stock price. FOREX Trading Strategy without Kohonen SOM With the chart we got in the chapter above, it is hard to create a forex trading system system. There is a classification, all right. But it does not look like trend up - green, trent down - red. So lets use a FFBP neural network to mak sence out of it. To make it better, lets use both Self-Organizing Map output and NOC as FFBP NN inputs. We are going to use the script from the article about Neural Networks FOREX Trading. that, I assume, you have already read. First, lets run the original, SOM-free, script again and find the optimal set of NN parameters. Here, we can choose a winner. Note, that beating the market is not our goal here, what we want to do, is to take more-or-less working FFBP system and to see, if its performance can be improved by supplying additional inputs from SOM. Trades: 27(Buy: 27, Sell :0) NocInterval: 12, Range: 0.004, Ma: 3 Lag: 2, Neurons: 5 Stop: 0.0200, Tp: 0.0000, Stop increase: 0.600000, Buy: 0.170, Sell: 0.900 Drawdown: 0.299 Profit: 6174.000000 (long: 6174.000000, short: 0.000000) This chart looks good enough. In the next chapter we are going to use Self-Organizing Map output in addition to NOC. Using Kohonen Neural Network and FFBP Neural Network together We are going to remove cycles from the previous example, and to add a Self-Organizing Map to it. The Kohonen SOM was created by som04.tsc, note, that you need to run that script first. So, first of all, run som04.tsc and rename the resulting Self-Organizing Map to som04winner. kh. The following script uses the existing Kohonen SOM and tries to find optimal parameters for FFBP NN that uses its output as an input, in addition to NOC. Trades: 29(Buy: 29, Sell :0) NocInterval: 12, Range: 0.000, Ma: 3 Lag: 2, Neurons: 7 Stop: 0.0200, Tp: 0.0000, Stop increase: 0.500000, Buy: 0.140, Sell: 0.900 Drawdown: 0.557 Profit: 6677.000000 (long: 6677.000000, short: 0.000000) As you can see, at least one chart is better, than it was without SOM, though AGAIN, this is just an example, and for a real trading system, NOC is, most likely, NOT the best choice of input for Kohonen SOM (it is very good for FFBP NN, however). Removing cycles from FFBP Neural Network Trading System Now, lets port our trading system to a real trading platform. After all, Cortex Neural Networks Software cannot do online trading, so we need to use MetaTrader, TradStation or something else. We are going to create a script for MetaTrader expert here, that uses both our FFBP NN and SOM. We do it in two steps. First, we are going to repeat the steps from Neural Networks FOREX trading article, for our winner FFBP. Then we add SOM. To do it, we remove cycles from the som05.tsc code, it leaves us with a code, that uses a single winning NN. Then we add code to this script, to PRINT weights of neurons. We format this output, to make it comply with MetaTraders (or other trading platform, it is up to you) syntax. As the result, we have a large array with NN weights, that we can paste into the expertindicator code of a trading platform of your choice. For now, lets remove all unnecessary cycles from som5.tsc, so that we have the script, that works with a winner NN. As we use existng winning NN, we need to get it somewhere. The Cortex comes with som05winner1.nn (created in som05.tsc and then renamed). Note, that the code still has cycles - just to be as familiar as possible - but these cycles are only done once. Also, some parameters for the Noc and network are hardcoded: som06.tsc, FFBP, no SOM yet Exporting weights of the Neural Networks The next step is to export weights of the Neural Network to the scripting language of a trading platform of our choice. Here we are just repeating the Neural Networks Forex Trading. To do it, we add couple of PRINT statements to the som06.tsc, and it will produce the necessary output. Simply insert the following code in the som06.tsc: Note, that the logic behind it was discussed in Neural Networks Forex Trading article already. Briefly, the output of this script is formated to be compatible with the MQ4, 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. Emulating APPLYNN The next step is not really required, but it is something, that may be useful to find and fix bugs in code. We are going to create a version of som06.tsc, but this time, we will use SLANG (Cortex built-in 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. Porting FFBP Neural Network to trading platform The following code is taken from Neural Networks Forex Trading article. It is a ready to be used pair of indicator and an expert, that uses that indicator. No kohonen neural network code yet. As usual, please keep in mind, that it is just an example, that is not necessarily going to always be profitable. 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 Kohonen Neural Network FFBP Neural Network, no cycles We are done with a forex trading system that uses FFBP networks only. Now we are going to do the same work with a forex trading strategy . that uses FFBP and Kohonen SOM together. First of all, lets take som07.tsc again, and run it, in order to pick the best FFBP network. Note, that the Kohonen clustering map for this script was created earlier (in som04), and stored as som07winer. kh, so we do not have to recreate it. Trades: 52(Buy: 52, Sell :0) NocInterval: 12, Range: 0.004, Ma: 3 Lag: 2, Neurons: 3 Stop: 0.0200, Tp: 0.0000, Stop increase: 0.600000, Buy: 0.170, Sell: 0.900 Drawdown: 0.981 Profit: 6820.000000 (long: 6820.000000, short: 0.000000) Then, lets remove cycles from som07.tsc, to get the script we are going to port: Exporting weights of the Self-Organizing Map Lets add the code to print Neural Network parameters, both for FFBP Neural Network and for self-organizing map . We do it by adding the following to som10.tsc: Emulating APPLYSOM function The next step is to add the code, that emulates apply function, using generic scripting language instead of Cortex-specific calls. As we already have this code for FFBP NN, lets focus on SOM only. Porting Self-Organizing Map forex trading system based to MT The final step is to port our script to MetaTrader, so that it can be used for real trading. We are going to use the same expert as in the FFBP only example above, however, the indicator will contain both FFBP and SOM code. Note, that in addition, mylib. mq4 is used, its code is the same as in FFBP only example. The indicators code was created based on FFBP only example, by adding the SOM code, ported from som12.tsc: Final notes That is it. You can now create Cortex Neural Network Software script, that takes SOM output as its inputs, among other inputs, optimize it to do trading, and to port it to the trading platform of your choice. Note, that this is not your only option - you can use this approach, for example, to create FFBP NN that uses more than one indicator plus another FFBP NN output as its input, and so on. 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