Saturday 18 February 2017

Forex Php Skript

Holen Sie sich Live-Wechselkurse in PHP Ein sehr einfaches PHP-Skript, um fast Live-Wechselkurse von Yahoo Finanzen zu bekommen. I8217m sagen 8220almost8221 so weit wie ich weiß, Yahoo Updates mit einigen kleinen Verzögerung. Am Tag des Schreibens dieses Post, über Skript wird angezeigt: Kurze Erklärung Ich denke, alles ist klar, außer für die URL und ihre Parameter. Werfen wir einen genaueren Blick. In unserem Beispiel Das Einfügen in Ihren Browser gibt eine csv-Datei mit drei Spalten zurück. Aktueller Wechselkurs, Datum und Uhrzeit. Wo: Wenn genaue Zeit nicht, was you8217re suchen und alles, was Sie brauchen, ist nur der Wechselkurs Ihre URL könnte wie folgt aussehen: Ich couldn8217t finden Sie vollständige Liste der Parameter auf Yahoo, aber diese Website scheint es alle bedeckt. Yahoo finanzieren gibt Ihnen nicht nur Zugang zu Wechselkursen, sondern auch Bestandsdaten. Downloading und Parsing Dukascopy-Tick-Daten mit Birts PHP-Skripte Die Dukascopy-Daten sind im Web in seiner Rohform als Dateien, die nur eine Stunde, so wird es offensichtlich, dass Einige Werkzeuge sind notwendig, um herunterzuladen und zu analysieren. Bevor es möglich war, die Daten über eine der anderen Methoden zu erhalten, habe ich eine Reihe von Skripten erstellt, die ich heute noch zum Herunterladen der kostenlosen Tickdaten von Dukascopy verwende. I8217m ein Fan der PHP Einfachheit, so wählte ich, dass die Skripte zu schreiben. They8217re nicht kommerziellen Qualitätscode, aber sie funktionieren. Sie können die PHP-Skript-Archiv von der Tick-Daten-Downloads-Seite. Hier finden Sie 4 Skripte: Ein Skript zum Herunterladen der Dukascopy-Daten, suggestive genannt 8220downloaddukascopydata. php8221. Als eine Höflichkeit für Dukascopy, die gnädig bietet kostenlose Daten, versucht das Skript nicht, Dateien, die bereits auf Ihrer Festplatte zu laden. Allerdings fordert es immer noch fehlende Dateien, so zu vermeiden, betonen ihre Server bitte setzen Sie die Daten in den Währungen Array am Anfang des Skripts bis zum Datum des letzten Downloads they8217re mit dem Standard-Unix-Zeitstempel (Epoche, die im Wesentlichen die ist Anzahl der Sekunden seit 01.01.1970). Wenn Sie einfach von einem regulären Datum zu einem solchen Unix-Zeitstempel konvertieren möchten, können Sie Epoch Converter verwenden. Ein sehr einfach zu bedienendes Online-Tool. Ein Skript für die Verarbeitung der heruntergeladenen Daten, die davon ausgeht, dass es sich im selben Verzeichnis wie das vorherige Skript befindet und dass die Daten dort heruntergeladen wurden (processdukascopydata. php), braucht man einige Parameter, läuft es ohne Beschreibung und Check-Out Das nächste Skript. Ein kleines Shell-Skript, das alle heruntergeladenen Daten in. bat Form für Windows und. sh Form für linux verarbeitet. Windows-Download-amp konvertieren, um CSV-how-to Start, indem Sie die Windows-PHP-Download-Bereich und Abrufen der neuesten Binär-Version als Zip-Datei. Sobald you8217ve getan, dass, entpacken Sie es auf c: php und entpacken Sie auch die Skripts aus dem Skript-Archiv, das Sie in das gleiche Verzeichnis heruntergeladen. Benennen Sie c: phpphp. ini-Entwicklung in c: phpphp. ini um. Wenn Ihr Ordner keine Datei mit dem Namen php. ini-development enthält, verwenden Sie php. ini-dist oder eine andere php. ini-Datei, die Sie finden können. Bearbeiten Sie c: phpphp. ini, suchen Sie nach extensionphpcurl. dll und entfernen Sie das Semikolon vor der Zeile und fügen Sie ein 8220ext8221 vor 8220phpcurl. dll8221, so dass es wie folgt aussieht: extensionextphpcurl. dll Speichern Sie die Datei und beenden Sie. Wenn Sie in einen Zip-Fehler und Ihre PHP-Installation hat eine extphpzip. dll laufen, wenden Sie auch die Methode oben für extensionextphpzip. dll. Gehen Sie auf die 7-Zip-Download-Seite und erhalten Sie die Befehlszeilenversion. Entpacken Sie es und legen Sie 7za. exe in das gleiche Verzeichnis (c: php). Klicken Sie auf start-gtrun und geben Sie cmd ein, dann klicken Sie auf OK (oder alternativ geben Sie cmd ein und drücken Sie Enter in den Windows 7vista 8220search programme und files8221 Feld im Startmenü). Geben Sie cd php im Befehlsfenster ein. Typ php downloaddukascopydata. php Haben Sie einen Kaffee. Haben Sie einen anderen Kaffee. Schlafen gehen. Geh zur Arbeit. Gehen Sie in die Turnhalle. Einen Club besuchen. Warten Sie etwas mehr. Ich scherze nicht, es braucht Ewigkeiten. Sie können den Fortschritt, indem Sie die Währungspaare Verzeichnisse gefüllt zu überprüfen. Wenn Sie irgendwelche seltsamen Fehler erhalten, führen Sie den Prozess erneut, wenn es 8211 fertig 8211 es nur alle Dateien, die im ersten Schritt aufgrund von Netzwerkfehlern verpasst wurden herunterzuladen. Wenn Sie nur einige der verfügbaren Währungspaare herunterladen möchten, können Sie downloaddukascopydata. php bearbeiten und das Array am Anfang der Datei ändern. Sie können die Währungspaar-Download-Reihenfolge ändern oder vollständig entfernen Sie die Paare, die Sie don8217t wollen. Die Nummer neben jedem Paar ist der Unix-Zeitstempel, bei dem der Download gestartet werden soll, wenn Sie zu einem späteren Zeitpunkt starten möchten (die Voreinstellung ist das früheste verfügbare Datum), können Sie den Zeitstempel für das gewählte Datum verwenden. Wenn der Download beendet ist, unter der Annahme, dass Sie die EURUSD-Daten bis zum 01.01.2012 erhalten wollten, werden Sie in EURUSD. csv den Datentyp php processdukascopydata. php EURUSD 200702 201201 EURUSD. csv eingeben. Alternativ können Sie process. bat eingeben, die alle Währungsdaten batchverarbeiten soll. It8217s meistens sicher, den Störungsspam in diesem Schritt zu ignorieren. Hinweis: Wenn Sie process. bat oder process. sh verwenden, müssen Sie möglicherweise die Endtermine in ihnen aktualisieren, um die vollständige Datenreihe zu erhalten Dies sollte sein, wenn alles in Ordnung wäre sollten Sie Ihre CSV-Dateien in der gleichen c: php Ordner und Sie sollten bereit sein, mit dem Vorbereiten Ihrer Tickdaten für Metatrader 4 fortzufahren. Warnung: Stellen Sie sicher, dass Sie genügend Speicherplatz auf Ihrer Festplatte haben. Ab 2012 haben die heruntergeladenen Tick-Dateien über 20 GB und wenn Sie addieren die Größe der resultierten CSV-Dateien werden Sie auch hinter der 100 GB-Marke. Zunächst einmal, beachten Sie bitte, dass meine Website befasst sich mit Tick-Daten-Backtesting, nicht mit dem Import von CSV-Dateien in HST. Das CSV2FXT-Skript, das die CSV-Dateien in Tick-Daten-FXT-Dateien verarbeitet, erzeugt automatisch die korrekten HST-Dateien. Wenn Sie mehr Info über das wünschen, schlage ich vor, eine TDS Studie und das Lesen zu erhalten Vorbereiten Ihrer Tickdaten für Metatrader 4 Hinsichtlich der erhöhten Backtestdauer hatten Sie vermutlich viel weniger Daten in Ihren HST Akten vor dem Import. I8217d auch wetten you8217re Backtesting ein EA mit virtualisiertem Code, that8217s, warum es so lange dauert. It8217ll wahrscheinlich noch länger dauern mit Tick-Daten. Nur um eine Idee zu erhalten, wenn es Ihre EA oder etwas anderes, versuchen Backtesting der MACD EA auf dem gleichen Währungspaar und Zeitrahmen und vergleichen Sie die Dauer. Schließlich werden die Daten im MT4-Datenordner im Verlauf gespeichert. Um dorthin zu gelangen, gehen Sie zu Datei - Öffnen Data Folder. Automated Trading Teil 3: Das 100-Pips-pro-Tag-Robot-Skript Der automatisierte Trading-Kurs wurde endlich fertig Die ersten beiden Teile wurden bereits hier vor einiger Zeit hier gepostet: Die dritte und Letzter Teil enthält zwei Lektionen. Zuerst wird erläutert, wie man maschinelle Lernalgorithmen einsetzt, um profitable Preismodelle für den automatisierten Kurshandel zu ermitteln. Die letzte Lektion ist über die Programmierung eines kommerziellen Handelsroboters mit einigen beeindruckenden Leistungszahlen: - 95 Gewinnrate. - durchschnittlich 100 Pips Gewinn pro Tag - garantiert. - etwa 1000 jährliche Kapitalrendite. - verifiziert von MyFXBook mit 1 Jahr Live-Trading auf einem echten Konto. Der gesamte Code ist enthalten. Die Handelsmethode, die von diesem Roboter-Skript verwendet wird, ist bisher noch nicht nach meinem Wissen veröffentlicht worden. Für das Verständnis der Lektionen youll müssen die ersten beiden Teile des Kurses kennen. Wenn etwas unklar ist, fragen Sie bitte. Ill post die letzten Lektionen hier Schritt für Schritt in den nächsten Tagen. Komisch Member Registriert seit Sep 2012 141 Beiträge Bob: Schnell, schließe die Tür Vielleicht Ive shadowed. Alice: Was ist passiert Bob: Jemand hat mir das ultimative Handelsgeheimnis enthüllt. Alice: Wirklich Bob: Ja. Es ist ein Preis Action Trading-Methode. Ich brauche Sie, um dies sofort zu programmieren. Alice: Preis-Aktion Was ist, dass Bob: Sie verwenden keine Indikatoren. Sie handeln nur, wenn das Preis-Kerzenmuster richtig ist. Sie vergleichen die offene, hohe, niedrige und schließen der letzten Kerze mit dem offenen, hohen, niedrigen und schließen der vorherigen Kerzen - das ist das Muster. Es ist alles, was Sie brauchen. Alice: Hmm. Ive gelesen, daß die Japaner Kerzemuster für den Handel des Reismarktes benutzten. Einige Muster haben lustige Namen wie quotThree Little Bearsquot oder so ähnlich. Aber das war vor 300 Jahren. Bob: Natürlich handelst du heute nicht mit japanischen Reiskerzen, wenn du dein Geld behalten willst. Aber ich kenne einen Mann namens Bert bei McDuck Capital. Er fand einige neue Kerzenmuster, die für den Forex-Markt funktionieren. Er sagte, dass seine wie ein Spielautomat, der immer gewinnt. Das Muster erscheint und Bargeld kommt heraus. Bert bekam einen verrückten Bonus und McDuck ist seitdem Handel Preis Aktion mit seinen Mustern. Alice: Also willst du, dass ich ein Skript schreibe, das nach diesen Mustern sucht und dann ein Handelssignal auslöst. Sollte kein Problem sein. Bob: Nun, da ist ein Problem. Ich weiß nicht, die Muster. Ich weiß nur, dass sie aus drei täglichen Kerzen gemacht sind. Wie sie aussehen ist streng geheim. Bert sagte, er musste mich töten, als er mir die Muster erzählte. McDuck ist sehr ernst in dieser Angelegenheit. Alice: Hmm. Bob: Cant Sie finden die Muster selbst Alice: Wenn ein Mann bei McDuck fand sie, ich vermute, ich kann sie zu finden. Aber warum arbeiten sie überhaupt, ich meine, warum sollte eine Preisbewegung von einem bestimmten Kerzenmuster vorausgehen Bob: Keine Ahnung. Aber diese Methode arbeitete für den japanischen Reismarkt. Vielleicht sind einige große Händler aufwachen am Morgen, vergleichen Sie die Preise von heute, gestern und am Tag zuvor, und dann entscheiden, ob sie kaufen oder verkaufen immer in der gleichen Weise. Alice: Wenn dies ein Muster etabliert, kann ich eine Maschine Lernfunktion anwenden. Es geht durch historische Preise und Kontrollen, die Kerzenmuster in der Regel vor einer Preisbewegung nach oben oder unten. Bob: Wird das teuer sein Alice: Die Suche nach Kerzenmustern Nr. Noch, Im Angst Ill müssen mehr als das letzte Mal aufladen. Bob: Warum ist das Alice: Risikogebühr. Ich könnte getötet, wenn Programmierung dieses Skript. Registriert seit Sep 2012 141 Beiträge Dies ist die erste Version von Alices Skript, das Maschinen Intelligenz für Preis-Action-Trading verwendet. Es kann ein System in Kerzenmustern erkennen und dann die profitabelsten Muster für ein Handelszeichen verwenden. Für dieses Skript benötigen Sie die neueste Zorro Version, 1.10. Sie können es bei zorro-trader herunterladen. Wenn Sie eine ältere Version haben, aktualisieren Sie es, indem Sie das neue unter dem gleichen Download-Link herunterladen und es in demselben Ordner installieren. Wenn Sie die ersten Teile des Kurses gemacht haben, sollten viele Zeilen in diesem Code bereits vertraut sein, aber es gibt auch einige neue Konzepte, vor allem die adviseLong und adviseShort-Funktionen. Gut durchmachen sie im Detail morgen. Kommerzielle Mitglied Registriert September 2012 141 Beiträge Die raten Funktion ist die Maschine Lernalgorithmus. Es sieht wie eine merkwürdige Eingangsbedingung für einen langen Handel aus: if (adviseLong (PATTERN2,0, priceHigh (2), PriceLow (2), priceClose (2), priceHigh (1), priceLow (1), priceSchließen (1), (0), priceLow (0), PreisSchließe (0)) gt 30) enterLong () Alice ruft adviseLong mit dem PATTERN-Verfahren und dem High, Low und Schließen Sie die Preise der letzten 3 Kerzen. Wenn adviseLong einen Wert über 30 zurückgibt, wird ein langer Handel eingegeben. Aber wann dies geschieht Im Training-Modus liefert die adviseLong-Funktion immer 100. So wird immer ein Handel eingegeben. Die Funktion speichert eine Momentaufnahme ihrer Signalparameter - in diesem Fall 12 Signale von den High-, Low - und Close-Preisen der letzten 3 Kerzen - in einer internen Liste. Es wartet dann auf das Ergebnis des Handels und speichert den Gewinn oder Verlust des Handels zusammen mit dem Signal-Snapshot. Somit hat Zorro nach dem Trainingslauf eine lange interne Liste, die alle Signal-Snapshots und ihre entsprechenden Handelsgewinne oder - verluste enthält. Die Signale werden dann in Muster klassifiziert. Alice verwendet die Klassifizierungsmethode PATTERN2. Es teilt die Signale in zwei gleiche Gruppen, jeweils mit 6 Signalen. Die erste Gruppe enthält die Preise der ersten beiden Kerzen der 3-Kerzen-Sequenz: Und die zweite Gruppe enthält die Preise der letzten beiden Kerzen: Beachten Sie, dass die mittlere Kerze mit Offset 1 in beiden Gruppen erscheint. Der Open-Preis wird in den Signalen nicht verwendet, da Währungen 24 Stunden am Tag gehandelt werden, so dass der Close einer Tagesbar normalerweise mit dem Open des nächsten Taktes identisch ist. Die Verwendung des offenen Preises würde Ausreißer und Wochenendmuster hervorheben, was nicht erwünscht ist. Innerhalb jeder Signalgruppe vergleicht Zorro nun jedes Signal mit jedem anderen Signal. Dies erzeugt einen großen Satz von größeren, kleineren oder gleichen Ergebnissen. Dieser Satz von Vergleichsergebnissen klassifiziert ein Muster. Es spielt keine Rolle, ob PriceHigh (2) viel kleiner oder nur etwas kleiner als priceHigh (1) ist - das resultierende Muster ist dasselbe. Die Muster der beiden Gruppen werden nun zu einem einzigen Muster zusammengeklebt. Es enthält alle Informationen über alle Preisvergleiche in der ersten und der zweiten und in der zweiten und der dritten Kerze, aber das Muster enthält keine Informationen darüber, wie die erste Kerze mit dem dritten vergleicht. Bert hatte Bob gesagt, dass sein Bestes für Preishandlung Handel nur benachbarte Kerzen - also die beiden unabhängigen Mustergruppen vergleichen. Wenn Alice nach 4-Kerzen-Mustern gesucht hatte, benutzte der Schuppen drei Gruppen. Nachdem das Muster erstellt wurde, überprüft Zorro, wie oft es in der Liste erscheint, und summiert alle seine Gewinne oder Verluste. Wenn ein Muster häufig und mit einem Gewinn erscheint, gilt es als ein profitables Muster. Zorro entfernt alle unrentablen oder unbedeutenden Muster aus der Liste - Muster, die nicht über eine positive Gewinnsumme oder weniger als 4 Mal erscheinen. Die restlichen Patterns werden in den workshop7EURUSD. rul-Dateien im Data-Ordner gespeichert - eine Datei pro Spaziergang. Eine solche Datei sieht so aus: Wir können sehen, dass jede Zeile in der Liste mit einer seltsamen Buchstabenkombination wie FCDEABFACEBD beginnt. Diese Kombination ist der eindeutige Mustername, der die Menge der Vergleichsergebnisse darstellt. Die Zahl neben dem Namen ist die Musterfrequenz - FCDEABFACEBD erschien 25 Mal in der Trainingsperiode. Der durchschnittliche Gewinn pro Handel betrug 4,334. Und die Standardabweichung der Gewinne betrug 11,562. Die Frequenz, der Durchschnittsgewinn und die Standardabweichung werden später von Zorro zur Berechnung des Musterinformationsverhältnisses verwendet. Dies geschieht beim Testen oder Traden der Strategie. Die adviseLong-Funktion erzeugt ein Muster aus den aktuellen Signalen und vergleicht es mit den gespeicherten Mustern in der. rul-Datei. Wenn kein gespeichertes Muster mit dem aktuellen übereinstimmt, gibt die Funktion 0 zurück. Ansonsten gibt es die Musterinformationen multipliziert mit 100 multipliziert. Je höher die Informationsrate, desto rentabler ist das Muster. Natürlich sind Muster mit hohem Informationsverhältnis weniger häufig. Daher sollte die Handelseintragsschwelle einen Kompromiss zwischen der Rentabilität und der Häufigkeit der Muster darstellen. Alice verwendete hier eine Schwelle von 30, was bedeutet, dass für jedes Muster mit einem Informationsverhältnis über 0,3 ein Handel eingegeben wird. Kurzhandel funktioniert genau so: if (adviseShort (PATTERN2,0) gt 30) enterShort () Der adviseShort-Aufruf hat keine Signalparameter. In diesem Fall verwendet die Funktion die gleichen Signale wie der letzte advise-Aufruf, der der vorhergehende adviseLong war. Auf diese Weise müssen lange Signallisten nicht zweimal geschrieben werden. Morgen gut durch den Rest des Skripts gehen. Pattern-Erkennung ist eine der wenigen maschinellen Lernfunktionen, die für den Handel mit einem relativ einfachen Setup zu arbeiten. Dont zögern, hier zu fragen, wenn etwas mit dieser Methode unklar ist. Es gibt einige Voraussetzungen für den Handel mit Kerzenmustern - sehen Sie sich den Rest des Codes an: StartDate 2002 BarPeriod 2460 NumWFOCycles 5 NumWFOCycles oder eine ähnliche Out-of-Probe-Testmethode ist für diese Strategie erforderlich . Alle maschinellen Lernsysteme neigen zu großer Überbelastung, so dass alle In-Sample-Ergebnis aus Preismustern, Entscheidungsbäumen oder Preceptrons ist sinnlos. Die Musteranalyse benötigt auch so viele Balken wie möglich, um signifikante Muster zu finden. Oversampling kann hier nicht verwendet werden, da die High-, Low - und Close-Preise von der Start - und Endzeit der Bar abhängen - neu abgetastete Balken würden sehr unterschiedliche Muster erzeugen. Daher muss Alice die maximal mögliche Simulationsperiode verwenden, die ab dem Jahr 2002 als Ersatz für die europäischen Währungen eingeführt wurde. (Wenn Preisdaten eines bestimmten Jahres nicht im Zorro-Programm enthalten sind, können sie entweder automatisch vom Brokerserver oder mit dem historischen Preispaket von der Zorro-Download-Seite heruntergeladen werden). Aus dem gleichen Grund verwendet Alice wenige WFO-Zyklen für immer große Trainingsperioden. Das Flag RULES wird für die Erzeugung von Preismustern mit der Ratenfunktion benötigt. TESTNOW führt einen Test automatisch nach dem Training durch - das spart einen Knopf-Klick beim Experimentieren mit unterschiedlichen Musterfindungsmethoden. Der nächste Codeteil verhält sich anders im Training und im Test - oder Handelsmodus: Der Zug ist im Train-Modus wahr. In diesem Modus wird das HEDGING-Flag gesetzt, so dass sowohl lange als auch kurze Positionen gleichzeitig geöffnet werden können. Dies macht normalerweise keinen Sinn, wird aber hier zum Training der Muster benötigt. Andernfalls würden die Handelseinträge nach adviseLong adviseShort die entgegengesetzten Positionen frühzeitig schließen und damit den Mustern falsche Profitverlustraten zuordnen. TimeExit begrenzt die Dauer eines Handels, in diesem Fall auf 5 bar. So wird der Gewinn oder Verlust eines Handels immer nach 5 Bar bestimmt und dem Muster zugeordnet, das beim Eintritt des Handels bestand. Der nächste Teil des Codes wird ausgeführt, wenn Zug nicht wahr ist, d. h. im Test - oder im Handelsmodus: Das System schließt normalerweise seine Position, wenn ein entgegengesetztes Kerzenmuster auftritt. Es gibt zwei weitere Exit-Bedingungen: einen relativ entfernten Stop - nur für die sichere Seite im Falle eines Preisschocks - und einen zeitlich begrenzten Ausstieg nach 10 Bar. Der zeitgesteuerte Ausgang wird aufgrund des Vorhersageverfahrens verwendet. Es nutzt 5-Bar-Trades, so dass seine Vorhersage Horizont ist eine Woche. Einige Zeit nach dem Vorhersage-Horizont, in diesem Fall nach zwei Wochen, wird der Preis wahrscheinlich jegliche Korrelation mit dem Preis-Muster von 10 Barren verloren haben. Halten Sie den Handel nicht mehr macht keinen Sinn. Es ist oft besser, die Handelszeit mit einer nachlaufenden Methode, zum Beispiel mit TrailStep zu begrenzen. Aber hier wird zur Vereinfachung ein zeitlicher Ausgang verwendet. Nun, welchen Gewinn können wir mit handelsüblichen Mustern erreichen. Abhängig von der PC-Geschwindigkeit benötigt Zorro einige Sekunden, um durch die fünf WFO-Zyklen zu laufen und in jedem Zyklus etwa 100 gewinnbringende Muster zu finden. Ergebnis für die Eigenkapitalkurve: Obwohl der Jahresgewinn von etwa 90 nicht allzu beeindruckend erscheint, ergeben sich aus den Kursverläufen eine relativ konstant steigende Eigenkapitalkurve und sehr symmetrische Ergebnisse für den Long - und Short-Handel. Allerdings theres eine Methode, um mehr als das Doppelte des Jahresgewinns aus dem Preis Aktion Handel - und diese Methode trägt eine Gefahr. Gut behandeln, dass morgen. Commercial Member Registriert seit Sep 2012 141 Beiträge Ok, jetzt können sehen, was wir tun können, um diese rentable Preis-Aktion Handelssystem noch mehr rentabel zu machen. Ein Weg könnte das Wochenende Lücke zu beseitigen. Wenn ein profitables Preis-Muster erscheint während der Woche und führt zu einem Handel eingegeben werden Freitag, ist das Wochenende zwischen dem Muster und dem Handel Ergebnis. Das könnte die Vorhersagekraft des Musters verderben oder zumindest weniger vorhersagen als Muster, die unmittelbar dem Handel vorausgehen. (2), PriceLow (2), PreisSchließe (2), PreisHoch (1), PreisSchwarz (1), PreisSchließe (1), PreisHöhe (1 (0), PreisLeistung (0), PreisSchließe (0)) gt 30 und dow () FREITAG) enterLong () if (adviseShort (PATTERN2,0) gt 30 und dow () FREITAG) enterShort () Die Dow-Funktion gibt den Wochentag zurück und kann verwendet werden, um unterschiedliche Handelsverhalten vor und nach den Wochenenden festzulegen. Zug, Test, Ergebnis: Die Eigenkapitalkurve sieht nun auf jeden Fall schöner aus, und ebenso schöner ist der 200 Jahresgewinn. Die Verbesserung eines Systems auf diese Weise ist eine Gefahr - vor allem, wenn Zeit, Datum oder ähnliche Ad-hoc-Kriterien für zusätzliche Eintrittsbedingungen verwendet werden. Wer kann sagen, dass der bessere Gewinn nicht nur durch Zufall, ein Ergebnis der Überbeanspruchung Sure, haben wir einen rationalen Grund für den Eintritt in den Handel am Freitag nicht gegeben. Allerdings ist ein solcher Grund schnell im Nachhinein zu finden. Die Preis-Action-Skript funktioniert einfach besser, wenn am Freitag-Handel verhindert wird, und wir vermuteten, dass dies wegen der Wochenend-Lücke ist. Aber wir könnten ein ähnliches Argument für den Handel nicht am Montag verwenden. Vermeidung von Monday Trades verbessert jedoch nicht die Equity-Kurve. Warum nicht Niemand kann wirklich sagen. Einige Händler glauben, dass ein bestimmter Vermögenswert nur während seiner Hauptmarktzeiten gehandelt werden sollte, denn dann ist das Handelsvolumen am höchsten und es gibt weniger Ausreißer. Folglich handeln sie den GBPUSD nur während der Geschäftszeiten der Londoner Börse. Andere Händler glauben, dass ein Vermögenswert nur außerhalb der Hauptmarktzeiten gehandelt werden muss, denn dann sind die Märkte weniger wirksam. Sie handeln die GBPUSD nur, wenn seine Nacht in London. Einige Strategien funktionieren besser mit der ersten Methode, einige mit den anderen - und dementsprechend haben die Autoren manchmal die erste und manchmal auch die andere Erklärung gegeben. Je mehr Sie Strategien entwickeln, desto mehr erkennen Sie, dass die Theorie über Marktverhalten sinnlos ist. Nur die Testperformance ist wichtig. Aber es gibt viele Fallen, die zu übertriebenen und zu optimistischen Ergebnissen führen. Sie können nicht immer vermeiden, diese Fallen. Aber Sie sollten sich bewusst sein, dass sie da sind. Nun eine kurze Zusammenfassung dessen, was wir in dieser Lektion gelernt haben: 9658 Tägliche Kerzenmuster können unter bestimmten Umständen Vorhersagekraft haben. 9658 Die Advise-Funktion generiert Handelsregeln mit maschinellen Lernalgorithmen. 9658 Aus der Stichprobenprüfung ist für AI-basierte Strategien zwingend erforderlich. 9658 HEDGING ermöglicht es, lange und kurze Positionen gleichzeitig zu öffnen. 9658 TimeExit begrenzt die Dauer eines Handels. 9658 Die Dow-Funktion gibt den Wochentag zurück. 9658 Seien Sie vorsichtig, wenn Sie ein System mit zusätzlichen Eintrittsbedingungen verbessern. Morgen beginnen Sie mit der abschließenden Lektion über das Programmieren eines unveränderlichen - Profitroboters, der praktisch alle anderen kommerziellen Roboter übertrifft, die auf Händlerforen besprochen werden. Ein Scam-Robot-Skript funktioniert auf eine ganz andere Weise als eine normale Handelsstrategie. Der am wenigsten wichtige Teil des Skripts ist der Handelssignalalgorithmus. Die meisten Roboter verwenden hier einige einfache Indikator-basierte Strategie wie die Systeme gefunden auf Trader-Foren veröffentlicht. Die Roboter-Entwickler in der Regel weiß, dass es nicht Gewinne generieren, aber das ist nicht wichtig für Gründe, die bald klar werden wird. Alice entschied sich für einen noch einfacheren Ansatz - dies ist ihre erste Version (Gebühr: 44.000): Die Strategie tritt in einen zufälligen Handel auf jeder Bar. Die zufällige Funktion wird in 50 aller Fälle eine Zahl zurückgeben, die größer als 0 ist, wodurch ein langer Handel ausgelöst wird, sonst wird ein kurzer Handel ausgelöst. Wenn der Handel keine Kosten hatte, hatte diese Strategie eine Erwartung von null. Ein Klick auf Test zeigt jedoch einen durchschnittlichen Verlust von etwa 3 Pips pro Handel. 3 Pips sind nur die simulierten Broker verbreitet, die Ask-Bid Preisunterschied, der immer verloren geht. Also keine Überraschung hier. Diese zufällige Handelsskript ist offensichtlich nicht rentabel. Alice muss sie aufdrehen. Der erste Schritt ist die Einrichtung einiger Systemparameter und die Erfüllung der Bob-Nachfrage der 95-Gewinn-Rate: Der Roboter soll einmal täglich tauschen, so dass Alice einen Zeitraum von 1440 Minuten benötigt. Backtest ist beschränkt auf das Jahr 2012 zu simulieren - der Roboter muss für ein Jahr nur arbeiten, so dass ein längerer Backtest nicht erforderlich ist. Es verwendet auch keine Rückblickperiode, da theres keine Anzeige oder andere Funktion, die irgendeine Preisgeschichte benötigen würde. Dies ist der Parameter-Setup: BarPeriod 1440 StartDate 2012 NumYears 1 LookBack 0 Die nächsten Zeilen setzen einen Stop-Loss bei 200 Pips Abstand zum aktuellen Preis und ein Gewinnziel bei 10 Pips Distanz: Stop 200PIP TakeProfit 10PIP Hierdurch das Gewinnziel Wird 20 Mal früher als die Stop-Loss getroffen werden - was bedeutet, dass es normalerweise 20 Mal häufiger getroffen werden. Von 20 Trades werden 19 gewonnen und nur einer wird verloren - das ist die 95 Genauigkeit, die der Roboter braucht, um passende Bobs Werbung. Allerdings muss für diese Alice darauf achten, dass jeder Handel endet mit schlagen entweder die Stop-Loss oder das Gewinnziel. Jeder andere Ausgang würde die 95 verderben. Ein anderer Ausgang tritt auf, wenn ein Handel in umgekehrter Richtung eintritt, der automatisch den gegenwärtigen Handel schließt. Eine Methode, um dies zu verhindern würde Einstellung Zorros HEDGING Flagge. Hedging ist jedoch nicht erlaubt, US-Bürger, die die wichtigsten Käufer von Robotern sind. Um den US-Markt nicht zu verlieren, verhindert Alice die Handelsstornierung, indem nur ein neuer Trade eingegeben wird, wenn kein Trade geöffnet ist: if (NumOpenTotal 0) if (random () gt 0) enterLong () else enterShort () Die vordefinierte Variable NumOpenTotal ist die aktuelle Anzahl der offenen Trades. Ein Klick auf Test zeigt, dass die aktuelle Skript-Version hat in der Tat über 95 Win-Rate. Natürlich verbessert dies nicht seine Rentabilität. Obwohl 19 von 20 Trades gewonnen werden, fressen die Verluste ab dem 20ten Jahr alle Gewinne der 19 Sieger. Der einzige Effekt der hohen Gewinnrate ist nun ein seltsames Sägezahnmuster in der Eigenkapitalkurve: Wir können sehen, dass Sequenzen des Gewinnens von eintägigen Trades dazu führen, dass Teile der Eigenkapitalkurve linear bis zu dem Punkt ansteigen, an dem ein Handel nicht schlägt Gewinnziel am selben Tag. Dieser Handel bleibt für eine längere Zeit offen, möglicherweise schlagen seine Stop-Loss, und verderben die Equity-Kurve. Profit-weise das System ist nicht besser als die Version vor. Aber Bob will 100 Pips Gewinn pro Tag. Angenommen, 250 Handelstage pro Jahr, das bedeutet eine jährliche Rendite von mindestens 25.000 Pips - genug, um Erwartung des großen Reichtums wecken und verkaufen viele Roboter. Kann Alice das Skript anpassen, um 100 tägliche Pips zu erzeugen - realer Gewinn aus dem Live-Handel - und das mit einer offensichtlich unrentablen Strategie. Es ist die Magie der Statistik, in die gut aussehen morgen. Kommerzielle Mitglied Registriert September 2012 141 Posts Ok, können wir herausfinden, wie man einen Gewinn mit zufälligem Handel zu machen. Der durchschnittliche Verlust eines zufälligen Handels ist die Ausbreitung oder Provision. So wird ein Handel pro Tag und 3 Pips verbreiten wird einen durchschnittlichen Verlust von 750 Pips pro Jahr produzieren. Dies bedeutet nicht, dass jeder zufällige Händler erhalten 750 Pips Verlust bis zum Ende des Jahres. Einige könnten am Ende mit einem größeren Verlust, einige sogar mit einem Gewinn. Lets geben 3000 Händlern einige Anfangskapital und die Aufgabe, zufällige Trades, ein Handel pro Tag, für ein Jahr geben. Am Ende des Jahres gut zusammen, ihre Ergebnisse in einem Statistik-Diagramm. Es sieht so aus: Dieses Gewinnverteilungsdiagramm kann mit dem unten beschriebenen Skript erzeugt werden. Es läuft 3000 1-Jahres-Simulationszyklen von Alices erste zufällige Handelsstrategie. Die X-Achse des Diagramms zeigt den Gewinn oder Verlust in Pips am Ende des Jahres. Die y-Achse zeigt die Anzahl der Händler, die diesen Gewinn oder Verlust erzielt haben. Wir können sehen, dass die größte Gruppe - etwa 130 Händler - 500 Pips Verlust nach einem Jahr hatte. Es gibt auch einige unglückliche Händler mit mehr als 7000 Pips Verlust, aber auf der anderen Seite, weit auf der rechten Seite des Charts, ein paar mehr als 7000 Pips Gewinn Kein Zweifel, die Jungs sind sich selbst Genie Händler und prahlen mit Ihren Erfolg auf Händlerforen. Diese Gewinnverteilung ist eine Gauss Normal Distribution - die berühmte quotBell Curvequot. Es sieht ein wenig zittrig, weil 3000 Proben nicht genug für eine perfekte Glocke sind. Beim Ausführen der Simulation mit vielen weiteren Händlern wird die Kurve regelmäßiger, aber das Skript benötigt mehr Zeit zum Laufen. Die Höhe der Glockenkurve liegt bei -750 - der durchschnittliche Verlust, der mit 3 Pips pro Handel erwartet werden soll. Sie können diese Gewinnverteilungsdiagramme mit folgendem Skript generieren: Die Alices-Strategie wird nun als externe Funktionsstrategie1 bezeichnet - das ist nicht wirklich notwendig, macht es aber leichter, mit verschiedenen Strategien zu experimentieren. Einige Befehle im Skript sind neu. Wurden Oversampling verwendet, um die Ein-Jahres-Simulation viele Male: Oversampling wird normalerweise für die Erhöhung der Anzahl der Trades in einer Simulation verwendet. Hier wird nur die Simulation 3000 mal wiederholt, ein Simulationszyklus pro Trader. EXITRUN ist ein Zorro-Statusflag, das am letzten Lauf jedes Zyklus am Ende des Jahres gesetzt wird. (EXITRUN) wird dann wahr und die folgenden Zeilen werden ausgeführt: int Schritt 250 int Ergebnis-Ebene ((WinLongWinShort-LossLong-LossShort) PIPCost Step) WinLongWinShort-LossLong-LossShor t ist das Ergebnis des aktuellen Simulationszyklus. Wir können WinTotal-LossTotal nicht wie in Workshop 6 verwenden, da die ..Totalwerte über alle Zyklen zusammengefasst werden. Wir teilen das Ergebnis durch PIPCost für die Umwandlung in Pips. Wir teilen es weiter um 250 (die Step-Variable) für die Verteilung der Ergebnisse unter 250 Pips breiten Balken. Wenn ein Ergebnis 1 Pip oder 249 Pips ist egal - beide auf die gleiche Bar beitragen. Die Floor-Funktion wandelt den resultierenden Wert in eine Ganzzahl um, die wir in einem Diagramm darstellen können. Dazu wird die Funktion plotBar verwendet: Dies zeichnet einen Balken in einer Grafik mit dem Namen quotProfitquot an der Chartposition Result40. Das Diagramm beginnt immer an Position 0, so dass die 40 hat die Wirkung, es nach rechts zu verschieben und erlauben negative Ergebnisse auch sichtbar sein. Der x-Achsenwert, der zu diesem Balken gehört, ist StepResult. Wir hatten das Ergebnis auf 250 für die Verteilung unter den Balken geteilt, so dass diese Multiplikation den Balken-Pip-Wert auf der x-Achse unterhalb der Balken erscheinen lässt. Die 1 ist die Höhe der Stange. Die Höhe wird summiert (SUM), so dass die Balkenhöhe für jeden Zyklus um 1 erhöht wird, dessen Ergebnis mit dem Balken pip-Wert übereinstimmt. BARS sagt, dass die PlotBar-Funktion Balken statt einer Linie zeichnen soll, und LBL2 sagt, dass sie nur jeden zweiten Wert auf der X-Achse drucken soll - sonst wäre es schwer zu lesen. Der letzte Parameter, ROT. Gibt die Farbe der Bar. Sie können sehen, dass die obige Grafik oben auch debunks einen weit verbreiteten Mythos in der Trader-Szene. Es ist eine Tatsache, dass 95 aller privaten Händler ihr ganzes Geld schon im ersten Jahr verlieren. Nicht wahr - zumindest nicht mit zufälligem Handel. Sie können aus der Gewinnverteilung abschätzen, dass nur etwa 55 Geld verlieren (die Summe der roten Balken mit negativem Gewinn), während 45 ihr erstes Jahr mit einem Gewinn beenden. Natürlich werden die meisten dieser glücklichen 45 dann in einem der folgenden Jahre verlieren, wenn sie weiter handeln - aber es würde 5 Jahre dauern, bis 95 verloren haben ihr Geld Morgen sehen, wie Alice kann diese Gewinnverteilung für das Ende des Jahres mit 25.000 zu manipulieren Pips profitieren. Was passiert mit der Gewinnausschüttung, wenn Alice ihre Stopp - und Gewinnziele für das Erhalten der 95 Gewinnrate verwendet. Editiere einfach das oben geschriebene Skript und ersetze den Strategie1 () - Aufruf durch strategy2 (). Das ist die stoptakeprofit-Version: Die resultierende Gewinnverteilung: Der Glockenspitzenwert liegt noch bei -750 Pips, aber die Verteilung ist jetzt viel schmaler und ein wenig verzerrt auf der linken Seite. Die Beschränkung von Geschäften mit Stopp - und Gewinnzielen eliminiert große Gewinne und große Verluste. Dies stellt obere und untere Grenzen für das Jahresergebnis, so drückte die Glocke von beiden Seiten. Mit 10 Pips Gewinnziel, kann kein Händler mehr als 1750 Pips pro Jahr sogar in dem unwahrscheinlichen Fall, dass alle Trades gewonnen werden. Allerdings braucht Alice ein jährliches Ergebnis von mindestens 25.000 Pips. She can do nothing about the average 750 pips loss. But she can manipulate the profit distribution curve in a way that a large number of traders end up with 25,000 pips. For this, Alice just adds 3 more lines to her strategy: var ProfitGoal 100BarPIPCost var ProfitCurrent WinLongWinShort-LossLong-LossShort Lots clamp((ProfitGoal-ProfitCurrent) (7PIPCost), 1, 200) This is a martingale system. Such systems are used, more or less hidden, in most robots. At first Alice determines a profit goal. She needs 100 pips per day. A day is equivalent to a bar, so at any bar the accumulated profit should be 100 pips times the bar number. This is multiplied with PIPCost for getting the result in account currency instead of pips, and stored in the ProfitGoal variable. The current profit is then calculated in the next line and stored in the ProfitCurrent variable. The third line is the martingale. The lot size is set dependent on how much the current profit deviates from the profit goal. If were far below our goal, we need a huge lot size to catch up. The number of Lots is calculated just so that the next winning trade reaches the profit goal. For this, the profit difference is divided by the expected profit per lot. The profit per lot of a winning trade is 10 pips profit target minus 3 pips spread. The result, 7 pips, is again multiplied with PIPCost for converting it to account currency. The clamp function limits Lots between 1 and 200. We need at least 1 lot per trade, and we dont want to exceed 200 lots for not being too obvious or risking crazy losses. When analyzing robot strategies, one can notice such a martingale system from telltale peaks in the lot size. For this reason, robots or signal providers often increase not the number of lots, but the number of trades, which is less suspicious. If you select the modified strategy script and click Test repeatedly, every click will now generate a different equity curve. Most look like this: But surprisingly many look like this: This is just the perfect equity curve that Bob wanted for his robot. Its even a little too perfect - its straight slope comes from the ProfitGoal variable that just linearly increases with the bar number. For really selling the robot, Alice had to modify the profit goal formula for letting the curve appear more bumpy and realistic. We leave that as an exercise to the reader. Lets now copy the modified strategy in our profit distribution script, for determining the profit distribution (change Step to 2500 for getting a larger scale): This distribution does not resemble a bell curve anymore. Although the average loss is still at -750 pips, the distribution got an extremely long left tail (the high bar at the left end just represents the sum of all bars that dont fit on the chart) and a sharp peak at the right in the 25,000..30,000 pips profit area. From our 3000 traders, about 1100 will earn more than 25,000 pips with this robot Sadly, about 1600 traders will suffer losses, some even extreme losses in excess of 200,000 pips. But we hope a merciful margin call saves them early. The profit distribution chart is a little misleading. In fact the year wont end with 1100 lucky traders. Many of them will have bitten the dust before, because their equity curves, although reaching the 25,000 pips goal at the end, would go through extreme drawdowns inbetween and wipe out their account. Lets see how many traders will encounter no margin call and reach the end goal smoothly. For this, edit the script again and modify the trade entry condition from if(NumOpenTotal 0 and ProfitCurrent gt -250) Every trader will now refrain from further trading when his loss exceeds 250. This changes the profit distribution remarkably: About 500 traders now gave up on the way, visible in the high peak of the -5000 pips bar that represents the 250 loss on the simulated micro lot account. The loss can be of course higher when the last losing trade had a high lot size - thats why many bars are even beyond -5000 pips. Anyway, 600 traders still reached the 25,000 pips end goal - and this with totally random trading So Alice now has a script that indeed generates more than 25,000 pips per year. Theres a slight problem though - it only works for 20 (600 out of 3000) of its users. Most of the remaining 80 will also earn profits in the first months due to the martingale system and the high win rate, but will have lost all their money by the end of the year. Bob will mercifully not mention this in his robot advertisement - but he needs something else instead. For selling the robot, at least one of those 600 profitable equity curves has to be verified on a real account by a trade verification service. For this purpose Bob will invest 10,000. Not, as you might think, for bribing the service to confirm a fake curve. No, they are certainly honest guys and wont accept bribes. The 10,000 are used in a different way, which well describe tomorrow.


No comments:

Post a Comment