Tuesday 3 October 2017

Gebäude A Trading System In C #


Ich habe eine Handelsanwendung in WPF erstellt. Für die ich mich für seinen schäbigen Blick schäme, da er nicht beeindruckend ist. Ich möchte jetzt die Benutzeroberfläche für meine Anwendung neu zu gestalten, und machen es ähnlich wie ein Beispiel Screenshot einer Handels-Anwendung Kann jemand bitte Ratschläge, was Pfad sollte ich folgen, um eine Benutzeroberfläche von ähnlicher Art, zB. Wenn es eine Open-Source-C WPF-Anwendung, die einen ähnlichen Look and Feel hat, das wäre großartig. Oder wenn es eine Bibliothek mit coolen Listenansicht, Bildlaufleiste und Fortschrittsbalken gibt. PS: Ich habe kein Microsoft-Mischpult Sie können es als Vorschlag nicht eine Antwort genau nennen. Aber die Entsendung für diejenigen, die neu sind, um WPF und Lernen Bildschirmdesign oder Muster. Nach meiner Erfahrung mit WPF kann ich sagen, zuerst bekommen Sie Hände schmutzig lernen, wie verbindlich funktioniert, denn das ist die Basis der WPF. Simpler Weg zu lernen, wie verbindlich funktioniert lernen, wie man Kontrollen mit anderen Kontrollen zu binden. Dann verwenden Sie einfache Klassen und lernen MVVM. Weiter gehen für die Befehlsbindung innerhalb MVVM Perimeter. Halten Sie das Prisma bis zum letzten, denn Sie brauchen ein gutes Verständnis von verbindlichen Mechanismen, Befehle, MVVM und mehr zu verstehen, PRISM. Danach haben Sie eine Vorstellung davon, wie diese Dinge zusammenarbeiten und wird Ihnen helfen, herauszufinden, wie man mit Daten und Bildschirm zusammen spielen und Design schöne Bildschirme. Auch hier keine Antwort auf die obige Frage. Nur Vorschläge für diejenigen, die WPF lernen und landeten hier auf der Suche nach WPF UI-Gestaltung. Wir haben bisher die grundlegenden Komponenten der Handelssysteme, die Kriterien, die sie zu erfüllen haben, und einige der vielen empirischen Entscheidungen, die a. Diskutiert haben System-Designer müssen. In diesem Abschnitt werden wir untersuchen, den Prozess des Aufbaus eines Handelssystems, die Überlegungen, die gemacht werden müssen, und einige wichtige Punkte zu erinnern. Der Six-Step-Systemaufbau 1. Setup - Um mit dem Aufbau eines Handelssystems zu beginnen, benötigen Sie mehrere Dinge: Data - Weil der Systemdesigner umfangreiche Backtests durchführen muss. Vergangenheit ist wichtig für den Aufbau eines Handelssystems. Solche Daten können in die Handelssystem-Entwicklungssoftware oder als separater Daten-Feed integriert werden. Live-Daten werden oft für eine monatliche Gebühr zur Verfügung gestellt, während ältere Daten kostenlos erhalten werden können. Software - Obwohl es möglich ist, ein Handelssystem ohne Software zu entwickeln, ist es höchst unpraktisch. Seit den späten 90er Jahren ist Software ein integraler Bestandteil des Baus von Handelssystemen. Einige allgemeine Merkmale ermöglichen dem Händler, die folgenden Schritte auszuführen: Automatische Platzierung von Trades - Dies erfordert oft eine Genehmigung vom Broker s Ende, da eine ständige Verbindung zwischen Ihrer Software und dem Brokerage vorhanden sein muss. Trades müssen sofort und zu genauen Preisen ausgeführt werden, um die Konformität zu gewährleisten. Um Ihre Software Ort Trades für Sie, alles, was Sie tun müssen, ist die Eingabe der Kontonummer und Passwort, und alles andere erfolgt automatisch. Bitte beachten Sie, dass die Verwendung dieser Funktion strikt optional ist. Code ein Handelssystem - Diese Software-Funktion implementiert eine proprietäre Programmiersprache, die Ihnen erlaubt, Regeln leicht zu erstellen. MetaTrader verwendet beispielsweise MQL (MetaQuotes Language). Heres ein Beispiel für seinen Code zu verkaufen, wenn freie Marge weniger als 5.000 ist: Wenn FreeMargin lt 5000, dann beenden Häufig, nur das Lesen des Handbuchs und Experimentieren sollten Sie auf die Grundlagen der Sprache abrufen, die Ihre Software verwendet. Backtest Ihre Strategie - Systementwicklung ohne Backtesting ist wie Tennisspielen ohne Schläger. System-Entwicklungssoftware enthält oft eine einfache Backtesting-Anwendung, die Ihnen erlaubt, eine Datenquelle, Eingangskonto-Informationen und Backtest für jede Menge Zeit mit dem Klicken einer Maus zu definieren. Hier ein Beispiel aus MetaTrader: Nachdem der Backtest ausgeführt wurde, wird ein Bericht erstellt, der die Besonderheiten der Ergebnisse umreißt. Dieser Bericht enthält in der Regel Gewinn, Anzahl der un / erfolgreichen Trades, aufeinander folgenden Tage nach unten, Anzahl der Trades, und viele andere Dinge, die hilfreich sein können, wenn Sie versuchen, festzustellen, wie das Problem zu beheben oder zu verbessern. Schließlich erzeugt die Software üblicherweise ein Diagramm, das das Wachstum der Investition während des gesamten getesteten Zeitraums zeigt. 2. Design - Das Design ist das Konzept hinter Ihrem System, die Art und Weise, wie die Parameter verwendet werden, um ein Ergebnis oder Verlust zu generieren. Sie implementieren diese Regeln und Parameter durch Programmierung. Manchmal kann diese Programmierung automatisch über eine grafische Benutzeroberfläche erfolgen. Dadurch können Sie Regeln erstellen, ohne eine Programmiersprache zu lernen. Hier ist ein Beispiel für ein gleitendes Durchschnitts-Crossover-System: Wenn SMA (20) CrossOver EMA (13) dann geben, wenn SMA (20) CrossUnder EMA (13) dann Regeln wie diese, die in Code gesetzt werden, erlauben die Software automatisch Generieren Ein-und Ausgänge an den Punkten, wenn die Regeln anwendbar sind. Hier ist, was die Design-Schnittstelle sieht auf MetaTrader: Das System wird erstellt, indem Sie einfach die Regeln in das Fenster und speichern Sie sie. Referenzen für die verschiedenen verfügbaren Funktionen (zB Oszillatoren und dergleichen) finden Sie, indem Sie auf das Buchsymbol klicken. Die meisten Software wird eine ähnliche Referenz entweder im Programm selbst oder auf ihrer Website zur Verfügung. Nachdem Sie die gewünschten Regeln erstellt und das System kodiert haben, speichern Sie die Datei einfach. Dann können Sie es verwenden, indem Sie es auf dem Hauptbildschirm. 3. Entscheidungsfindung - Es gibt viele Entscheidungen an diesem Punkt getroffen werden: Welchen Markt möchte ich in 13 handeln Welche Zeitspanne sollte ich verwenden 13 Welche Preisreihe sollte ich 13 Welche Teilmenge von Aktien sollte ich zum Testen zu halten In Dass Handelssysteme in vielen Märkten konsequent einen Gewinn erzielen sollten. Indem Sie die Zeitperiode und die Preisreihe zu viel besonders anfertigen, können Sie die Resultate verfärben und uncharacteristic results.4 produzieren. Praxis - Backtesting und Papierhandel sind entscheidend für die erfolgreiche Entwicklung eines Handelssystems: Führen Sie mehrere Backtests zu unterschiedlichen Zeiträumen durch und stellen Sie sicher, dass die Ergebnisse konsistent und zufriedenstellend sind. Papierhandel das System (verwenden imaginären Geld, sondern zeichnen die Geschäfte und Ergebnisse), und wieder auf der Suche nach konsistenten Rentabilität. Carefully auf Fehler im Programm oder unbeabsichtigte Trades zu überprüfen. Dies kann auf fehlerhafte Programmierung oder das Nichtvorhersehen bestimmter Umstände zurückzuführen sein, die unerwünschte Auswirkungen haben. 5. Wiederholen - Wiederholung ist erforderlich. Halten Sie die Arbeit an dem System, bis Sie konsequent einen Gewinn in den meisten Märkten und Bedingungen. Es gibt immer unvorhergesehene Ereignisse, die auftreten, sobald ein System in Betrieb geht. Hier sind einige Faktoren, die oft zu verzerrten Ergebnissen führen: Transaktionskosten - Stellen Sie sicher, dass Sie die reale Provision verwenden. Und einige zusätzliche, um ungenaue Fills Rechnung zu tragen (Differenz zwischen Bid - und Ask-Preisen). Mit anderen Worten, vermeiden Schlupf (Um zu überprüfen, was dies ist und wie es auftritt, siehe vorherigen Abschnitt dieses Tutorials.) Watchfulness - Dont ignorieren, verlieren Trades ein Auge auf alle Trades. Optimization - Dont über-Optimierung des Systems. Mit anderen Worten, nicht maßgeschneiderte das System zu einem sehr spezifischen Marktumfeld versuchen, in einer möglichst breiten Umgebung wie möglich rentabel sein. Risiko - niemals ignorieren oder vergessen Sie das Risiko. Es ist sehr wichtig, Wege, um Verluste zu begrenzen (sonst bekannt als Stop-Verluste), und Möglichkeiten, um Lock-in Gewinne (nehmen Sie Gewinne). 6. Handel - Probieren Sie es aus, aber erwarten Sie unbeabsichtigte Ergebnisse. Achten Sie darauf, nicht-automatisierten Handel verwenden, bis Sie sicher sind, in der System-Performance und Konsistenz. Es dauert eine lange Zeit, um ein erfolgreiches Handelssystem zu entwickeln, und bevor Sie es perfekt, müssen Sie einige Leerverkäufe Verluste erleben, um Fehler zu erkennen: Back-Tests können nicht perfekt darstellen Live-Markt-Bedingungen und Papierhandel kann ungenau sein. Wenn Ihr System Geld verliert, gehen Sie zurück zum Reißbrett und sehen, wo es schief gelaufen ist (siehe Schritt 5). Fazit Diese sechs Schritte geben Ihnen einen Überblick über den gesamten Prozess des Aufbaues eines Handelssystems. Im nächsten Abschnitt werden wir auf diesem Wissen aufbauen und einen tiefergehenden Einblick in die Fehlerbehebung und Modifikation nehmen. Trading Systems: Troubleshooting und Optimierung Subscribe to News Für die neuesten Erkenntnisse und Analysen verwenden Nur ein Computer-Wissenschaftler youre in der perfekten Position, um im algorithmischen Handel zu beginnen. Dies ist etwas, was ich aus erster Hand bei Quantiacs 1. Zeuge, wo Wissenschaftler und Ingenieure sind in der Lage, direkt in automatisierte Handel ohne vorherige Erfahrung zu springen. Mit anderen Worten, Programmierung Koteletts sind die wichtigsten Zutaten benötigt, um loszulegen. Um ein allgemeines Verständnis davon zu bekommen, welche Herausforderungen Sie nach / während der Erstellung eines algorithmischen Handelssystems erwarten, schauen Sie sich diese Quora Post an. Der Aufbau eines Handelssystems von Grund auf erfordert etwas Hintergrundwissen, eine Handelsplattform, Marktdaten und Marktzugang. Während nicht eine Anforderung, die Auswahl einer einzigen Handelsplattform, die die meisten dieser Ressourcen bietet Ihnen helfen, schnell aufstehen. Davon abgesehen, werden die Fähigkeiten, die Sie entwickeln, übertragbar sein, um jede Programmiersprache und fast jede Plattform. Ob Sie es glauben oder nicht, Gebäude automatisierte Handelsstrategien ist nicht auf eine Markt-Experte. Nichtsdestotrotz, Lernen grundlegenden Marktmechanismen werden Ihnen helfen, entdecken Sie profitablen Handel Strategien. Optionen, Futures und andere Derivate von John C. Hull - Great erste Buch für die Eingabe von quantitativen Finanzen, und nähert es von der Mathematik-Seite. Quantitative Trading von Ernie Chan - Ernie Chan bietet das beste Einführungsbuch zum quantitativen Handel und führt Sie durch den Prozess der Erstellung von Handelsalgorithmen in MATLAB und Excel. Algorithmischer Handel von Futures via Machine Learning - Eine 5-seitige Aufteilung der Anwendung eines einfachen Maschinenlernmodells auf häufig verwendete technische Analyseindikatoren. Heres eine aggregierte Leseliste PDF mit einer vollständigen Aufschlüsselung der Bücher, Videos, Kurse und Handelsforen. Der beste Weg zu lernen ist, indem Sie, und im Falle der automatisierten Handel, die auf Charting und Codierung kommt. Ein guter Ausgangspunkt sind vorhandene Beispiele für Handelssysteme und bestehende Exponate technischer Analysetechniken. Darüber hinaus hat ein erfahrener Informatiker die zusätzliche Kante des in der Lage, maschinelles Lernen auf algorithmischen Handel anzuwenden. Hier sind einige dieser Ressourcen: TradingView - Eine fantastische visuelle Charting-Plattform auf eigene, TradingView ist ein großer Spielplatz für immer bequem mit der technischen Analyse. Es hat den zusätzlichen Vorteil, dass Sie Skript Handel Strategien und durchsuchen andere Völker Handel Ideen. Automated Trading Forum - Große Online-Community für Entsendung Anfänger Fragen und Antworten finden zu gemeinsamen quant Fragen, wenn gerade erst begonnen. Quant-Foren sind ein großartiger Ort, um in Strategien, Werkzeuge und Techniken eintauchen. YouTube-Seminar über Handelsideen mit Arbeitscodebeispielen auf Github. Maschinelles Lernen: Weitere Vorträge zum automatisierten Handel finden Sie im Quantiacs Quant Club. Die meisten Menschen aus einem wissenschaftlichen Hintergrund (ob das ist Informatik oder Ingenieurwesen) haben Exposition gegenüber Python oder MATLAB, die zufällig beliebte Sprachen für quantitative Finanzen. Quantiacs hat eine Open-Source-Toolbox geschaffen, die Backtesting und 15 Jahre historische Marktdaten kostenlos zur Verfügung stellt. Der beste Teil ist, dass alles auf Python und MATLAB gebaut ist, was Ihnen die Wahl, was Sie Ihr System zu entwickeln. Heres eine Beispieltrend-folgende Handelsstrategie in MATLAB. Dies ist der gesamte Code, der benötigt wird, um ein automatisiertes Handelssystem auszuführen, das sowohl die Leistung von MATLAB als auch die Quantiacs Toolbox darstellt. Quantiacs können Sie 44 Futures und alle Aktien des SampP 500 handeln. Darüber hinaus werden eine Vielzahl zusätzlicher Bibliotheken wie TensorFlow unterstützt. (Disclaimer: Ich arbeite bei Quantiacs) Sobald du bereit bist, Geld als Quant zu machen, kannst du dich dem neuesten Quantiacs automatisierten Trading Contest anschließen, mit insgesamt 2,250,000 Investitionen: Kannst du mit den besten Quants konkurrieren 12,2k Views middot View Upvotes Middot Nicht für die Reproduktion Diese Antwort wurde komplett neu geschrieben Hier sind 6 wichtigsten Wissensbasis für den Bau algorithmischen Handelssysteme. Sie sollten mit allen von ihnen vertraut sein, um effektive Handelssysteme zu bauen. Einige der verwendeten Begriffe können etwas technisch sein, aber Sie sollten in der Lage sein, sie durch Googeln zu verstehen. Hinweis: (Die meisten davon) gelten nicht, wenn Sie Hochfrequenztrading machen wollen. Markttheorien Sie müssen verstehen, wie der Markt funktioniert. Insbesondere sollten Sie verstehen, Markt Ineffizienzen, Beziehungen zwischen verschiedenen Vermögenswerten / Produkten und Preisverhalten. Trading-Ideen ergeben sich aus Markt-Ineffizienzen. Sie müssen wissen, wie zu bewerten Markt-Ineffizienzen, die Ihnen einen Handel Rand gegenüber denen, die nicht. Die Entwicklung effektiver Roboter beinhaltet das Verständnis, wie automatisierte Handelssysteme funktionieren. Im Wesentlichen besteht eine algorithmische Handelsstrategie aus 3 Kernkomponenten: 1) Einträge, 2) Exits und 3) Positionsbelegung. Sie müssen diese 3 Komponenten in Bezug auf die Markt-Ineffizienz, die Sie erfassen (und nein, dies ist kein einfacher Prozess) zu entwerfen. Sie müssen nicht wissen, erweiterte Mathematik (obwohl es hilft, wenn Sie mehr komplexe Strategien zu bauen). Gute kritische Denken Fähigkeiten und ein menschenwürdiges greifen auf Statistiken nehmen Sie sehr weit. Design beinhaltet Backtesting (Prüfung auf Handelskante und Robustheit) und Optimierung (Maximierung der Performance bei minimaler Kurvenanpassung). Youll müssen wissen, wie ein Portfolio von algorithmischen Handelsstrategien zu verwalten. Strategien können komplementär oder widersprüchlich sein, was zu ungeplanten Erhöhungen der Risikoexponierung oder unerwünschten Absicherungen führen kann. Kapitalzuteilung ist auch wichtig, teilen Sie Kapital gleichmäßig in regelmäßigen Abständen oder belohnen Sie die Gewinner mit mehr Kapital Wenn Sie wissen, welche Produkte Sie handeln möchten, finden Sie geeignete Handelsplattformen für diese Produkte. Dann lernen Sie die Programmiersprache API dieser Plattform / backtesters. Wenn Sie anfangen, würde ich Quantopian (nur Aktien), Quantconnect (Aktien und FX) oder Metatrader 4 (FX und CFDs auf Aktienindizes, Aktien und Rohstoffe) empfehlen. Die verwendeten Programmiersprachen sind Python, C und MQL4. 4. Datenmanagement Müll in Müllabfuhr. Ungenaue Daten führen zu ungenauen Prüfergebnissen. Wir benötigen vernünftig saubere Daten für genaues Testen. Reinigungsdaten sind ein Kompromiss zwischen Kosten und Genauigkeit. Wenn Sie genauer Daten benötigen, müssen Sie mehr Zeit (Zeit Geld) putzen. Einige Probleme, die dirty Daten verursachen, schließen fehlende Daten, doppelte Daten, falsche Daten (schlechte Ticks) ein. Andere Probleme, die zu irreführenden Daten führen, umfassen Dividenden, Aktiensplits und Futures-Rollovers etc. 5. Risikomanagement Es gibt zwei Hauptrisikomarken: Marktrisiko und operationelles Risiko. Marktrisiken beinhalten Risiken im Zusammenhang mit Ihrer Handelsstrategie. Betrachtet es die Worst-Case-Szenarien Was ist, wenn ein schwarzer Schwan Ereignis wie World War 3 passiert Haben Sie abgesichert unerwünschte Risiken Ist Ihre Position Sizing zu hoch Neben der Verwaltung von Marktrisiken, müssen Sie betrachten das operationelle Risiko. Systemabstürze, Verlust der Internetverbindung, schlechter Ausführungsalgorithmus (führen zu schlecht ausgeführten Preisen oder verpasste Trades aufgrund der Unfähigkeit, Requotes / hoher Schlupf zu behandeln) und Diebstahl von Hackern sind sehr reale Probleme. 6. Live-Ausführung Backtesting und Live-Trading sind sehr unterschiedlich. Sie müssen richtige Makler wählen (MM vs STP vs ECN). Forex Market News mit Forex Trading Foren amp Forex Broker Bewertungen ist Ihr bester Freund, lesen Broker Bewertungen gibt. Sie benötigen eine ordnungsgemäße Infrastruktur (sichere VPN - und Downtime-Handhabung usw.) und Evaluierungsverfahren (Überwachung Ihrer Roboterleistung und Analyse in Bezug auf Marktinaktivität / Backtests / OP-Timisierungen), um Ihren Roboter während seiner gesamten Lebensdauer zu verwalten. Sie müssen wissen, wann Sie eingreifen (ändern / aktualisieren / shutdown / t urn auf Ihren Robotern) und wenn nicht auf. Evaluation und Optimierung von Handelsstrategien Pardo (Große Einblicke in Methoden zum Aufbau und zum Testen von Handelsstrategien) Tragen Sie Ihren Weg zu finanzieller Freiheit ein Van K Tharp (Lächerlich-Click-Köder beiseite, dieses Buch ist ein großer Überblick zu mechanischen Handelssystemen) Quantitative Trading Ernest Chan (Große Einführung in algo Handel auf einer Retail-Ebene.) Handel und Börsen: Markt-Mikrostruktur für Praktiker Larry Harris (Markt-Mikrostruktur ist die Wissenschaft, wie der Austausch funktioniert und was tatsächlich passiert, wenn ein Handel platziert wird. Es ist wichtig, diese Informationen zu kennen Auch wenn Sie gerade erst anfangen) Algorithmic Trading amp DMA Barry Johnson (Shed Licht auf Banken Ausführung Algorithmen. Dies ist nicht direkt anwendbar Ihre Algo Handel, aber es ist gut zu wissen) The Quants Scott Patterson (Kriegsgeschichten von einigen Top-Quants Grundlagen der Algo Trading AlgoTrading101 (Disclaimer: Ich besitze diese Seite / Kurs. Lernen Sie Roboterentwurfstheorien, Markttheorien und Kodierung. Verwendet MQL4) - Join the challenge (Learn Trading-Konzepte und Backtesting-Theorien. Sie haben vor kurzem ihre eigene Backtesting-und Handelsplattform entwickelt, so dass dieser Teil ist noch neu für mich. Aber ihre Wissensbasis auf Handelskonzepte sind gut.) Empfohlene Blogs / Foren (diese Einschließlich Finanz-, Handels - und Algo-Handelsforen): Empfohlene Programmiersprachen: Wenn Sie wissen, welche Produkte Sie handeln möchten, finden Sie geeignete Handelsplattformen für diese Produkte. Dann lernen Sie die Programmiersprache API dieser Plattform / backtesters. Wenn Sie anfangen, würde ich Quantopian (nur Aktien), Quantconnect (Aktien und FX) oder Metatrader 4 (FX und CFDs auf Aktienindizes, Aktien und Rohstoffe) empfehlen. Die verwendeten Programmiersprachen sind Python, C und MQL4. 10.9k Views middot View Upvotes middot Nicht für die Reproduktion Obwohl dies ein sehr breites Thema mit Verweisen auf Gebäude-Algorithmen, Einstellung Infrastruktur, Asset Allocation und Risikomanagement, aber ich werde nur auf den ersten Teil der Arbeit auf den Bau unseres eigenen Algorithmus konzentrieren , Und das Richtige tun. 1. Aufbau der Strategie. Einige der wichtigsten Punkte, die hier zu beachten sind: Catch Big Trends - eine gute Strategie muss in allen Fällen, Geld verdienen, wenn der Markt trends. Märkte gehen mit einem guten Trend, der nur 15-20 der Zeit dauert, aber dies ist die Zeit, wenn alle Katzen und Hunde (Händler aus allen Zeitrahmen, intraday, täglich, wöchentlich, langfristig) sind einkaufen und sie alle Haben ein gemeinsames Thema. Viele Händler bauen auch mittlere Reversionsstrategien, in denen sie versuchen, die Bedingungen zu beurteilen, wenn der Preis weit von dem Mittelwert entfernt ist, und nehmen einen Handel gegen den Trend, aber sie sollten gebaut werden, wenn Sie erfolgreich gebaut haben und gehandelt einige gute Tendenz nach Systemen . Chancen zu stapeln - Die Menschen arbeiten oft auf den Versuch, ein System, das ein ausgezeichnetes Gewinn / Verlust-Verhältnis hat, aber that039s nicht der richtige Ansatz zu bauen. Zum Beispiel ein Algo mit einem Sieger von 70 mit einem durchschnittlichen Gewinn von 100 pro Handel und einem durchschnittlichen Verlust von 200 pro Handel wird nur 100 pro 10 Trades (10 / Trade net). Aber ein Algo mit einem Sieger von 30 mit einem durchschnittlichen Gewinn von 500 pro Handel und Verlust von 100 pro Handel wird einen Nettogewinn von 800 für 10 Trades (80 / Handel) zu machen. So ist es nicht notwendig, dass Gewinn / Verlust-Verhältnis gut sein sollte, eher es039s die Chancen zu stapeln, die besser sein sollte. Dies geht durch die Aussage quitKeep Verluste klein, aber lassen Sie Ihre Gewinner runquot. Wenn Sie investieren, ist was bequem ist selten profitable. quot - Robert Arnott Drawdown - Drawdown ist unvermeidlich, wenn Sie jede Art von Strategie folgen. So während der Gestaltung eines algo don039t versuchen, den Drawdown zu reduzieren oder einige spezielle benutzerdefinierte Zustand zu kümmern, dass Drawdown zu nehmen. Diese spezifische Bedingung kann in Zukunft als eine Straßensperre beim Fangen einer großen Tendenz fungieren und Ihr algo kann schlecht durchführen. Risikomanagement - Beim Aufbau einer Strategie sollten Sie immer ein Ausfahrtstor haben, unabhängig vom Markt. Der Markt ist ein Ort der Chancen und Sie müssen ein Algo Design, um Sie aus einem Handel so schnell wie möglich, wenn es doesn039t passen Ihre Risiko-Appetit. Normalerweise wird es argumentiert, dass Sie 1-2 von Kapital in jedem Handel riskieren müssen und ist in einer Vielzahl von Möglichkeiten optimal, wie auch wenn Sie arnd 10 falschen Handel in Folge erhalten Ihr Kapital wird nur um 20 zu sinken. Aber das ist nicht die Fall in tatsächlichen Marktszenario. Einige verlierende Trades werden zwischen 0 und 1 liegen, während manche auf 3-4 gehen können. Daher ist es besser, das durchschnittliche Verlustkapital pro Trade und das maximale Kapital, das man in einem Trade verlieren kann, zu definieren, da die Märkte völlig zufällig sind und nicht beurteilt werden können . Egal, einmal in eine Weile, der Markt etwas so dumm macht es Ihnen den Atem weg. Quot - Jim Cramer 2. Testing und Optimierung einer Strategie Slippage. Wenn wir eine Strategie auf historische Daten testen, gehen wir davon aus, dass die Bestellung zu dem von dem Algo angekündigten vordefinierten Preis ausgeführt wird. Aber das wird nie der Fall sein, da wir mit Market Maker und HFT Algo039s jetzt zu tun haben. Ihre Bestellung in today039s Welt wird nie auf den gewünschten Preis ausgeführt werden, und es wird Schlupf. Dies muss in die Prüfung einbezogen werden. Marktwirkung: Das durch den Algo gehandelte Volumen ist ein weiterer wichtiger Faktor, der bei der Durchführung von Rücktests und der Erhebung historischer Ergebnisse zu berücksichtigen ist. Da das Volumen steigt, werden die Aufträge von algo erhebliche Auswirkungen auf den Markt haben und der durchschnittliche Preis der gefüllten Bestellung wird sehr unterschiedlich sein. Ihre Algo produzieren komplette Ergebnisse in tatsächlichen Marktbedingungen, wenn Sie nicht studieren die Lautstärke Dynamik Ihre Algo hat. Optimierung: Die meisten Händler schlagen Sie vor, nicht Kurvenanpassung und über Optimierung zu tun und sie sind korrekt, da die Märkte eine Funktion der gelegentlichen Variablen sind und keine zwei Situation wird immer die selben sein. So optimieren Parameter für bestimmte Situationen ist eine schlechte Idee. Ich würde Ihnen empfehlen, für Zonal Optimization zu gehen. Es ist eine Technik, der ich folgen, kaufen Identifizierungszonen, die ähnliche Merkmale in Bezug auf die Volatilität und Volumen haben. Optimieren Sie diese Bereiche separat, anstatt optimieren für den gesamten Zeitraum. Die oben genannten sind einige der grundlegendsten und wichtigsten Schritte, die ich folgen, bei der Umwandlung eines grundlegenden Gedanken in einen Algorithmus und Überprüfung it039s Gültigkeit. Jeder hat das brainpower, der Börse zu folgen. Wenn Sie es durch fünfte Klasse Mathematik gemacht haben, können Sie es tun. Peter Lynch 14.5k Ansichten middot Ansicht Upvotes middot Nicht für Fortpflanzung Um mit den Grundlagen zu beginnen, erhalten Sie einen Halt von Amibroker (AmiBroker - Download). Amibroker hat eine leicht zu erlernende Sprache und leistungsstarke Backtest-Engine, wo Sie Prototypen Ihre Ideen. Auch bekommen Howard Bandy 039s Buch Quantitative Trading Systems. Dieses Buch ist eine wirklich gute Einführung in die Konzepte der Quantentwicklung. Sie müssen auch mindestens ein grundlegendes Wissen der Statistik. Es gibt viele gute MOOC-Kurse für diese kostenlos. Wie diese Statistik One - Princeton University Coursera It039s auch wert folgende The Whole Street. Die ein Mashup aller großen Blogs ist, von denen viele den Amibroker-Code mit ihren Ideen veröffentlichen. Von dort, it039s dann lohnt es sich Python (lernen Python - Google Suche), und auch dabei Andrew Ng039s ausgezeichnet Stanford University Machine Learning-Kurs, der kostenlos läuft auf Coursera. Wenn Sie dann Ihre eigenen Algorithmen zum Test setzen möchten, sind gute Aufstellungsorte dafür Quantconnect oder Quantopian. Schließlich hat dieser Kerl einige gute Ratschläge, um es in Ihre Karriere zu verwandeln. Www. quantstart / Viel Glück mit der Reise Teilweise genommen von Alan Clement039s Antwort auf Wie kann ein Softwareentwickler in der Finanzierung ein Quant-Entwickler werden 14.4k Ansichten middot Ansicht Upvotes middot Nicht für Reproduktion Da ich ein Informatik-Absolvent bin, der ein Ultrahochfrequenz-Handelssystem von Grund auf gebaut hat, denke ich, dass ich Programmiererperspektive zu einigen wirklich fantastischen Antworten hinzufügen kann, auf wie man ein algorithmisches Handelssystem aufbauen kann. Es gibt nur 3 Hauptblöcke in einem Algo Trading System (ATS) 1. Marktdaten-Handler (zB FAST-Handler) 2. Strategie-Modul (zB crossOver-Strategie) 3. Order Router (zB FIX Router) können Sie Risk Module entweder hinzufügen Das Strategy Module oder das Order Router Module oder beides. So lange Ihr Datenfluss ist richtig, sollten Sie gut zu gehen. Denken Sie daran, wenn Sie die Gestaltung eines ATS für minimale Latenz, indem mehr Schichten oder Komplexität erhöht es. Minimal ATS-Architektur Und wenn Sie die Glocken und Pfeifen hinzufügen, würde es ein wenig komplex: Wenn Sie sich auch für die nitty-gritty der Umsetzung der oben genannten Architektur interessiert sind, sollten Sie die folgenden Dinge im Auge behalten. Vermeiden Sie Schlösser / Mutexes. Wenn Sie es verwenden müssen, versuchen Sie es durch lockless Strukturen mit Atomkernen ersetzen. Es gibt mehrere Bibliotheken für locklose Datenstrukturen (z. B. libcds, Concurrency-Kit usw.). C-11 unterstützt std :: atomar. Und Sie sollten danach streben, sie zu benutzen. Wenn Sie eine geringe Latenz anstreben, vermeiden Sie, was in QuickFIX gemacht wird. Seine geschrieben für Sicherheit / Flexibilität / Wiederverwendbarkeit als Objekt (Sperren) Erstellung und Vernichtung wird für jeden Aufruf einer Nachricht an den Router durchgeführt. Sicherlich keine Möglichkeit, eine Latenz sensible Code schreiben. Keine Laufzeitspeicherbelegung. Laufzeitpfad sollte maßgeschneiderte und sperrenfreie Speicherverwaltung mit vorab zugewiesenem Speicherpool verwenden. Die gesamte Initialisierung kann in Konstruktoren durchgeführt werden. Feste Verbindung. Threading-Modell, I / O-Modell und Speicher-Management sollte so konzipiert, zusammen zu arbeiten, um eine optimale Gesamtleistung zu erzielen. Dies geht gegen das OOP-Konzept der losen Kopplung, aber es ist notwendig, um Laufzeitkosten des dynamischen Polymorphismus zu vermeiden. Verwenden Sie Vorlagen. In der gleichen Vene, würde ich auch vorschlagen, dass Sie auf C-Templatierung, um Flexibilität des Codes zu erreichen. Mit so viel neue Funktionen hinzugefügt, um Vorlagen in c11, wäre es ein Verbrechen, es nicht für mehr Flexibilität zu verwenden. OS / Hardware-Optimierung: Schließlich sollten Sie mit Linux RT Kernel und Solarflare Netzwerkkarte mit OpenOnLoad Treiber für minimale Latenz arbeiten zu arbeiten. Können Sie weiter schauen, um die CPU zu isolieren und führen Sie Ihr Programm auf, dass bestimmte Kern. Wenn niedrige Latenz nicht das ist, was Sie anstreben, gibt es Varianten von ATS-Ressourcen frei verfügbar auf dem Netz, z. B. QuickFIX (C), Marketcetera (Java). Viele andere Anbieter bieten auch Backtesting und Trading-Modul, die eng mit ihren eigenen Backends gekoppelt sind. Beliebte sind Quantconnect, Quantiacs, Interactive Broker, Wealth Lab, TradeStation und AmiBroker. Quantopian verwendet Zipline, die eine Open-Source-Python-basierte Bibliothek ist, und wird immer beliebter. Auf der anderen Seite gibt es keinen besseren Weg zu lernen, als selbst zu bauen. Having said that, wenn Sie beginnen, von Grund auf zu bauen, während Sie viel lernen, aber Sie werden auch am Ende verbringen viel Zeit (paar Monate). Und wenn Sie bereit sind, Ihre Zeit zu investieren, würde ich Ihnen auch raten, die Nuancen von ATS und algorithmischen Handel im Allgemeinen zu lernen, bevor Sie ein solches System zu bauen. In der Tat haben einige meiner Studenten vor kurzem ihre eigenen Handelssysteme erstellt - www. quantinsti / blog / e. . Falls es interessant klingt, können Sie www. quantinsti / epat / für mehr Details. 1.1k Views middot Ansicht Upvotes middot Nicht für ReproductionBest Programmiersprache für algorithmische Handelssysteme Von Michael Halls-Moore am 26. Juli 2013 Eine der häufigsten Fragen, die ich in der QS-Mail-Tasche erhalten ist Was ist die beste Programmiersprache für algorithmischen Handel. Die kurze Antwort ist, dass es keine beste Sprache. Strategieparameter, Leistung, Modularität, Entwicklung, Resiliency und Kosten müssen berücksichtigt werden. Dieser Artikel wird skizzieren die notwendigen Komponenten einer algorithmischen Handelssystemarchitektur und wie Entscheidungen über die Umsetzung beeinflussen die Wahl der Sprache. Zuerst werden die Hauptkomponenten eines algorithmischen Handelssystems betrachtet, wie die Forschungsinstrumente, der Portfoliooptimierer, der Risikomanager und die Ausführungsmaschine. Anschließend werden verschiedene Handelsstrategien untersucht und auf die Gestaltung des Systems eingegangen. Insbesondere werden die Handelshäufigkeit und das voraussichtliche Handelsvolumen diskutiert. Sobald die Handelsstrategie ausgewählt worden ist, ist es notwendig, das gesamte System zu gestalten. Dies beinhaltet die Wahl der Hardware, des Betriebssystems und der Systemresistenz gegenüber seltenen, potentiell katastrophalen Ereignissen. Während die Architektur in Erwägung gezogen wird, muss auf die Leistung - sowohl auf die Forschungsinstrumente als auch auf die Live-Ausführungsumgebung - geachtet werden. Was ist das Handelssystem zu tun, bevor die Entscheidung über die beste Sprache, mit der ein automatisiertes Handelssystem zu schreiben, ist es notwendig, die Anforderungen zu definieren. Ist das System wird rein Ausführungsbasis Will das System erfordern ein Risikomanagement oder Portfolio-Bau-Modul Wird das System erfordern eine leistungsstarke Backtester Für die meisten Strategien kann das Handelssystem in zwei Kategorien aufgeteilt werden: Forschung und Signal-Generierung. Die Forschung befasst sich mit der Bewertung einer Strategieleistung gegenüber historischen Daten. Der Prozess der Bewertung einer Handelsstrategie gegenüber früheren Marktdaten wird als Backtesting bezeichnet. Die Datengröße und die algorithmische Komplexität werden einen großen Einfluss auf die Rechenintensität des Backtests haben. CPU-Geschwindigkeit und Parallelität sind oft die begrenzenden Faktoren bei der Optimierung der Durchführungsgeschwindigkeit. Die Signalerzeugung betrifft die Erzeugung eines Satzes von Handelssignalen aus einem Algorithmus und das Senden solcher Befehle an den Markt, üblicherweise über eine Vermittlung. Für bestimmte Strategien ist ein hohes Leistungsniveau erforderlich. I / O-Probleme wie Netzwerkbandbreite und Latenz sind oft der limitierende Faktor bei der Optimierung von Ausführungssystemen. So kann die Wahl der Sprachen für jede Komponente Ihres gesamten Systems ganz anders sein. Art, Häufigkeit und Umfang der Strategie Die Art der verwendeten algorithmischen Strategie hat erhebliche Auswirkungen auf die Gestaltung des Systems. Es wird notwendig sein, die Märkte zu betrachten, die gehandelt werden, die Konnektivität zu externen Datenanbietern, die Häufigkeit und das Volumen der Strategie, der Kompromiss zwischen der Leichtigkeit der Entwicklung und der Leistungsoptimierung sowie jegliche benutzerdefinierte Hardware einschließlich der gemeinsamen Sitzung Server, GPUs oder FPGAs, die erforderlich sein könnten. Die Technologieentscheidungen für eine niederfrequente US-Aktienstrategie werden sich weitgehend von denen eines hochfrequenten statistischen Arbitrage-Strategiehandels auf dem Futures-Markt unterscheiden. Vor der Wahl der Sprache müssen viele Datenanbieter ausgewertet werden, die sich auf die vorliegende Strategie beziehen. Es wird notwendig sein, die Konnektivität zu dem Anbieter, die Struktur von beliebigen APIs, die Aktualität der Daten, die Speicheranforderungen und die Ausfallsicherheit in Anbetracht eines Offline-Vendors zu prüfen. Es ist auch ratsam, schnellen Zugriff auf mehrere Anbieter zu haben. Verschiedene Instrumente haben alle ihre eigenen Speicherquirks, wobei Beispiele davon mehrere Tickersymbole für Aktien und Verfallsdaten für Futures (ganz zu schweigen von spezifischen OTC-Daten) umfassen. Dies muss in der Plattform-Design berücksichtigt werden. Häufigkeit der Strategie ist wahrscheinlich einer der größten Treiber, wie der Technologie-Stack definiert werden. Strategien, die Daten häufiger als minutiös oder sekundär verwenden, erfordern eine beträchtliche Betrachtung hinsichtlich der Leistung. Eine Strategie, die zweite Balken überschreitet (d. H. Tick-Daten), führt zu einem leistungsgetriebenen Design als die primäre Anforderung. Für Hochfrequenzstrategien muss eine erhebliche Menge an Marktdaten gespeichert und ausgewertet werden. Software wie HDF5 oder kdb werden häufig für diese Rollen verwendet. Um die umfangreichen Datenmengen für HFT-Anwendungen zu verarbeiten, muss ein ausgereiftes Backtester - und Ausführungssystem eingesetzt werden. C / C (möglicherweise mit einigen Assembler) ist wahrscheinlich der stärkste Sprachkandidat. Ultra-Hochfrequenz-Strategien wird fast sicher erfordern benutzerdefinierte Hardware wie FPGAs, Austausch Co-Location und kernal / network interface tuning. Forschungssysteme Forschungssysteme umfassen typischerweise eine Mischung aus interaktiver Entwicklung und automatisiertem Scripting. Ersteres findet oft in einer IDE wie Visual Studio, MatLab oder R Studio statt. Letztere umfassen umfangreiche numerische Berechnungen über zahlreiche Parameter und Datenpunkte. Dies führt zu einer Sprachauswahl, die eine einfache Umgebung zum Testen von Code bereitstellt, aber auch eine ausreichende Leistung bietet, um Strategien über mehrere Parameterabmessungen auszuwerten. Typische IDEs in diesem Bereich sind Microsoft Visual C / C, das umfangreiche Debugging-Dienstprogramme, Code-Completion-Fähigkeiten (über Intellisense) und einfache Übersichten über den gesamten Projektstapel (über die Datenbank ORM, LINQ) MatLab enthält. Die für umfangreiche numerische lineare Algebra und vectorized Operationen, sondern in einer interaktiven Konsole Weise R Studio. Die die statistische Sprachkonsole R in einer vollwertigen IDE-Eclipse-IDE für Linux-Java und C und semi-proprietären IDEs wie Enthought Canopy für Python, die Datenanalyse-Bibliotheken wie NumPy enthalten, umschließt. SciPy Scikit-lernen und Pandas in einer einzigen interaktiven (Konsolen-) Umgebung. Für das numerische Backtesting sind alle obigen Sprachen geeignet, obwohl es nicht notwendig ist, eine GUI / IDE zu verwenden, da der Code im Hintergrund ausgeführt wird. Die Hauptbetrachtung in diesem Stadium ist die der Ausführungsgeschwindigkeit. Eine kompilierte Sprache (wie C) ist oft nützlich, wenn die Dimension des Backtesting-Parameters groß ist. Denken Sie daran, dass es notwendig ist, von solchen Systemen vorsichtig zu sein, wenn dies der Fall ist. Interpretierte Sprachen wie Python nutzen oft Hochleistungsbibliotheken wie NumPy / Pandas für den Backtesting-Schritt, um einen vernünftigen Grad an Wettbewerbsfähigkeit mit zusammenzustellen Äquivalente. Letztlich wird die für das Backtesting gewählte Sprache durch spezifische algorithmische Bedürfnisse sowie die Bandbreite der in der Sprache verfügbaren Bibliotheken bestimmt (weiter unten). Die Sprache, die für die Backtester - und Forschungsumgebungen verwendet wird, kann jedoch vollständig unabhängig von denjenigen sein, die im Portfolioaufbau, in den Risikomanagement - und Ausführungskomponenten verwendet werden, wie zu sehen ist. Portfolio-Konstruktion und Risikomanagement Die Komponenten des Portfoliokonstruktions - und Risikomanagements werden von den Handelspartnern oft übersehen. Das ist fast immer ein Fehler. Diese Instrumente bieten den Mechanismus, durch den das Kapital erhalten bleibt. Sie versuchen nicht nur, die Anzahl der riskanten Wetten zu lindern, sondern auch die Abwanderung der Trades selbst zu minimieren und so die Transaktionskosten zu senken. Ausgefeilte Versionen dieser Komponenten können erhebliche Auswirkungen auf die Qualität und Wirtschaftlichkeit der Rentabilität haben. Es ist unkompliziert, eine stabile Strategie zu schaffen, da der Portfoliokonstruktionsmechanismus und der Risikomanager einfach modifiziert werden können, um mehrere Systeme zu behandeln. Sie sollten daher zu Beginn des Entwurfs eines algorithmischen Handelssystems als wesentliche Komponenten betrachtet werden. Die Aufgabe des Portfolio-Bau-System ist es, eine Reihe von gewünschten Trades zu nehmen und produzieren die Menge der tatsächlichen Trades, minimieren churn, halten Exposures zu verschiedenen Faktoren (wie Sektoren, Asset-Klassen, Volatilität etc.) und optimieren die Zuweisung von Kapital an verschiedene Strategien in einem Portfolio. Portfolio-Konstruktion reduziert oft auf eine lineare Algebra Problem (wie eine Matrix-Faktorisierung) und damit die Leistung ist stark abhängig von der Wirksamkeit der numerischen linearen Algebra-Implementierung zur Verfügung. Gemeinsame Bibliotheken sind uBLAS. LAPACK und NAG für C. MatLab besitzt auch umfangreich optimierte Matrixoperationen. Python nutzt NumPy / SciPy für solche Berechnungen. Ein häufig ausgeglichenes Portfolio erfordert eine kompilierte (und gut optimierte) Matrixbibliothek, um diesen Schritt auszuführen, um das Handelssystem nicht zu verkleinern. Das Risikomanagement ist ein weiterer äußerst wichtiger Bestandteil eines algorithmischen Handelssystems. Das Risiko kann in vielen Formen auftreten: Erhöhte Volatilität (obwohl dies für bestimmte Strategien als wünschenswert angesehen werden kann), erhöhte Korrelationen zwischen Assetklassen, Gegenpartei-Default, Serverausfällen, Black Swan-Ereignissen und unentdeckten Bugs im Handelscode wenige. Risikomanagementkomponenten versuchen, die Effekte einer übermäßigen Volatilität und Korrelation zwischen den Assetklassen und ihren nachfolgenden Auswirkungen auf das Handelskapital vorwegzunehmen. Oft reduziert dies auf eine Reihe von statistischen Berechnungen wie Monte Carlo Stresstests. Dies ist sehr ähnlich zu den rechnerischen Bedürfnissen einer Derivate-Preis-Engine und als solche CPU-gebunden werden. Diese Simulationen sind sehr parallelisierbar (siehe unten) und bis zu einem gewissen Grad ist es möglich, Hardware auf das Problem zu werfen. Ausführungssysteme Die Aufgabe des Ausführungssystems besteht darin, gefilterte Handelssignale von den Portfolio-Bau - und Risikomanagementkomponenten zu empfangen und an eine Brokerage oder andere Mittel des Marktzugangs zu senden. Für die Mehrheit der Einzelhandel algorithmischen Handelsstrategien beinhaltet dies eine API oder FIX-Verbindung zu einem Brokerage wie Interactive Brokers. Die primären Erwägungen bei der Entscheidung über eine Sprache beinhalten die Qualität der API, die Verfügbarkeit von Sprachverpackungen für eine API, die Ausführungshäufigkeit und den erwarteten Schlupf. Die Qualität der API bezieht sich darauf, wie gut sie dokumentiert ist, welche Art von Leistung sie bereitstellt, ob sie auf eine eigenständige Software zugreifen muss oder ob ein Gateway kopflos aufgebaut werden kann (d. h. keine GUI). Michael Hallen-Moore Mike ist der Gründer von QuantStart und hat in der quantitativen Finanzindustrie in den letzten fünf Jahren in erster Linie als Quant Entwickler und später als Quant Trader Beratung für Hedge-Fonds beteiligt.

No comments:

Post a Comment