Thursday 19 October 2017

Trading System Entwicklung Kurs


Wie man ein gewinnendes Handelssystem entwickelt, das zu Ihnen passt Audioprogramm Gewinnen Sie alle Vorteile von Dr. Van Tharps Jahre von Modellbauern und seine Forschung auf, wie rentable Handelssysteme entwickelt werden. Seine Schlussfolgerung aus dieser Forschung ist, dass durchschnittliche Person keine Chance auf profitable Handel hat, weil er oder sie konzentriert sich auf alle der falschen Dinge. Sie werden nicht lernen, diese Informationen beobachten die Finanznachrichten, Lesen Finanzzeitschriften, oder das Lesen der Mainstream-Finanzzeitungen, weil die Medien werden völlig ignorieren die wichtigsten Aspekte der System-Entwicklung. Dieses Programm hilft Ihnen, festzustellen, welche Art von Handelssystem wird Ihnen persönlich und wie es zu schaffen. Lernen Sie wenig bekannte, streng gehütete Geheimnisse, die nicht in Büchern veröffentlicht werden und die Sie wahrscheinlich nicht finden, wenn Sie versehentlich auf sie stolpern. Was im Audioprogramm enthalten ist Dieses Programm enthält 20 Audio-CDs: 11 CDs neueren Materials und 9 CDs aus dem klassischen Heimstudiengang, die nicht mehr in unserem Systementwicklungs-Workshop gelehrt werden. Dieses Audio-Programm wurde live von zwei separaten Workshops aufgenommen. Es enthält einen kompletten dreitägigen Workshop, der ausschließlich von Dr. Van Tharp gelehrt wird und wenig bekannte Geheimnisse für die Entwicklung maßgeschneiderter, gewinnender Handelssysteme umfasst. Dies ist eine zeitlose Information und ist daher nicht mit einem bestimmten Markt oder Zeitrahmen verknüpft. Wir haben auch Teile der ursprünglichen Systementwicklung seit Jahren zurückbehalten, da dieser ursprüngliche Abschnitt Material enthält, das nicht mehr in den Workshops abgedeckt ist und nur auf diesem Audioprogramm zu finden ist. Viele unserer Kunden hören diese CDs immer und immer wieder, nur um all die subtilen Details zu bekommen, die sie manchmal auf den früheren Kritiken verpassen. Das Material umfasst die psychischen Fallstricke der Systementwicklung, das Verständnis, dass Sie nur Ihren Glauben über den Markt und nicht den Markt selbst und die wichtigsten Konzepte der Systementwicklung einschließlich einiger von Dr. Tharps-Markenkonzepten mdashexpectancy, R-multiples, System Quality Numberreg handeln Score und Position Dimensionierung Strategien. Sie lernen, Trading-Konzepte, die tatsächlich in Bereichen wie Trend folgen, Band Handel, Werthandel, mentalen Szenario Handel, saisonale Tendenzen, Spread Trading und Arbitrage zu arbeiten. Unter vielen anderen Dingen, wird dieses Programm vertraut machen Sie mit den wichtigsten Teilen eines Systems, geben Ihnen gute Beispiele für jeden Teil, und helfen Sie bei der Entwicklung geeigneter Setups, und einen entsprechenden Eintrag und Stop-Loss. Das Haus Studiengang enthält auch eine umfassende 340-seitigen Handbuch, das als Leitfaden, eine Arbeitsmappe und ein Lehrer durch Ihre System-Gebäude Reise dient. Um Sie mit den psychologischen Fallstricke der Systementwicklung vertraut zu machen. Zumindest ist es wichtig, dass Sie verstehen, dass Sie nur handeln Ihre Überzeugungen über den Markt, nicht den Markt selbst. Damit Sie die wichtigsten Konzepte und Schritte der Systementwicklung verstehen können, einschließlich Erwartung, R-Vielfache, Systemqualität und Positionsbestimmungsstrategien. Um Ihnen dabei zu helfen, die Leistungsfähigkeit der Ziele zu verstehen und wie Ihre Ziele Ihre Ergebnisse beeinflussen, können Sie Strategien mit einigen Zielen in unseren Simulationen praktizieren und Ihnen helfen, zu verstehen, was für die Ziele der Systementwicklung erforderlich ist. Wenn Sie verstehen, die Macht und Bedeutung der Ziele und nutzen diese Art von Strategien, um sie zu treffen, wird Ihr ganzes Konzept für die Systementwicklung ändern. Um Ihnen helfen zu verstehen, einige der wichtigsten Konzepte, die Sie handeln könnte, die tatsächlich funktionieren: Trend folgend, vor allem Trends auf Grundlagen basieren. Bandgeschäft. Werthandel, wo Wert definiert als Kauf von Dingen in Cent auf den Dollar. Mentalszenario Handel. Saisonale Tendenzen, wenn diese realrealquot sind und nicht statistische Anomalien. Spread Handel und Arbitrage. Um Ihnen zu helfen, R in Ihrem Handel zu definieren und entsprechende Setups, Eintrag und Stop-Loss zu entwickeln. Um Ihnen vertraut zu machen mit den wichtigsten Teilen eines Systems und geben Ihnen gute Beispiele für jeden Teil. Damit Sie entscheiden, welche Kriterien Sie treffen müssen, bevor Sie bereit sind, ein System zu tauschen. Diese werden auf Ihre eigenen Werte basieren, nicht jemand elses. Um Sie vertraut mit dem Schlüssel zu Ihrem Ziel Position Sizing strategiesso, dass Sie eine gute Chance auf Ihre Ziele zu erreichen. Um Ihnen beizubringen, wie Sie die Qualität Ihres Systems zu bestimmen, ist es, ob es ein Forex-Day-Trading-System oder ein Aktien-Value-System ist. Welche Art von Trader sind Sie Sind ein risikoarmer Investor, der will nur kleine, konsequente Gewinne jeden Monat mit nur einem gelegentlichen Verlust machen Erfahren Sie, wie Sie ein System entwickeln, die Ihnen eine einzigartige Methodik, die Ihnen diese Art zu entwickeln Der Konsistenz Sind Sie ein gutsy Trader whod wie machen jährliche Gewinne von 100, 200 oder sogar 1000 pro Jahr Sein möglich, obwohl riskant, und Sie können das auch lernen. Die interessante Sache ist, dass Sie es in einer Weise tun können, dass das einzige Geld, das Sie riskieren, ist das Geld, das Sie bereits aus dem Markt gemacht haben. Thats echte Hebelwirkung Nur etwa 5 der Welthändler und 10 der weltweiten Investoren, konsequent machen große Geld. Was diese Gewinner tun, ist nicht komplex. In der Tat ist die Einfachheit eines der Schlüssel, um Geld zu verdienen. Und Sie können es auch tun Ive modelliert diesen Prozess und kann Ihnen beibringen, wie Sie Ihr eigenes Handelssystem, das Ihren eigenen Stil des Handels passt zu entwickeln. Warum entwickeln mein eigenes System ist es nicht einfacher, einfach gehen Sie ein System mit bewährten Ergebnissen Es gibt Hunderte, wenn nicht Tausende von Handelssystemen, die funktionieren. Aber die meisten Menschen, nach dem Kauf eines bereits vorhandenen Systems, folgen nicht dem System und handeln es genau so, wie es beabsichtigt war. Warum nicht, weil das System nicht passt sie oder ihre Art des Handels. Eines der größten Geheimnisse des erfolgreichen Handels ist die Suche nach einem Handelssystem, das zu Ihnen passt. In der Tat, Jack Schwager, nach der Befragung genug Markt-Assistenten, um zwei Bücher zu schreiben, kam zu dem Schluss, dass das wichtigste Merkmal aller guten Händler war, dass sie ein System oder Methodik, die für sie richtig war gefunden hatte. Wenn jemand anderes ein System für Sie entwickelt, wissen Sie nicht, welche Verzerrungen sie haben konnten. Aber wenn Sie Ihr eigenes System zu entwickeln, wird es kompatibel mit Ihren eigenen Überzeugungen, Ziele, Persönlichkeit und Kanten. Und das wird es viel einfacher für Sie zu handeln. Darüber hinaus fördert der Großteil der gegenwärtig verfügbaren Systementwicklungssoftware die Handelsvorurteile, die für den gesamten Handelserfolg nachteilig sein können. Die meisten System-Entwicklungs-Software ist so konzipiert, weil die Menschen in der Lage, die Märkte perfekt vorherzusagen wollen. Als Ergebnis können Sie kaufen Software jetzt für ein paar hundert Dollar, die es Ihnen ermöglichen, überlagern zahlreiche Studien über vergangene Marktdaten. Innerhalb von wenigen Minuten können Sie beginnen zu denken, dass die Märkte perfekt vorhersehbar sind. Und dieser Glaube wird bei Ihnen bleiben, bis Sie versuchen, den realen Markt statt der historisch optimierten Markt Handel. Viele Handelsabschlüsse haben von diesem sehr Denken abgesunken. Ein sicheres Geschäft, das ohne ordnungsgemäße Positionsbearbeitung platziert wird, kann einige Händler völlig aus dem Spiel wischen. Unsere Aufgabe in diesem Kurs ist, Ihnen zu zeigen, was Sie wissen müssen, um Ihr eigenes System zu entwickeln. Das Material, das Sie lernen, ist nicht markt - oder zeitrahmenspezifisch. Also, ob Sie Aktien, Futures, Währungen oder Gold usw. handeln oder ob Sie 50 Trades pro Tag oder 50 Trades pro Jahr platzieren, erfahren Sie alle Komponenten, die in jedem System funktionieren. Drei kritische Geheimnisse, die Sie annehmen können, um eine hervorragende Reichtum-Gebäude-Formel zu entwickeln, die solide Ziele entwickelt Dies ist die wichtigste Aufgabe der Systementwicklung. Wenn Sie diese Aufgabe richtig durchführen, dauert es mindestens die Hälfte Ihrer Zeit während des Entwicklungsprozesses. Wenn Sie lernen, was es ist, youll sagen, Natürlich ist es wichtig, aber youll wahrscheinlich noch verbringen sehr wenig Zeit auf sie. Um ein System zu entwickeln, das zu Ihnen passt, müssen Sie wirklich darüber nachdenken, was Sie wollen. Es ist nicht eine triviale Aufgabe. Es gibt mindestens 30 Fragen, die Sie adressieren müssen, wenn Sie ein Handelssystem zu entwickeln. Dr. Tharp führt Sie durch jede Frage, so youll wissen genau was ist wichtig für Sie. Die meisten Menschen ignorieren sechs oder sieben der wichtigsten Komponenten der System-Entwicklung, wenn sie ihre Forschung. Tatsächlich sehen Sie nie ein Buch auf Systementwicklung, das mehr als sechs von ihnen bedeckt. Das ist die Einschränkung des durchschnittlichen Händlers bei der Forschung. Sie wollen große Gewinne mit so wenig Risiko wie möglich, so dass Sie jeden Vorteil möglich, wenn Sie ein solches System zu entwickeln beginnen. Sie sollten in der Lage, die Vorteile von acht dieser Komponenten nach dem Hören dieser CDs. Und mit ein wenig mehr Aufwand, youll in der Lage, alle 10 zu verwenden. Wenn Sie alle 10 Komponenten mit Kompetenz, youll werden unter den Top-ein Zehntel eines Prozent aller Händler und Investoren in der Welt. Position Sizing Strategien Die meisten Menschen konzentrieren sich auf das wichtigste Element der Systementwicklung. Und sie ignorieren Position Dimensionierung StrategienMdas wichtigste Element. Durch dieses Haus Studiengang lernen Sie Position Dimensionierung Algorithmen, die Spitzen-Performer verwenden. Darüber hinaus youll lernen Position Dimensionierung Algorithmen, die Ihnen helfen, Ihr Gesamtrisiko senken, während zur gleichen Zeit hilft Ihnen, mehr konsistente Leistung zu erzielen. Wenn Sie sich auf diese drei secretsmdash konzentrieren, die 95 Prozent aller Händler und Investoren völlig ignoremdashyou Gewölbe sich in eine Klasse, die nur wenige erreichen konnten. Wenn youre mehr abenteuerlich, gut zeigen Ihnen, wie wirklich für wirklich große Renditen mit den Märkten Geld gehen. Wenn Sie diese Super-Geld machen Techniken verwenden, könnten Sie 1.000 auf Ihr Geld machen jedes Jahr, riskiert vor allem das Geld, das der Markt Ihnen gegeben hat. Youll lernen das Geheimnis hinter, wie ein Händler 10.000 in 1,1 Millionen in weniger als einem Jahr gedreht. Er handelte eine Volatilität Breakout-System, aber der Schlüssel zu seinem Gewinn war seine Position Sizing-Methode. Darüber hinaus zeigen auch Ihnen, wie eine andere Gruppe von Händlern hat über 100 Millionen aus dem Markt in den letzten 10 Jahren übernommen Sie handelten ein Channel-Breakout-System, aber der eigentliche Schlüssel zu ihrem Erfolg war das Geld-Management. Lernen Sie die Vor - und Nachteile beider Stile. Diese Art von abenteuerlichen Handel ist sehr riskant. Sie könnten eine erhebliche Menge an Geld verlieren, wenn youre nicht vorsichtig. Als Ergebnis, gut zeigen Ihnen alle Fallstricke, so dass Sie gründlich verstehen, das Risiko beteiligt. Automated Trading amp Backtesting-Kurs - Teil 2: System-Entwicklung Commercial Member Registriert September 2012 141 Beiträge Dies ist der zweite Teil des automatisierten Trading-Kurs, der wird Wie man eine rentable Strategie entwickelt. Keine weiteren Programmierkenntnisse sind erforderlich, wenn Sie den ersten Teil des Kurses gemacht haben. Sein hier: forexfactoryshowthread. phpt388887 Dieser zweite Teil umfaßt das Schreiben der grundlegenden handelnden Strategien, die Optimierung, gehen Vorwärtsanalyse, die Portfoliostrategien und das Geldmanagement. Es verwendet einige neue Handelsalgorithmen wie Frequenzfilter. Um Missverständnisse zu vermeiden: Sein nicht ein Kurs über technische Analyse. Ich werde nicht erklären hier bewegliche Durchschnitte oder dergleichen. Sein gerade ungefähr, wie man eine Strategie entwickelt und backtest, die auf einer Handelsidee basiert, die Sie bereits haben. Ziel ist die Entwicklung einer robusten Portfolio-Strategie mit stabiler Rendite. Hier sehen Sie die Out-of-Sample-Equity-Kurve eines solchen Portfoliosystems, obwohl es nicht die gleiche Strategie ist wie im Kurs: Für den Kurs benötigen Sie ein kostenloses Programm zum Ausführen der Scriptbeispiele und zum Testen der Strategien. Sein genannt quotZorroquot und Sie können es von Zorro-Händler herunterladen. Bitte beachten Sie auch zwei Dinge im Hinterkopf: 9658 Alle Strategien in diesem Thread sind für pädagogische Zwecke gedacht. Sie sind alle rentabel, aber für die Einfachheit, nicht für maximalen Profit oder Robustheit. Für den eigentlichen Handel eine solche Strategie, würden Sie normalerweise Eintrag Filter Regeln zum Herausfiltern unrentabel Trades. Wie zu finden und zu generieren, solche Regeln mit maschinellen Lernalgorithmen, wie Zorros perceptron oder Entscheidungsbaum, könnte in einem zukünftigen dritten Teil des Kurses abgedeckt werden. Für wirklich den Handel einer Strategie, die Sie in der Regel auch einen anspruchsvolleren Exit-Algorithmus, realisiert mit einer Handels-Management-Funktion. Aber das ist auch Sachen für einen zukünftigen Teil und gut halten es einfach in diesem Teil des Kurses. 9658 Ich werde einige Backtest-Ergebnisse hier, aber sie können etwas anders sein, um die Ergebnisse youll erhalten Sie beim Testen der Skripte selbst. Das ist, weil die simulierten Ausbreitungs-, Provision - und Rollover-Parameter unterschiedlich sein können und die Backtest-Perioden auch unterschiedlich sind. Sie könnten dies verhindern, indem Sie Spread und andere brokerabhängige Parameter auf einen festen Wert im Skript festlegen und feste Perioden für die Simulation und den Test verwenden, aber sie mit dem Markt zu aktualisieren, gibt ein realistischeres Ergebnis. Mitglied seit Sep 2012 141 Beiträge Lets start. Der Punkt des Handels ist zu wissen, der Moment, wenn seine gut zu kaufen, gut zu verkaufen, oder gut, nichts zu tun. Jedes Handelssystem nutzt Marktinfizienten - Abweichungen der Preiskurven aus Zufallsdaten -, um zukünftige Preise vorherzusagen und die richtigen Kauf - und Verkaufspunkte zu finden. Die offensichtlichste Weise, Gewinne zu machen, geht mit dem Trend. Lets haben eine kleine Bühne spielen, in dem Händler Bob versucht, seine Handelsstrategie zu Programmierer Alice erklären. Bob hat sie gerade beauftragt, sein System zu automatisieren: Bob: Ich gehe mit dem Trend. Ich kaufe lange, wenn die Preise beginnen zu gehen und ich gehe kurz, wenn sie anfangen gehen. Alice: Und das funktioniert Bob: Manchmal. Abhängig vom Markt. Alice: So kaufen Sie nur lange, wenn die heutige Preis-Bar ist höher als die Bars der letzten Tage Bob: Nah, eine höhere Preisklasse alleine tun. Preise wackeln viel. Oft sind die Kerzen ganz über dem Platz. Ich suche den langfristigen Trend, wie der Trend der letzten zwei Monate. Ich mache das mit einem gleitenden Durchschnitt. Alice: Gut. Das sollte kein Problem sein zu automatisieren. Bob: Nun, eigentlich gibt es ein Problem. Sie sehen, ein zwei Monate gleitender Durchschnitt lags mindestens einen Monat hinter dem Preis. Oft ist der Trend schon vorbei, wenn der Durchschnitt sich nach oben oder unten biegt. Sie müssen Art der Blick vor der gleitenden durchschnittlichen Kurve, wenn Sie meine Bedeutung bekommen. Alice: So wollen Sie wissen, wann ein Trend von zwei Monaten ändert, aber Sie müssen es in viel weniger Zeit als zwei Monate wissen Bob: Sie haben es. Alice: Ich könnte einen Tiefpassfilter verwenden, um die Trendkurve zu erhalten. Zweite Ordnung Tiefpassfilter haben fast keine Verzögerung. Ist das ok für dich Bob: Ich weiß nicht, was ein zweiter Ordnung Tiefpassfilter ist. Aber ich vertraue dir. Alice: Gut. So kaufe ich, wenn die Trendkurve seine Richtung ändert. Zum Beispiel, wenn es beginnt, aus einem Tal aufzusteigen, oder von einem Peak herunterzukommen. Du hast es. Alice: Wie gehen Sie aus dem Handel Bob: Wenn seine die richtige Zeit. Abhängig vom Markt. Alice: Ich kann eine lange Position bei der Eingabe eines kurzen und umgekehrt zu verlassen. Ist dies sinnvoll Bob: Ja, das ist, was ich normalerweise tun, wenn Im nicht gestoppt früher. Alice: Stopped Bob: Sicher. Ein Handel muss gestoppt werden, wenn sein Verlust zu viel. Wir brauchen einen Stop-Loss. Oder willst du mein ganzes Konto von einem schlechten Handel abgewischt haben? Bei welchem ​​Preis platzieren Sie den Stop Loss Bob: Nicht zu weit und nicht zu eng. Ich möchte nicht zu viel verlieren, aber ich möchte auch nicht, dass meine Trades aus der ganzen Zeit gestoppt. Alice: So lassen Sie mich raten: es hängt vom Markt ab Bob: Sie haben es. Im Anschluss an das Gespräch schrieb Alice dieses Handlungsstrategieskript für Bob (Gebühr: 5.000): Vom ersten Teil des Kurses könnten Sie einige familar Strukturen wie die if-Anweisung und einige Linien sehen, die ähnlich aussehen, aber nicht ganz wie Variable Erklärungen. Morgen gut gehen gründlich über dieses Skript, analysieren, was es Zeile für Zeile, und dann schauen im Detail in das Verhalten und die Leistung dieser Strategie. Kommerzielle Mitglied Registriert seit Sep 2012 141 Beiträge Wäre jetzt gehen, um den Code zu analysieren. Zunächst können wir sehen, dass die Funktion nun als Run-Quote und nicht als Main-Quote bezeichnet wird. "Run run" ist auch ein spezieller Funktionsname, aber während eine Hauptfunktion nur einmal ausgeführt wird, wird nach jedem Balken eine Run-Funktion aufgerufen, wobei die Periode und das Asset mit den Scrollbars ausgewählt werden. Standardmäßig beträgt die Balkenperiode 60 Minuten. Also diese Funktion läuft einmal pro Stunde, wenn Zorro Trades. Am Anfang stehen zwei merkwürdige Linien, die ähnlich wie var-Definitionen aus dem ersten Teil des Kurses aussehen: var Preisreihe (Preis ()) var Trendreihe (LowPass (Preis, 1000)) Allerdings haben sie im Gegensatz zu den var-Definitionen ein Sternchen Vor dem Namen und werden auf den Rückgabewert eines serie () - Funktionsaufrufs gesetzt. Wir definieren hier nicht eine einzige Variable, sondern eine ganze Reihe. (C-Programmierer merken, dass wir tatsächlich einen Zeiger definieren, aber das braucht uns jetzt nicht zu stören). Eine Serie ist eine Variable mit einer Historie - die Reihe beginnt mit dem aktuellen Variablenwert, dann kommt der Wert, den die Variable vorher hatte, dann den Wert von zwei Balken vor und so weiter. Dies wird vor allem für Preiskurven und deren Derivate verwendet. Zum Beispiel könnten wir eine Serie verwenden, um den aktuellen Preis eines Vermögenswerts zu nehmen, vergleichen Sie es mit dem Preis von 1 bar vor, und tun Sie einige andere Dinge abhängig von vergangenen Preisen. Die Reihe ist das ideale Konstrukt für solche Preisberechnungen. Der aktuelle Wert einer Serie kann verwendet werden, indem dem Serienamen für den Wert eine 0 vorangestellt wird, bevor eine 1 addiert wird. Für zwei Takte, bevor eine 2 hinzufügen und so weiter. Also, in Alices Code Price0 wäre der aktuelle Wert der Price-Serie und Price1 den Wert von 1 Stunde her. Viele Handel Plattform Sprachen - zum Beispiel EasyLanguage - Serie unterstützen diese Weise in der Regel Indikator, Statistiken und finanzielle Funktionen alle verwenden Serien anstelle von einzelnen Variablen. Brunnen begegnen Reihen sehr häufig in den Handelsschriften und werden vertraut mit ihnen. Die Funktion serie () kann verwendet werden, um eine einzelne Variable in eine Reihe umzuwandeln. Die Variable oder der Wert zum Füllen der Serie wird normalerweise an diese Funktion übergeben. Allerdings waren nicht mit einer Variablen hier, sondern der Rückgabewert eines Funktionsaufrufs. Var Preisreihe (price ()) bedeutet: eine var-Reihe mit dem Namen quot Price quot definieren und mit dem Rückgabewert der price () - Funktion ausfüllen. Wir haben in der letzten Programmierlektion gelernt, wie man Funktionsaufrufe auf diese Weise verschachtelt und die Rückgabewerte von Funktionen als Parameter an andere Funktionen übergibt. Die price () - Funktion gibt den Mittelpreis des ausgewählten Assets am aktuellen Balken zurück. Es gibt auch priceOpen (), PriceClose (), PriceHigh () und PriceLow () - Funktionen, die den offenen, geschlossenen, maximalen und minimalen Preis der Bar zurückgeben, der mittlere Preis ist jedoch in der Regel das beste für Trendhandelsstrategien. Sein gemittelt über alle Preise innerhalb der Bar und erzeugt so eine glattere Preiskurve. Var Trendreihe (LowPass (Preis, 1000)) Die nächste Zeile definiert eine Serie mit dem Namen Trendquant und füllt sie mit dem Rückgabewert aus der LowPass-Funktion. Wie Sie vermutlich vermutet haben, ist diese Funktion der Tiefpassfilter 2. Ordnung. Seine Parameter sind die zuvor definierte Preisserie und ein Cutoff-Wert, den Alice auf 1000 bar eingestellt hat. 1000 Bar sind etwa 2 Monate (1 Woche 245 120 Stunden). Somit dämpft das Tiefpaßfilter alle Wiggles und Jaggies der Price-Serie, die kürzer als 2 Monate sind, aber nicht den Trend oder Langzeitzyklen über zwei Monate beeinträchtigt. Es hat einen ähnlichen Glättungseffekt wie eine Moving Average Funktion, hat aber die Vorteile einer besseren Reproduktion der Preiskurve und weniger Verzögerung. Dies bedeutet, dass der Rückgabewert einer Tiefpassfilterfunktion nicht so verzögert wird wie der Rückgabewert einer Moving Average-Funktion, die normalerweise für den Trendhandel verwendet wird. Das Skript kann schneller auf Preisänderungen reagieren und damit einen besseren Gewinn erzielen. Bitte fragen Sie, ob etwas bisher unklar war. Die nächste Zeile in Alices System stellt eine Stop-Loss-Limit: Stop ist eine vordefinierte Variable, die Zorro bereits kennt, also müssen wir es nicht definieren. Es ist der maximal zulässige Verlust des Handels die Position wird sofort verkauft, wenn es mehr als den angegebenen Wert verloren. Die Grenze ist hier durch 2ATR (100) gegeben. Die ATR-Funktion ist eine Standardanzeige. Es gibt den mittleren True Range - dh die durchschnittliche Höhe einer Kerze - innerhalb einer bestimmten Anzahl von Takten zurück, hier die letzten 100 Takte. So wird die Position verkauft, wenn der Verlust die Größe von zwei Kerzen übersteigt. Wenn Sie Stop nicht auf einen festen Wert setzen, sondern auf einen Wert, der von der Fluktuation des Preises abhängt, passt Alice den Stopverlust an die Marktsituation an. Wenn der Preis stark schwankt, sind höhere Verluste erlaubt. Andernfalls würden Trades zu früh gestoppt werden, wenn der Preis nach unten nur für einen Moment. Ein Stopp-Verlust sollte in allen Handelsstrategien verwendet werden. Es begrenzt nicht nur Verluste, es erlaubt auch, das Risiko pro Handel für eine genauere Leistungsanalyse zu berechnen. Die nächsten Zeilen sind der Kern der Alices-Strategie: Die Talfunktion ist eine boolesche Funktion, die entweder true oder false zurückgibt. Es gibt true zurück, wenn die Serie nur einen Abwärtspeak hatte. Die peak-Funktion gibt true zurück, wenn sie nur eine Aufwärtsspitze hatte. Wenn die if (..) - Bedingung wahr wird, wird ein long - oder short-Handel mit dem ausgewählten Asset mit einem enterLong - oder enterShort-Befehl eingegeben. Wenn ein Trade bereits in die entgegengesetzte Richtung geöffnet ist, wird er automatisch geschlossen. Beachten Sie, wie wir die else der ersten, wenn mit einer zweiten, wenn die zweite if () - Anweisung wird nur ausgeführt, wenn die erste war nicht. Lassen Sie uns einen Blick in einen Beispiel-Handel ausgelöst durch diesen Befehl: Die rote Linie in der Tabelle oben ist die Trend-Serie. Sie können sehen, dass es einen Spitzenwert Ende September 2008, so dass die Spitze (Trend) - Funktion true und die enterShort-Funktion aufgerufen wurde. Der kleine grüne Punkt ist der Moment, wo ein kurzer Handel eingegeben wurde. Die Trendreihe geht weiter bis zum 23. November, wenn ein Tal erreicht wurde. Ein langer Handel (in dieser Tabelle nicht gezeigt) wurde nun eingegeben und der kurze Handel wurde automatisch geschlossen. Die grüne Linie verbindet die Ein - und Ausgangspunkte des Handels. Es war fast 2 Monate geöffnet und machte einen Gewinn von etwa 13 Cent pro Einheit oder 1300 Pips. Morgen lernen, wie man Backtest einer solchen Strategie und wie man seine Rentabilität beurteilen. Alice hatte eine neue Serie zur Speicherung der Handelssignale definiert: var Signals Serie (0) Diese Serie hat den Wert 0, sofern nicht anders festgelegt. Dies geschieht, wenn ein Peak oder Tal angetroffen wird: if (Tal (Trend)). Signale0 1 sonst if (Spitzenwert (Trend)). Signals0 1 else Signals0 0 Der aktuelle Wert der Signals-Serie - Signals0 - wird auf 1 gesetzt, wenn die Trendkurve entweder ein Tal oder eine Spitze hat und ansonsten 0. Nun kann Alice die Historie der Serie innerhalb der letzten 4 Balken mit dem Summenindikator überprüfen: if (Summe (Signale, 4) 0) enterLong () Der Summenindikator gibt nur die Summe der Serie über den angegebenen Zeitraum zurück. Die Summe ist normalerweise 0, es sei denn, Signals0 wurde in den letzten 4 Takten immer auf 1 gesetzt. Dann ist die Summe die Anzahl der Handelssignale während dieser Zeitperiode. Die if-Bedingung stellt sicher, dass ein Trade nur dann eingegeben wird, wenn die Summe 0 ist. Dies ist die Eigenkapitalkurve der verbesserten Strategie: Die jährliche Rendite liegt jetzt bei über 70 Jahren und alle Performanceparameter - Gewinnfaktor, Sharpe Ratio, Ulkusindex Verbessert. Aber es ist noch nicht perfekt: Mehrere bisher profitable Trades wurden nun auch weggefiltert. Filtern ist oft ein Kompromiss zwischen Verbesserung und Verschlechterung. Wie auch immer, Alice denkt, dass diese Strategie jetzt gut genug für die miese 5000 Programmgebühr ist, und Bob bekam, was er wollte. Nun lernen in den nächsten Tagen, wie man Strategien weiter zu verbessern. Wenn Sie die Trades dieser Strategie im Detail überprüfen möchten, fügen Sie die folgende Zeile an den Anfang des Skripts: LOGFILE ist eine Flagge - etwas wie ein quotswitchquot, die ein oder aus sein kann. Solche Schalter werden mit der Funktion set () eingeschaltet. Wenn der Switch eingeschaltet ist, speichert der nächste Klick auf Test ein Protokoll aller Ereignisse im Log-Unterordner. Öffnen Sie LogWorkshop4EURUSDtest. log mit dem Script-Editor oder einem anderen Klartext-Editor. Es beginnt wie folgt: Der erste Short-Trade wird nach Bar-Nummer 147, beginnend 10. Januar 10.00 Uhr eingegeben. Zorro kaufte 1 Lot EURUSD zum Preis von 1.4676. Das Handelsrisiko betrug etwa 6, bestimmt durch die Stop-Loss-Distanz (aufgrund von Schlupf kann das Risiko nur geschätzt werden). Zwei Bars später wurde der Short-Trade mit einem Verlust von 59 Cent geschlossen, die Position wurde umgekehrt, und ein langer Handel wurde zu einem Preis von 1,4682 eröffnet. Die detaillierte Bedeutung der Meldungen finden Sie im Zorro-Handbuch unter "Tetraingquot". Sie können im Protokoll sehen, dass die meisten Trades verloren gehen. Zorro scheint bewusst Trades in die falsche Richtung einzutreten - Handel zufällig würde nur etwa 50 von ihnen verlieren, nicht 80. Aber theres eine Methode hinter diesem scheinbar verrückten Handel. Der Algorithmus will eine günstige Position, wenn ein langfristiger Trend beginnt und hält dann die Position für eine lange Zeit. Thats, warum es gewinnt auf lange Sicht, trotz Verlust der meisten Trades. Was haben wir bisher gelernt Ein Strategie-Skript enthält eine Run-Funktion, die einmal pro Bar aufgerufen wird. Eine Folge ist eine Variable mit einer Historie. Ein Tiefpassfilter entfernt die Jaggies von einer Preiskurve ohne viel Nacheilung. Sie ist den traditionellen gleitenden Durchschnitten überlegen. Die Tal - und Spitzenfunktionen können verwendet werden, um an den Wendepunkten einer Kurve zu kaufen oder zu verkaufen. Ein Stopverlust begrenzt das Handelsrisiko. Filtern von Trades verbessert oft die Strategie-Performance. Überprüfen Sie das Strategieverhalten mit dem Schalter LOGFILE im Detail. In den nächsten Tagen lernen, wie man Strategien optimieren und an verschiedene Märkte anpassen. Commercial Member Registriert seit Sep 2012 141 Beiträge Counter Trendhandel ist von Marktzyklen betroffen und empfindlicher auf die Bar-Periode als Trendhandel. Bob hat Alice mitgeteilt, dass Barperioden, die mit den weltweiten Märkten in Einklang stehen - wie beispielsweise 4 oder 8 Stunden - bei dieser Art von Handel besonders profitabel sind. Deshalb hat sie die Balkenperiode auf einen festen Wert von 4 Stunden oder 240 Minuten gesetzt: Die Zähler-Trendhandelregeln sind in den folgenden Zeilen enthalten, die das Buysell-Signal berechnen. Die erste Zeile richtet eine Preisreihe ein, genau wie in der Trendhandelsstrategie. Eine Preiskurve ist oft eine Überlagerung von wöchentlichen, zweiwöchentlichen oder monatlichen Handelszyklen, und die dominierende Zeitspanne ist Der bedeutendste Zyklus in der Kurve. Wenn die Preise alle zwei Wochen auf und ab schwanken würden, wäre die dominierende Periode 60 - das heißt, die Dauer von zwei Wochen, resp. 10 Handelstagen, gezählt in 4-Stunden-Bars. Alice nutzt die DominantPeriod () - Analysefunktion mit einer Cutoff-Periode von 30 Bar, um den Hauptpreis-Oszillationszyklus im Bereich unter 100 bar zu finden. Das Ergebnis DomPeriod ist eine Reihe von dominanten Perioden. Var LowPeriod LowPass (DomPeriod, 500) Da die dominante Periode sehr stark schwankt, passiert die nächste Zeile die Serie durch ein Tiefpassfilter, genau wie die Kurve in der Trendhandelsstrategie. Das Ergebnis wird in der Variablen (keine Folge, also keine) LowPeriod gespeichert, die die Tiefpaß-gefilterte dominante Periode der aktuellen Kurskurve ist. Var HP Serie (HighPass (Price, LowPeriod)) In der nächsten Zeile wird ein Highpass-Filter mit der Preiskurve gespeist und die Cutoff-Frequenz wird auf die dominante Periode eingestellt. Dadurch wird der Trend und alle Zyklen, die niedriger sind als die dominante Periode aus der Preiskurve entfernt. Die Funktion HighPass () ähnelt der LowPass-Funktion, sie macht einfach das Gegenteil und lässt nur hohe Frequenzen, d. h. kurze Zyklen, in der Preiskurve. Das Ergebnis ist eine modifizierte Preiskurve, die überwiegend aus dem dominanten Zyklus besteht. Seine gespeichert in einer neuen Serie mit dem Namen HP (für HighPass). Var Signalreihe (Fisher (HP, 500)) Die Werte der HP-Preiskurve sind überall da, wo ein Handelssignal generiert werden muss, dh sie sind in einem definierten Bereich komprimiert, so dass sie mit einem Schwellwert verglichen werden können . In der traditionellen technischen Analyse wird für die Normalisierung einer Kurve ein falsch als Stochastik bezeichneter Indikator verwendet. Alice bevorzugt die Fischerverwandlung. Dies ist eine Operation, die eine beliebige Kurve in eine Gaußsche Verteilung umwandelt - das ist die berühmte Glockenkurvenverteilung, wo die meisten Werte in der Mitte liegen und nur wenige Werte außerhalb des Bereichs 1. -1 liegen. Diese Transformation erfolgt mit der Fisher () - Funktion. Es wandelt die HP-Serie in die Gaußsche verteilte Signalreihe um, wobei die letzten 500 bar für die Normalisierung verwendet werden. Var Threshold 1.0 Diese Zeile definiert eine neue Variable Threshold mit einem Wert von 1,0. Alices beabsichtigt, jeden Signalwert zu lassen, der das 1.0 verlässt. -1.0 Bereich einen Handel auslösen. Dies geschieht im folgenden Teil des Codes. Bevor wir mit dem Handel beginnen können, platziert Alice eine Stop-Loss in einer adaptiven Distanz zum Preis, genau wie im Trend Trading Script. Die ATR-Funktion dient auch zur Bestimmung der Stopverlustdistanz bei der durchschnittlichen Höhe von 4 Kerzen: Zusätzlich zum Stopverlust hat Alice auch eine Wegbegrenzung von 4 durchschnittlichen Kerzen weg vom aktuellen Preis platziert: Wenn der Handel nun in eine günstige Richtung geht Durch mehr als 4 durchschnittliche Kerzen, wird der Stop-Loss folgen dem Preis in einer Entfernung von 8 Kerzen. Damit wird sichergestellt, dass alle Trades, die einen 8 Kerzengewinn erzielen, mit einem Sieg beendet werden, unabhängig davon, wie sich der Preis weiter verhält. Trailing oft - nicht immer - verbessert den Gewinn einer Strategie, ist aber fast immer besser als ein Gewinnziel zu setzen. (CrossUver (Signal, Schwelle)) enterLong () else if (crossOver (Signal, Schwellenwert)) enterShort () Wenn die Signalkurve den negativen Schwellenwert von oben - dh wenn das Signal unter -1 fällt - Der Boden des dominanten Zyklus, so dass wir erwarten, dass der Preis steigen und kaufen lange. Wenn der Schwellenwert von unten gekreuzt wird - das bedeutet, Signal steigt über 1 - ist der Preis auf dem Höhepunkt und wir kaufen kurz. Das ist genau das Gegenteil von dem, was wir im Trendhandel getan haben. Zur Ermittlung des Schwellenwertübergangs wurden die Funktionen crossOver () und crossUnder () verwendet. - Offensichtlich sind diese Handelsregeln etwas komplizierter als die einfache Tiefpassfunktion des vorherigen Skripts. So muss Alice sehen, wie die verschiedenen Serien aussehen, um zu überprüfen, ob alles wie angenommen funktioniert. Dies geschieht in den letzten Zeilen des Skripts, die morgen gut durchgehen. Kommerzielles Mitglied Registriert September 2012 141 Beiträge Die folgenden Zeilen am Ende des Skripts sind für die Anzeige der Signalverläufe im Diagramm verantwortlich: plot (quotDominantPeriodquot, LowPeriod, NEW, BLUE) erzeugt ein Diagramm der LowPeriod-Variablen in einem NEUEN Diagrammfenster mit Farbe blau . Wir können die Plot-Funktion verwenden, um entweder im Hauptdiagramm mit dem Preis-und Equity-Kurve oder unter dem Hauptdiagramm in einem neuen Fenster zu plotten. Die Signalkurve und der obere und untere Schwellenwert sind in einem neuen neuen Diagrammfenster aufgetragen: Plot (quotSignalquot, Signal0, NEW, RED) Plot (Threshold1quot, Threshold, 0, BLACK) Plot (Threshold2quot, - Threshold, 0, BLACK) Anweisung stellt den Signal0-Wert als rote Kurve dar (wie wir uns erinnern, eine 0 zu einem Seriennamen gibt seinen jüngsten Wert). Die beiden folgenden Anweisungen zeichnen den positiven und den negativen Schwellenwert mit zwei schwarzen Linien im gleichen Diagrammfenster auf. Note that the plot function always expects a value, not a series - thats why we needed to add the 0 to the Signal name. PlotWidth 1000 PlotHeight1 300 This just sets the width and height of the chart window. Below is the resulting chart. Load the script workshop51 in Zorro and make sure that EURUSD is selected. Click Test, then click Result: The blue curve in the middle window is the plot of LowPeriod . It moves mostly between 30 and 40 bars, corresponding to a 5..7 days dominant cycle. The bottom window shows the Signal series. The black lines are the thresholds that trigger buy and sell signals when Signal crosses over or under them. Plotting variables and series in the chart greatly helps to understand and improve the trade rules. For examining a part of the chart in details, the StartDate and NumDays variables can be used to zoom into a part of the chart. We can see that the highpass filter system generates more than 100 annual return. This is already better than the simple trend trading script still, Alice intends to do more for her fee. Tomorrow well learn how a system can be trained for increasing its robustness and generating more consistent returns. Today well learn how to make a system more robust with training . Training means that strategy parameters are optimized - modified in small steps until the strategy returns stable profits with minimum variance. Which parameters are optimized in which way is determined in the script optimization is thus a part of the strategy. Alice has added some commands to the strategy for parameter optimization (select Workshop52 ): Parameter optimization requires some additional settings at the begin of the script: set(PARAMETERS) BarPeriod 240 LookBack 500 PARAMETERS is a flag - similar to the LOGFILE flag that we know from the last workshop - that tells Zorro to generate and use optimized parameters. LookBack must be set to the worst case lookback time of the strategy. The lookback time is required by the strategy for calculating its initial values before it can start trading. Its usually identical to the maximum time period of functions such as HighPass() or Fisher() . If the lookback time depends on an optimized parameter, Zorro can not know it in advance so we should make it a habit to set it directly through the LookBack variable when we optimize a strategy. In this case we set it at 500 bars to be on the safe side. The signal calculation algorithm now also looks a little different: var Threshold optimize(1, 0.5,2,0.1) Stop optimize(4, 2, 8) ATR(100) Threshold and Stop are now set from the return values of optimize function calls. It is also important now that the line with the Threshold setting comes before the line with the Stop setting in the code. More important parameters should be optimized first, and the most important is Threshold which determines the sensitivity of the strategy and has the largest influence on its profit. For setting Threshold . optimize is called with 4 numbers. The first is the parameter default value, which is 1 - just the value that Threshold had before. The next two numbers, 0.5 and 2 . are the parameter range, i. e. the lower and upper limit of the Threshold variable. The 4th number, which is optional, is the step value to increase the parameter for every optimization run. So Threshold can now have any value from 0.5 to 2 in steps of 0.1 . During the optimization process, Zorro will try to find the most robust value within this range. Alice has also optimized the stop loss distance. The default value is again 4 average candles. Note that the optimize function is only called with 3 parameters here, the step parameter is omitted - in this case Zorro just increases the value by 10 for every optimization step. We only needed to give the step value for the threshold that should be increased in equal steps. Theoretically, there could be even more parameters to optimize - for instance the DominantPeriod cutoff value, or the number of bars for the ATR function, or the Trail distance. But the more parameters we have, and the larger their range is, the higher is the danger of overfitting the strategy. Overfitted strategies perform well in the simulation, but poor in real trading. Therefore only few essential parameters should be optimized, and only within reasonable parameter ranges. Tomorrow well check how training affects the performance and equity curve of the strategy. Commercial Member Joined Sep 2012 141 Posts Alice has used the price data from the last 5 years for optimizing the parameters, and has used the same price data for testing the result This always generates a too optimistic result due to curve fitting bias . It also has a second problem. In 5 years, markets change and trading strategies can become unprofitable. It is not recommended to trade an optimized strategy unchanged for 5 years. Normally the strategy parameters should be re-optimized in regular intervals for adapting them to the current market situation. Zorro can do that automatically while life trading, but how can we simulate this in a test and get some realistic prediction of the real trading behavior The answer is Walk-Forward Optimization . Contrary to its name, its not merely an optimization. Its also a analysis method that tests not only the strategy algorithm, but also its parameter ranges and optimization settings. If a strategy fails in a walk forward analysis, it will also fail in real trading, even if it collected huge profits in a backtest. For this reason, walk forward optimization ( WFO ) is the most important process when developing a strategy or EA - and this lesson today is the most important one for learning strategy development. WFO requires only adding two lines at the begin of the script ( Workshop53 ): NumWFOCycles 10 NumBarCycles 3 The first line activates WFO with a data frame that is shifted in 10 cycles over the simulation period. The frame consists of a training period and a subsequent test, as in the figure below: The training period generates the parameters that are then tested in the subsequent test period. This makes sure that every test uses quotunseenquot price data that was not used for optimizing its parameters - just as it would happen in real trading. The data frame is then shifted over the simulation period for verifiying how the strategy would fare when started at different times. However, theres a problem. Obviously WFO uses less price data than an optimization over the full simulation period. The less trades are simulated in the optimization and test process, the less accurate is the result. For getting more trades per WFO cycle, Alice could use a longer cycle period. Problem is that the markets change over time, so a price curve from 2009 likely requires different strategy parameters than a price curve from 2011. When using more than about one or two years price data for a WFO cycle, the data covers too different market periods, which often makes optimization ineffective. The result is then worse and not better. Therefore, the challenge is not using more data, but getting more trades out of the same data. Because historic price data is available in a much higher resolution than the bar period, a method called Oversampling can be used for increasing the number of trades. The simulation is repeated several times. Every time the bars are resampled with a different offset into the price data. This generates a set of curves with slightly different bars that trigger different trades in every curve, while at the same time maintaining the trends, periodic behavior, and other characteristics of the original price curve. For this Alice has set the NumBarCycles variable to 3 . This runs the simulation three times with resampled bars, and calculates the performance and equity curve from the average of the three simulation cycles. Oversampling can remarkably increase the quality of the optimization process, as well as the accuracy of the test result. Of course, oversampling has a limit - were still using the original prices after all, only the bars are built in a different way. The method does not much improve strategies that are based on very smoothed trend curves, such as for the crossing of two very long-period moving averages. But it works well for strategies that use the high-frequency part of a price curve. And it is another test for the strategy: if it fails with oversampling, it is likely overfitted to the bars of the original price curve. After loading the Workshop53 script, click Train. Training now takes a few minutes because a full optimization is performed for every cycle, and the process is repeated 3 times with oversampling. The optimized parameters are now stored in a different parameter file for every WFO cycle. They are used when you click Test after the optimization process. Tomorrow well check out what WFO has done with Alices strategy. Please ask here is something was unclear or bad explained - this lesson was really important because WFO is the key to successful system development. This is the performance of the WFO-trained strategy - again, depending on the current price data your result might look slightly different: Click Result for getting the chart below: We can see that the test now only covers 3 years 2008 and 2009 are used up for the lookback and training periods. Although the equity curve does not look smooth, the strategy stays profitable with walk forward analysis and oversampling, which constitutes a hard stress test for strategies. Alice concludes that its worth her 12000 fee. When life trading this strategy, it must now be regularly re-trained and adapted to the current market situation, just as in the WFO process. For this, Alice has added the following lines to the script: ReTrain is nonzero when the Train button is clicked during life trading. UpdateDays is the time period for loading new price data from the brokers server in this case new price data is loaded when the price data to be used for optimization is older than 30 days. SelectWFO tells Zorro not to optimize the whole simulation period, but only a certain WFO cycle in this case, the last cycle that contains the new price data. Clicking Train every couple of months will continue the WFO process during trading, and makes the strategy independent of external parameter settings - we have essentially a parameter-free strategy. Can we really expect the projected annual return and average monthly income when we let Zorro trade it this way Maybe in the long run, but well have have long periods, as in 2012, with no profit. Tomorrow well learn how to make strategy returns more steady and reliable so that Bob can really derive a regular income from them. What have we learned so far 9658 The DominantPeriod function returns the main cycle of the price curve. It can be used to control filters or indicators. 9658 The HighPass filter removes the trend from a price curve. 9658 The Fisher transform compresses a curve to a Gaussian distributed range. 9658 The plot function displays the curves of signals and indicators. 9658 The crossOver and crossUnder functions detect the crossing of a curve with a threshold or with another curve. 9658 Optimize parameters for for making a strategy more robust. 9658 Walk Forward Optimization simulates trading under realistic conditions. 9658 Oversampling improves the optimizing quality and and the test accuracy. 9658 WFO trained strategies should be re-trained in regular intervals. Tomorrow well start with portfolio trading. Youll also learn that money management is very different to the usual quottrade only 1 of your accountquot rule. I. TEXT AND MATERIALS Texts . Required (get the latest (i. e. currently published) editions of the following) The Linux Programming Interface: A Linux and UNIX System Programming Handbook, Michael Kerrisk, No Starch Press, 2010 (2 copies on Ready Reserve in Eckhart) C Concurrency in Action: Practical Multithreading. Anthony Williams, Manning Pub. 2012 Online References: Required (these will be referenced in the reading schedule below prefixed by OR-: with ID number) Articles marked Available through the Cluster only are (only) available through the cluster are at OR-1. LMAX - How to Do 100K TPS at Less than 1ms Latency OR-2. What is FIX OR-3. Soft Real Time Programming in Linux 2.6 OR-4. The Evolution of MultiCast OR-5. Trade-Offs between Latency, Complexity, and Load Balancing with Multicast Algorithms Available through the Cluster only OR-6. The Evolution of Multicast: From the Mbone to Interdomain Multicast to Internet2 Deployment Available through the Cluster only OR-7. Gammo et. al. Comparing and Evaluating epoll, select and poll Event Mechanisms OR-8. The Free Lunch is Over: A Fundamental Turn Toward Concurrency in Software. Sutter, Dr. Dobbs Journal, 30(3), March 2005 OR-9. Is the Free Lunch Really Over Scalability in Manycore Systems: Part 1, Michael Wrinn, Intel White Paper Available through the Cluster only OR-10. Is the Free Lunch Really Over Scalability in Manycore Systems: Part 2: Using Locks Efficiently, Michael Wrinn, Intel White Paper Available through the Cluster only OR-11. Intel Threading Building Blocks (TBB) Getting Started Guide OR-12. Intel Threading Building Blocks (TBB) Tutorial Texts : Highly Recommended Ancillary . Practical for Financial Markets. Shetty amp Jayaswal, Apress, 2006 Multicast Sockets: Practical Guide for Programmers. Makofske amp Almeroth, Morgan Kaufman, 2003 Accelerated C: Practical Programming by Example . Koenig and Moo, Addison-Wesley, 2000. Advanced Programming in the UNIX(R) Environment . Richard Stevens, Addison-Wesley, 1992 (2 copies on Ready Reserve in Eckhart) C Templates: The Complete Guide. David Vandevoorde, Addison-Wesley, 2002 Programming with POSIX Threads . Butenhof, Addison-Wesley, 1997 (2 copies on Ready Reserve in Eckhart) Understanding UnixLinux Programming: A Guide to Theory and Practice. Molay, Prentice Hall, 2003 (1 copy on Ready Reserve in Eckhart) UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI (2nd Edition) . Richard Stevens, Prentice Hall, 1998 (2 copies on Ready Reserve in Eckhart) UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition) . Richard Stevens, Prentice Hall, 1999 (2 copies on Ready Reserve in Eckhart) Programming: Principles and Practice Using C . Stroustrup, Addison-Wesley, 2009 (beginners introduction to C programming by lhomme lui-mme) Modern C Design: Generic Programming and Design Patterns Applied. Andrei Alexandrescu, Addison-Wesley, 2001 Standard C IOStreams and Locales: Advanced Programmers Guide and Reference. Langer and Kreft, Addison-Wesley, 2000 C Cookbook, Stephens et. al. OReilly, 2006 C: A Reference Manual (5th Ed.) . Harbison amp Steele Prentice Hall (2002). ISBN: 013089592X Expert C Programming--Deep C Secrets . van der Linden, Prentice Hall (1994). ISBN: 0131774298 Introductory C . Petersen Morgan Kaufmann Publishers ISBN: 0125521421 2nd edition (January 15, 1997) C Programming: A Modern Approach . King W. W. Norton amp Company ISBN: 0393969452 (April 1996) General Unix Programming: Unix Systems Programming . Robbins amp Robbins, Prentice Hall, 2003 Managing Projects with Make . Andy Oram and Steve Talbott, OReilly, 1991 Unix Systems Programming with SVR 4 . David Curry, OReilly, 1996 Linux Socket Programming By Example . Warren Gay Pthreads Programming . Nichols et. al, OReilly, 1996 The Unix Programming Environment . Kernighan amp Pike, Prentice Hall, 1984 Advanced Unix Programming . Rochkind, Prentice Hall, 1985 Interprocess Communications in UNIX: The Nooks amp Crannies . Gray, Prentice Hall, 1988 Unix Distributed Programming . Brown, Prentice Hall, 1994 Power Programming with RPC . Bloomer, OReilly, 1992 Using C on the UNIX System . Curry, OReilly, 1989 Learning the UNIX Operating System. 4 th Edition . Peek, et. al. Orielly, 1997 A Practical Guide to Linux . Mark Sobell, Addison-Wesley, 1997 Portable Shell Programming . Bruce Blinn, Prentice Hall, 1996 UNIX Power Tools . Peek et. al. OReilly, 1993 Learning the Bash Shell, 2nd. Ed. . Newham amp Rosenblatt, OReilly, 1998 General Operating Systems . Modern Operating Systems, 2nd. Ed. . Tanenbaum, Prentice Hall, 2001 Operating System Concepts . 5th Ed. . Silberschatz amp Galvin, Addison-Wesley, 1998 UNIX Internals: The New Frontiers . Vahalia, Prentice Hall, 1996 UNIX Internals: A Practical Approach . Pate, Addison-Wesley, 1996 1. Knowledge of C or C is required as you will be actively coding in one or both of these languages. If you do not know C, knowledge of C is sufficient as long as there is some exposure to some object-oriented programming language, such as Java, C, Objective C, CLOS, Smalltalk, Scala, or Ruby, etc. 2. All students should have taken the CSPP Unix Bootcamp or the MacLab Unix Course prior to the first day of class (or have the requirement waived). Those who have not completed this requirement will need approval of the instructor, which will most likely not be granted unless you can demonstrate substantial experience working in a Unix environment. CSPP 51081 will prove invaluable. Although not required, trading experience, or experience working in the financial industry either in a technical or business capacity is a definite plus but is not required. III COURSE DESCRIPTION This course will focus on three general goals: (a) the operation of exchange trading systems at a high level, (b) real world computational issues in trading systems and their communication with exchanges, and (c) the implementation details in actually developing an exchange trading system in computer software. We will accomplish these goals by having lectures that (a) focus on the technological strategies in implementation, lectures that (b) focus more on relevant system functionality, as well as (c) guest lectures from industry leaders who will offer a greater breadth in the overall landscape of trading systems and exchange systems operations. Specifically, this course is designed to give students hands-on implementation experience in designing and building a functioning trading system in C and C using state-of-the-art tools and environments. Students will work collaboratively in developing an exchange platform that implements the fundamental lifecycle of client-to-exchange communication, namely: Order Receipt, Order Matching, Market Data Broadcast, Order Book Management Strategy, and Trade Notification. The course structure will be a combination of lecture and laboratory where students will implement a functioning (albeit primitive) equity exchange known as The University of Chicago Equities Exchange, or UCEE (pronounced 8220You See8221), with a focus on trading equity shares (students are free to provide additional support in their implementations for commodities, options, etc. if they feel ambitious, although only equity trading support is required). Students will form self-organized development teams (approved by faculty) and the teams will compete with one another in creating their teams UCEE system in code. For the implementation, we will focus on developing an exchange platform for the processing of equity trades. Issues in distributed systems development will be addressed. Students will learn how to implement the various exchange workflows including an Order-Matching Engine, BroadcastMulticast Engine, and Data Exchange and Management. The implementation will be based on technical and functional lectures and accompanying laboratores that focus on fundamental enabling technologies including advanced signals, parent and child process management, and advanced socket management including multicast socket communication. In addition, both UDP vs. TCP processing will be covered, along with Multithreading vs. Multiprocessing strategies, advanced issues in POSIX multithreading and synchronization, POSIX Interprocess Communication with a focus on shared memory and sempahores, and IO multiplexing. Other topics relevant to tradingexchange system development will be discussed as needed and as time permits. Lectures will alternate between technicalcapability instruction and functional discription of system components as well as guest lectures on related topics from exchange members, system developers, traders, and others directly involved in trading systems operations and execution on a day-to-day basis. Because of the time constraints of a quarter system, we cannot address certain operational aspects of a real-world exchange. Therefore, broader ancillary topics pertaining to the larger lifecycles of equity markets including Straight Through Processing, Clearing and Settlement, Equity Arbitrage and HFTShort-Term Algorithmic Trading will also be addressed, time permitting. There will be no expectation that any implementations will support these operational aspects. IV. LEARNING OBJECTIVES Upon completion of this course students will: A. Understand fundamental concepts and terminology around trading and exchange systems and their development. B. Understand the various tools and techniques available for creating real world high speedlow latency trading systems. C. Understand the fundamentals of the components required in the functioning a real world financial exchange. D. Understand the various tradeoffs in the architecture and design of trading systems. E. Understand in detail the core facilities used in trading and exchange systems development, including shared memory, multithreaded design, semaphores, mutexes, message queues, socket protocols and connectivity, etc. F. Become familiar with socket programming using the Berkeley socket API using C, including multicast G. Become familiar with multithreading strategies in CC Unix development V. ACADEMIC INTEGRITY Students are expected to have read and understood the Universitys policy on Academic Integrity. This policy is detailed in the Student Manual of University Policies and Regulations, available online at uchicago. edudocsstudentmanual. VI. METHOD OF INSTRUCTION Methods include lecture and laboratory assignments. VII. OTHER COURSE INFORMATION No formal attendance taken. There may be information presented in class that is not in the texts. You will be responsible for all information discussed in class and assigned in the required readings. If you miss an exam or quiz, you will need to speak with the instructor ASAP . Prepare for unhappiness. Students are expected to read the assigned texts before class in order to be able to full participate in the discussions. VIII. METHOD OF EVALUATING STUDENT PROGRESS Assigned work will be evaluated as follows: NB: The end of the quarter is the time at which the final grade you have earned through your work in the quarter is recorded with the registrar. It is not the time at which you begin negotiations with Professor Shacklette for ad hoc extra credit opportunities. There is no extra credit offered in this course, either at the beginning or at the end. If you are disatisfied with the grade you have earned at the end of the quarter, your only options will be to retake the course the next time it is offered, or accept the grade you earned. The due dates for labs are on the syllabus schedule below. All labs are required. Lab assignments, when completed, should be tarballed up into a single gzipped tarball and sent to the instructors. The instructors will post instructions on submitting labs. Each student will work individually (NOT in teams) on the laboratory assignments. For each part of the lab assignment there are detailed descriptions of what you should turn in. You should include ALL supporting files (source files, data files, etc.) as attachments to the submission email (a single message). Please send only UNIX-readable (text) files unless you are including supporting designother files, in which case you may submit that aspect of your submission in native format, for example, visio diagrams, omnigraffle diagrams, excel spreasheets, etc. All work is evaluated and graded on the LINUX CLUSTER (i. e. not solaris, hpux, irix, aix, etc.) FAILURE TO PROVIDE AND DELIVER TO THE GRADERS ALL SCRIPTS, ALL COMMANDS, AND ALL SUPPORTING FILES, TEXT OR SOURCE, YOU USED TO DELIVER AND PRODUCE THE SOLUTION WILL RESULT IN A LOSS OF POINTS. IF THE GRADERS, WORKING SOLELY ON THE LINUX CLUSTER, CANNOT REPRODUCE YOUR SOLUTION OR ANY PART OF YOUR SOLUTION FROM THE SET OF INFORMATION YOU PROVIDE, YOU WILL LOSE PARTIAL OR FULL CREDIT. Note: Labs are due as scheduled below. All assignments are due as specified on this syllabus and supporting lab pages. Students who turn in work late, regardless of the reason, will receive 1 point off from the first day the assignment is due (calculated as the first 24 hour period following the due date and time), and continuing for 5 days. Assignments turned in more than 6 days late from the original due date will not be accepted and the student will receive a 0 on the assignment. ALL late deliveries, regardless of cause, including, but not limited to, acts of God, war, riot, embargoes, acts of civil or military authority, terrorism, fire, flood, tsumami, earthquakes, hurricanes, typhoons, tropical storms or other natural disasters, fiber cuts, strikes, shortages in transportation, facilities, fuel, energy, labor or materials, failure of the telecommunications or information services infrastructure, hacking, SPAM, or any failure of a computer, server or software, including Y2K errors or omissions, the common cold, the flu, asthema, stomach flu, work, work travel, family, childcare, golf, badminton, cricket, croquet, dodgeball, football (soccer), lacrosse, other sporting events, vacation, and other life-related exigencies and necessities, while fortunate or unfortunate as the case may be, will still incur the penalty. It is assumed that you will have plenty of time to work on each assignment, and that an individual penalty or two will have little overall effect on a students final grade, unless lateness is chronic or other grades are poor, in which case, of course, the penalty will be more cumbersome. If you are late with a delivery and therefore receive a penalty (which you will if you are late for any reason) and its an isolated incident and the rest of your work is excellent, the penalty should be innocuous. The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material. The instructor also reserves the right to curve grades if he deems it in the best interest of the majority of students. IX. COURSE SCHEDULE NB: The Instructor reserves the right to alter the schedule as class progress dictates. The following abbreviations reference the following works: Common emacs commands (cheat sheet): Ctrl-x-f. To open a file (Hold down Control Key and then type x followed by f (still holding down the Control Key)) Ctrl-x-s: To save a file Ctrl-x-c: To close Emacs (All buffers) Ctrl-x 2: To split buffer horizontally Ctrl-x 3: To split buffer vertically Ctrl-x 1: To close all the buffers except current Ctrl-x 0: To close the current buffer M-x. To enter a command M-x compile: To compile M-x gdb: GNU Debugger Meta Key (M-) Cheat: Under Linux: the Esc key Under Windows: the Alt key Under MacOs it should be the Command key. GNU Emacs Manual (pdf) Boston University Emacs Programming Guide for C Supplemental Reading (in no particular order) Mastering Regular Expressions . Jeffrey E. F. Friedl (OReilly amp Assoc. 1997, ISBN: 1-56592-257-3). An thorough discussion of an inexhaustible subject. Learning the UNIX Operating System . 4 th Edition, Jerry Peek, Grace Todino amp John Strang (Orielly amp Associates, 1997, ISBN: 1-56592-390-1) A virtual Cliffs Notes for the Unix Operating System. Using C on the UNIX System . David A. Curry (OReilly amp Assoc. 1985, ISBN: 0-937175-23-4). A good introduction to C programming on Unix. Learning GNU Emacs . Debra Cameron amp Bill Rosenblatt (OReilly amp Assoc. 1991, ISBN: 0-937175-84-6). A good introduction to emacs. UNIX for the Impatient, Paul W. Abrahams amp Bruce R. Larson (Addison-Wesley Publishing Company, 1992, ISBN 0-201-55703-7). Good, clear coverage of the utilities, recommended for Unix beginners. UNIX in a Nutshell: A Desktop Quick Reference for System V amp Solaris 2.0 (OReilly amp Associates, Inc. 1992, ISBN 0-56592-001-5). A handy reference for SysV and Solaris 2. When You Cant Find Your UNIX System Administrator . Linda Mui (OReilly amp Associates, Inc. 1995, ISBN 1-56592-104-6). The title says it all. UNIX Power Tools . Jerry Peek, Tim OReilly, and Mike Loukides (OReilly amp Associates, 1993, ISBN 0-679-79073-X). An excellent compendium of tricks of the masters, written for beginners and intermediates. Includes a CDROM of useful software. Exploring the UNIX System . Stephen G. Kochan amp Patrick H. Wood (SAMS, a division of Macmillan Computer Publishing, 1989, ISBN 0-8104-6268-0).(OUT OF PRINT) Learning GNU Emacs . Debra Cameron and Bill Rosenblatt (OReilly amp Associates, 1992, ISBN 0-937175-84-6). Unix Shell Programming . Stephen G. Kochan amp Patrick H. Wood (Hayden Book Co. 1990, ISBN 0-8104-6309-1). The classic on shell programming. The third edition is available at amazon The Unix C Shell Field Guide . Gail Anderson and Paul Anderson (Prentice Hall, 1986, ISBN 0-13-937468-X). A Students Guide to UNIX . Harley Hahn. (McGraw-Hill, 1993, ISBN 0-07-025511-3). This, and its almost identical sister, Open Computings Unix Unbound (same author and publisher), is an excellent aid for beginners. Hahns wry humor runs throughout. Tricks of the UNIX Masters . Russell G. Sage (Howard W. Sams amp Co. Inc. 1987, ISBN 0-672-22449-6). Unix System V: A Practical Guide . Mark Sobell (BenjaminCummings, 1995, ISBN 0805375678) (A classic) Unix Network Programming, Volume 1: Networking APIs: Sockets and XTI . Richard Stevens (Prentice Hall, 1998, ISBN 013490012X) The definitive work on Unix Sockets Unix Network Programming, Volume 2: Interprocess Communication . Richard Stevens(Prentice Hall, 1999, ISBN 0130810819) The definitive work on IPC. Applied Unix Programming, Volume 2 . Bharat Kurani (Prentice Hall, 1997, ISBN 0133043460) The Unix C Library Reference Manual, includes C Library, math library, socket library, transport library, and internet library. Advanced Programming in the Unix Environment . Richard Stevens (Addison-Wesley, 1992, ISBN: 0201563177). A practical guide to the theory of sockets and IPC on Unix. The C Programming Language . Brian Kernighan and Dennis Ritchie (Prentice Hall, 1988, ISBN 0131103626). The definitive tutorial on the C Programming Language. Pointers on C . Kenneth Reek (Addisson-Wesley, 1998, ISBN 0673999866). A good introduction to the C Programming Language. C: A Reference Manual, Fourth Edition . Harbinson and Steele (Prentice Hall, 1995, ISBN 0133262243). A good reference manual for the C langugage. Absolute Beginners Guide to C . Greg Perry (Sams, 1994, ISBN 0672305100). One of the easiest avenues into C Programming in print. Practical C Programming, Third Edition . Steve Oualline (OReilly, 1997, ISBN 1565923065). A good tutorial on C, and one of the few that assumes you might be using GNU tools as opposed to Microsofts. Design of the Unix Operating System . Maurice Bach (Prentice Hall, 1986, ISBN 0132017997). Perhaps the best general discussion of the details of the Unix Operating System. Unix Internals: The New Frontiers . Uresh Vahalia (Prentice Hall, 1996, ISBN 0131019082). A newer discussion of the details of Unix, published 10 years after Bachs book. Unix Internals: A Practical Approach . Steve Pate (Addison-Wesley, 1996, ISBN 020187721X). A good and readable discussion of the details of the Unix kernel. The Linux Kernel Book . Card, et. al. (Wiley, 1998, ISBN 0471981419). A good book which concentrates on the particularities of the Linux Kernel code itself. A gentle tour through the kernels source code. The book comes with a CD for RedHat 5.0, whose kernels code is examined throughout the book.

No comments:

Post a Comment