Thursday, 14 September 2017

Django Handelssystem


Forex Trading Diary 1 - Automatisierte Forex Trading mit der OANDA API. I zuvor erwähnt in der QuantStart 2014 In Review Artikel, dass ich würde einige von 2015 schreiben über automatisierte Forex Trading. Gibt, dass ich selbst in der Regel Forschung in Aktien und Futures-Märkte , Ich dachte, es wäre lustig und pädagogisch, über meine Erfahrungen des Eintritts in den Forex-Markt im Stil eines Tagebuchs zu schreiben. Jeder Tagebucheintrag wird versuchen, auf all jenen zu bauen, aber sollte auch relativ selbstbehalten werden. In diesem ersten Eintrag Des Tagebuchs Ich werde beschreiben, wie man ein neues Praxis-Brokerage-Konto mit OANDA sowie wie man eine grundlegende multithreaded ereignisgesteuerte Trading-Engine, die automatisch ausgeführt werden kann Trades in einer Praxis und Live-Einstellung. Last Jahr verbrachten wir ein Viel Zeit mit Blick auf den ereignisgesteuerten Backtester in erster Linie für Aktien und ETFs Diejenige, die ich unten präsentiere, ist auf Forex ausgerichtet und kann sowohl für den Papierhandel als auch für den Handel verwendet werden. Ich habe alle folgenden Anweisungen für Ubuntu 14 04 geschrieben, aber Sie sollten leicht auf Windows oder Mac OS X mit einer Python-Distribution wie Anaconda übersetzen Die einzige zusätzliche Bibliothek, die für die Python-Trading-Engine verwendet wird, ist die Anforderungsbibliothek, die für die Kommunikation mit der OANDA API notwendig ist. Da dies der erste Post direkt ist Über den Devisenhandel, und der unten dargestellte Code kann einfach an ein Live-Handelsumfeld angepasst werden. Ich möchte die folgenden Haftungsausschlüsse vorstellen. Disclaimer Trading Devisen am Rande tragen ein hohes Risiko und ist möglicherweise nicht für alle Anleger geeignet Die Wertentwicklung in der Vergangenheit ist kein Hinweis auf zukünftige Ergebnisse Der hohe Grad an Hebelwirkung kann sowohl gegen Sie als auch für Sie arbeiten. Bevor Sie sich entscheiden, in Devisen zu investieren, sollten Sie sorgfältig Ihre Anlageziele, Erfahrungsstand und Risikobereitschaft berücksichtigen. Die Möglichkeit besteht, dass Sie können Halten Sie einen Verlust von einigen oder alle Ihrer ursprünglichen Investition und deshalb sollten Sie nicht Geld investieren, dass Sie sich nicht leisten können, Sie zu verlieren Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel und suchen Beratung von einem unabhängigen Finanzberater, wenn Sie irgendwelche haben Zweifel. Diese Software wird zur Verfügung gestellt, wie es ist und alle ausdrücklichen oder stillschweigenden Garantien, einschließlich, aber nicht beschränkt auf die implizierten Garantien der Marktgängigkeit und Eignung für einen bestimmten Zweck sind ausgeschlossen In keinem Fall sind die Regenten oder Mitwirkenden haftbar für direkte, indirekte , Beiläufige, besondere, vorbildliche oder Folgeschäden, einschließlich, aber nicht beschränkt auf die Beschaffung von Ersatzgütern oder Dienstleistungen Verlust von Nutzung, Daten oder Gewinne oder Betriebsunterbrechung verursacht jedoch und auf jegliche Art von Haftung, ob im Vertrag, strenge Haftung, Oder unerlaubter Handlung, die fahrlässig oder anderweitig in irgendeiner aus der Benutzung dieser Software entstanden ist, auch wenn sie über die Möglichkeit eines solchen Schadens informiert werden. Ein Konto bei OANDA einstellen. Die erste Frage, die in den Sinn kommt, ist, warum OANDA einfach nach einem Bit of Googeln um für Forex-Broker, die APIs hatte, sah ich, dass OANDA vor kurzem eine ordnungsgemäße REST-API veröffentlicht hatte, die leicht von fast jeder Sprache in einer äußerst unkomplizierten Weise kommuniziert werden konnte. Nach dem Lesen durch ihre Entwickler-API-Dokumentation habe ich beschlossen, ihnen ein Versuche, zumindest mit einem Praxis-Account. Um klar zu sein - ich habe keine vorherige oder bestehende Beziehung mit OANDA und bin nur die Bereitstellung dieser Empfehlung auf der Grundlage meiner begrenzten Erfahrung rund um mit ihrer Praxis-API und einige kurze Nutzung für Marktdaten-Download, während beschäftigt Ein Fonds zuvor Wenn jemand über irgendwelche anderen Forex-Broker, die auch eine ähnlich moderne API haben, dann wäre ich froh, ihnen einen Blick als gut. Before Nutzung der API ist es notwendig, sich für ein Praxis-Konto Um dies zu tun, Kopf zum Anmelde-Link Sie sehen den folgenden Bildschirm. OANDA Anmelde-Screen. Sie können dann sich mit Ihren Anmeldeinformationen anmelden. Achten Sie darauf, die Registerkarte fxTradePractice aus dem Anmelde-Screen. OANDA anmelden zu wählen Screen. Once in Sie müssen eine Notiz von Ihrem Konto-ID Es ist unterhalb der schwarzen My Funds Header neben Primary Mine ist eine 7-stellige Zahl aufgeführt Darüber hinaus müssen Sie auch ein persönliches API-Token zu generieren Um dies zu tun klicken Verwalten Sie den API-Zugriff unterhalb der Registerkarte Andere Aktionen unten links. In diesem Stadium können Sie ein API-Token generieren. Sie benötigen den Schlüssel zur späteren Verwendung, also stellen Sie sicher, dass Sie es auch aufschreiben. Sie wollen nun starten Die FXTrade Praxis Anwendung, die es uns ermöglichen, die ausgeführten Aufträge und unsere Papier Gewinn Verlust zu sehen. Wenn Sie ein Ubuntu-System laufen, müssen Sie eine etwas andere Version von Java installieren Vor allem die Oracle-Version von Java 8 Wenn Sie don T tue dies dann die Praxis Simulator wird nicht aus dem Browser Ich lief diese Befehle auf meinem System. Sie werden nun in der Lage sein, die Praxis Trading-Umgebung starten Zurück zum OANDA Armaturenbrett und klicken Sie auf die grüne hervorgehoben Start FXTrade Praxis Link Es wird zu bringen Ein Java-Dialog, in dem Sie gefragt werden, ob Sie es ausführen möchten. Klicken Sie auf Ausführen und das fxTrade Practice-Tool lädt Mine auf ein 15-minütiges Kerzen-Diagramm von EUR USD mit dem Zitat-Panel auf der linken Seite. OANDA fxTrade Practice-Bildschirm. An diesem Punkt sind wir bereit Um mit dem Entwerfen und Kodieren unseres automatisierten Devisenhandelssystems gegen die OANDA API zu beginnen. Über die Trading Architecture. Wenn Sie die ereignisgesteuerte Backtester-Serie für Aktien und ETFs verfolgt haben, die ich letztes Jahr erschaffen habe, werden Sie sich bewusst sein, wie ein solches Ereignis - getriebene Handelssystem-Funktionen Für diejenigen von Ihnen, die neu zu ereignisgesteuerten Software sind, würde ich dringend vorschlagen, durch den Artikel zu lesen, um einen Einblick in, wie sie arbeiten zu gewinnen. Im Wesentlichen wird das gesamte Programm in einem infinte while-Schleife ausgeführt Nur beendet, wenn das Handelssystem abgeschaltet wird Der zentrale Kommunikationsmechanismus des Programms wird über eine Warteschlange gegeben, die Ereignisse enthält. Die Warteschlange wird ständig abgefragt, um nach neuen Ereignissen zu suchen. Sobald ein Ereignis aus der Warteschlange genommen wurde, muss es sein Von einem geeigneten Bestandteil des Programms gehandhabt So könnte ein Marktdaten-Feed TickEvent s erzeugen, die auf die Warteschlange gestellt werden, wenn ein neuer Marktpreis eintrifft. Ein signalgenerierendes Strategieobjekt könnte OrderEvent s erzeugen, die an eine Brokerage geschickt werden sollen Eines solchen Systems ist gegeben durch die Tatsache, dass es nicht darum geht, welche Reihenfolge oder Arten von Ereignissen auf die Warteschlange gestellt werden, da sie immer korrekt von der richtigen Komponente innerhalb des Programms behandelt werden. Zusätzlich können verschiedene Teile des Programms sein Laufen in separaten Threads, was bedeutet, dass es nie irgendwelche warten auf eine bestimmte Komponente vor der Verarbeitung von anderen Dies ist äußerst nützlich in algorithmischen Handelssituationen, wo Marktdaten-Feed-Handler und Strategie-Signal-Generatoren haben erheblich unterschiedliche Leistungsmerkmale. Die wichtigsten Trading-Schleife ist durch die gegeben Nach Python-Pseudocode. Wie wir oben angegeben haben, läuft der Code in einer Endlosschleife Zuerst wird die Warteschlange abgefragt, um ein neues Ereignis abzurufen Wenn die Warteschlange leer ist, startet die Schleife nach einer kurzen Schlafperiode, die als Herzschlag bekannt ist Event wird festgestellt, dass seine Art beurteilt wird und dann das entsprechende Modul entweder die Strategie oder der Ausführungsbearbeiter aufgefordert wird, das Ereignis zu behandeln und eventuell neue zu generieren, die auf die Warteschlange zurückgehen. Die grundlegenden Komponenten, die wir für unser Handelssystem schaffen, sind Die folgenden. Streaming-Preis-Handler - Dies wird eine langwierige Verbindung offen für OANDAs-Server und senden Tick-Daten dh Bid fragen über die Verbindung für alle Instrumente, die wir interessiert in. Strategy Signal Generator - Dies wird eine Folge von Tick-Veranstaltungen Und verwenden sie, um Handelsaufträge zu generieren, die von der Ausführungshandler ausgeführt werden. Execution Handler - nimmt einen Satz von Auftragsereignissen und führt sie dann blind mit OANDA. Events aus - Diese Objekte bilden die Nachrichten, die auf der Ereignis-Warteschlange weitergegeben werden Erfordern zwei für diese Implementierung, nämlich den TickEvent und den OrderEvent. Main Entry Point - Der Haupteingangspunkt umfasst auch die Trade Loop, die die Message Queue kontinuierlich abfragt und Nachrichten an die richtige Komponente sendet. Dies wird oft als Event Loop oder Event Handler bezeichnet. Wir werden jetzt diskutieren die Umsetzung des Codes im Detail Am unteren Rand des Artikels ist die vollständige Auflistung aller Quellcode-Dateien Wenn Sie sie in das gleiche Verzeichnis platzieren und Python laufen, werden Sie mit der Erstellung von Aufträgen beginnen, vorausgesetzt, Sie haben Ihre ausgefüllt Konto-ID und Authentifizierungstoken von OANDA. Python Implementation. It ist schlechte Praxis, um Passwörter oder Authentifizierungsschlüssel innerhalb einer Codebasis zu speichern, wie Sie niemals vorhersagen können, wer wird schließlich erlaubt, Zugriff auf ein Projekt In einem Produktionssystem würden wir diese Anmeldeinformationen als Umgebungsvariablen speichern Mit dem System und dann abfragen diese envvars jedes Mal, wenn der Code reeployed Dies stellt sicher, dass Passwörter und auth-Token sind nie in einem Versionskontrollsystem gespeichert. Jedoch, da wir nur daran interessiert sind, ein Spielzeug-Handelssystem zu bauen, und sind nicht mit der Produktion beschäftigt Details in diesem Artikel werden wir stattdessen diese Auth-Token in eine Einstellungsdatei trennen. In der folgenden Konfigurationsdatei haben wir ein Wörterbuch namens ENVIRONMENTS, das die API-Endpunkte für die OANDA-Preisstreaming-API und die Handels-API speichert. Jedes Unterverzeichnis enthält drei separate API-Endpunkte reale Praxis und Sandbox. Die Sandbox-API ist rein zum Testen von Code und für die Überprüfung, dass es keine Fehler oder Bugs gibt es nicht die Uptime-Garantien der Real-oder Praxis-APIs Die Praxis-API, im Wesentlichen bietet die Möglichkeit, Papier Handel Das ist, es bietet alle Features der realen API auf einem simulierten Praxis-Account Die echte API ist nur, dass - es ist Live-Handel Wenn Sie diesen Endpunkt in Ihrem Code verwenden, wird es gegen Ihre Live-Kontostand handeln EXTREM SORGFÄLTIG. WICHTIG Beim Handel mit der Praxis API erinnern, dass eine wichtige Transaktionskosten, die der Markt Auswirkungen nicht berücksichtigt wird Da keine Trades tatsächlich in die Umwelt platziert werden, müssen diese Kosten in anderer Weise an anderer Stelle mit einem Markt Auswirkungen Modell berücksichtigt werden, wenn Sie es wünschen Um die Leistung zu realisieren. Im Folgenden nutzen wir das Übungskonto, wie es die DOMAIN-Einstellung gibt. Wir benötigen zwei separate Wörterbücher für die Domains, jeweils eine für die Streaming - und Trading-API-Komponenten. Schließlich haben wir die ACCESSTOKEN und ACCOUNTID I ve die beiden gefüllt Unten mit Dummy-IDs, so dass Sie Ihre eigenen nutzen müssen, auf die von der OANDA-Account-Seite zugegriffen werden kann. Der nächste Schritt ist es, die Ereignisse zu definieren, die die Warteschlange verwenden wird, um allen einzelnen Komponenten zu helfen. Wir benötigen zwei TickEvent und OrderEvent Die erste speichert Informationen über Instrumentenmarktdaten wie die beste Geldbörse und die Handelszeit Die zweite wird verwendet, um Aufträge an den Ausführungsbeauftragten zu übermitteln und enthält somit das Instrument, die Anzahl der zu handelnden Einheiten, die Auftragsart Markt oder Grenze und die Seite dh kaufen und verkaufen. Um zukunftssicher unsere Veranstaltungen Code werden wir eine Basisklasse namens Event erstellen und haben alle Ereignisse von diesem erben Der Code wird unten in gegeben. Die nächste Klasse, die wir erstellen werden, wird die Handelsstrategie behandeln In dieser Demo werden wir eine eher unsinnige Strategie schaffen, die einfach alle Marktticks erhält und auf jeder 5. Tick zufällig kauft oder verkauft 10.000 Einheiten von EUR USD. Klärlich ist dies eine lächerliche Strategie Allerdings ist es fantastisch für Testzwecke, weil Es ist einfach zu kodieren und zu verstehen In zukünftigen Tagebucheinträgen werden wir dies durch etwas deutlich spannenderes ersetzen, das hoffentlich einen Gewinn machen wird. Die Datei kann unten gefunden werden. Lass es uns durchgehen und sehen, was los ist Zuerst importieren wir das zufällige Bibliothek und das OrderEvent-Objekt von Wir brauchen die zufällige lib, um einen zufälligen Kauf - oder Verkaufsauftrag auszuwählen Wir benötigen OrderEvent, da das Strategieobjekt Aufträge an die Veranstaltungswarteschlange sendet, die später vom Ausführungsbearbeiter ausgeführt wird TestRandomStrategy Klasse nimmt einfach das Instrument in diesem Fall EUR USD, die Anzahl der Einheiten und die Ereignisse Warteschlange als eine Reihe von Parametern Es erstellt dann einen Ticks-Zähler, der verwendet wird, um zu erzählen, wie viele TickEvent-Instanzen es gesehen hat. Mehr der Arbeit tritt in Die calculatesignals-Methode, die einfach ein Ereignis nimmt, bestimmt, ob es ein TickEvent sonst ignoriert und inkrementiert den Tick-Zähler Es überprüft dann, ob die Zählung von 5 teilbar ist und dann zufällig kauft oder verkauft, mit einer Marktreihenfolge die angegebene Nummer Von Einheiten Es ist sicherlich nicht die weltweit größte Handelsstrategie, aber es wird mehr als geeignet für unsere OANDA Brokerage API Testzwecke. Die nächste Komponente ist die Ausführungs-Handler Diese Klasse ist beauftragt mit handeln auf OrderEvent-Instanzen und Anfragen an den Broker In diesem Fall OANDA in einer dummen Art und Weise Das heißt, es gibt kein Risikomanagement oder Potfolio-Konstruktions-Overlay Der Ausführungs-Handler wird einfach jede Bestellung ausführen, die er gegeben hat. Wir müssen alle Authentifizierungsinformationen an die Execution-Klasse übergeben, einschließlich der Domain Praxis, Real - oder Sandbox, Zugriffstoken und Account-ID Wir erstellen dann eine sichere Verbindung mit einem der in Bibliotheken eingebauten Pythons. Die meisten der Arbeiten erfolgt im Executeorder Die Methode erfordert ein Ereignis als Parameter und baut dann zwei Wörterbücher - die Header und Die params Diese Wörterbücher werden dann korrekt durch eine andere Python-Bibliothek, die als POST-Anfrage an OANDAs API gesendet werden soll, korrekt codiert. Wir übergeben die Content-Type - und Authorization-Header-Parameter, zu denen auch unsere Authentifizierungsinformationen gehören. Darüber hinaus kodieren wir die Parameter, die Beinhalten das Instrument EUR USD, Einheiten, Auftragsart und Seite Kauf verkaufen Schließlich machen wir die Anfrage und speichern die Antwort. Die komplexeste Komponente des Handelssystems ist das StreamingForexPrices-Objekt, das die Marktpreisaktualisierungen von OANDA verarbeitet. Es gibt zwei Methoden Connecttostream und streamtoqueue. Die erste Methode nutzt die Python-Anforderungsbibliothek, um eine Verbindung zu einem Streaming-Socket mit den entsprechenden Headern und Parametern herzustellen. Die Parameter enthalten die Account-ID und die notwendige Instrumentenliste, die für Updates in diesem Fall gehört werden soll, ist nur EUR USD Beachten Sie die folgende Zeile. Dies sagt, dass die Verbindung gestreamt werden und somit in einer langwierigen Weise offen gehalten wird. Die zweite Methode, streamtoqueue versucht tatsächlich, sich mit dem Stream zu verbinden Wenn die Antwort nicht erfolgreich ist, dh der Antwortcode ist nicht 200, dann Wir kommen einfach zurück und beenden Wenn es erfolgreich ist, versuchen wir, das JSON-Paket in ein Python-Wörterbuch zurückzukehren. Schließlich konvertieren wir das Python-Wörterbuch mit dem Instrument, bitten bitte und Zeitstempel in ein TickEvent, das an die Ereignis-Warteschlange gesendet wird. Wir haben jetzt Alle wichtigen Komponenten vorhanden Der letzte Schritt ist, alles, was wir bisher geschrieben haben, in ein Hauptprogramm zu verpacken Das Ziel dieser Datei, bekannt als ist es, zwei getrennte Threads zu erstellen, von denen einer den Preishandler und der andere läuft, der läuft Der Trading-Handler. Warum brauchen wir zwei separate Threads Setzen Sie einfach, wir führen zwei separate Stücke von Code, die beide kontinuierlich laufen Wenn wir ein Non-Thread-Programm zu erstellen, dann die Streaming-Socket für die Preis-Updates verwendet würde Niemals jemals wieder auf den Hauptcode-Pfad zurückkehren und damit würden wir niemals irgendwelche Geschäfte ausführen. Ähnlich, wenn wir die Handelsschleife liefen, sehen wir unten, wir würden niemals den Flow-Pfad zum Preis-Streaming-Sockel zurückgeben. Daher brauchen wir mehrere Threads Für jede Komponente, so dass sie unabhängig durchgeführt werden können Sie werden beide miteinander kommunizieren über die Ereignisse Warteschlange. Let s untersuchen dies ein bisschen weiter Wir erstellen zwei separate Threads mit den folgenden Zeilen. Wir übergeben die Funktion oder Methodenname an die Ziel-Keyword-Argument und dann übergeben Sie eine iterable wie eine Liste oder Tupel auf die args Keyword-Argument, die dann übergibt diese Argumente an die eigentliche Methode function. Final wir starten beide Threads mit den folgenden Zeilen. Thus können wir zwei, effektiv laufen Endlos-Looping, Code-Segmente unabhängig, die beide über die Ereignisse-Warteschlange kommunizieren Beachten Sie, dass die Python-Threading-Bibliothek keine echte Multi-Core-Multithread-Umgebung aufgrund der CPython-Implementierung von Python und dem Global Interpreter Lock GIL erzeugt. Wenn Sie mehr lesen möchten Über Multithreading auf Python, bitte werfen Sie einen Blick auf diesen Artikel. Let s untersuchen den Rest des Codes im Detail Erstens importieren wir alle notwendigen Bibliotheken einschließlich Queue Threading und Zeit Wir importieren dann alle oben genannten Code-Dateien, die ich persönlich bevorzuge zu profitieren Irgendwelche Konfigurationseinstellungen, die eine Gewohnheit ist, die ich von der Arbeit mit Django abgeholt habe. Danach definieren wir die Handelsfunktion, die in Python-Pseudocode oben erklärt wurde. Eine unendliche while-Schleife wird durchgeführt, während True, die ständig von der Ereignis-Warteschlange abfragt und nur Überspringt die Schleife, wenn es leer gefunden wird Wenn ein Ereignis gefunden wird, dann ist es entweder ein TickEvent oder ein OrderEvent und dann wird die entsprechende Komponente aufgerufen, um es auszuführen In diesem Fall ist es entweder eine Strategie oder Ausführung Handler Die Schleife schläft dann einfach für Herzschlag Sekunden in diesem Fall 0 5 Sekunden und fährt fort. Schließlich definieren wir den Haupteingangspunkt des Codes in der Hauptfunktion Es ist gut kommentiert unten, aber ich werde hier zusammenfassen Im Wesentlichen instanziieren wir die Ereignisse Warteschlange und definieren die Instrumente Einheiten Wir dann Erstellen Sie die StreamingForexPrices Preis Streaming-Klasse und dann anschließend die Execution Execution Handler Beide erhalten die notwendigen Authentifizierungsdetails, die von OANDA bei der Erstellung eines Kontos gegeben werden. Wir erstellen dann die TestRandomStrategy-Instanz Schließlich definieren wir die beiden Threads und starten sie dann Sie müssen einfach alle Dateien in das gleiche Verzeichnis und rufen Sie die folgenden am Terminal. Hinweis, dass der Code in diesem Stadium zu stoppen erfordert eine harte Tötung des Python-Prozesses über Ctrl-Z oder gleichwertig Ich habe keinen zusätzlichen Thread hinzugefügt Zu behandeln auf der Suche nach dem, was nötig wäre, um den Code sicher zu stoppen Ein möglicher Weg, um den Code auf einem Ubuntu-Linux-Rechner zu stoppen ist zu geben. Und dann übergeben die Ausgabe dieser eine Prozessnummer in die folgenden. Wo PROCESSID muss ersetzt werden mit Die Ausgabe von pgrep Beachten Sie, dass dies nicht besonders gut praktisch ist. In späteren Artikeln werden wir einen anspruchsvolleren Stop-Start-Mechanismus erstellen, der die Ubuntu-Prozessüberwachung nutzt, um das Trading-System laufen zu lassen. 7. Die Ausgabe nach 30 Sekunden Oder so, je nach Tageszeit in Bezug auf die wichtigsten Handelszeiten für EUR USD, für den oben genannten Code, ist unten angegeben. Die ersten fünf Zeilen zeigen die JSON-Tick-Daten von OANDA mit Bid-Ask-Preisen zurückgegeben Nachfolgend können Sie die Ausführung sehen Auftragsleistung sowie die von OANDA zurückgelieferte JSON-Antwort, die die Eröffnung eines Kaufhandels für 10.000 Einheiten EUR USD und den Preis, den es erreicht hat, bestätigt hat. Dies wird auf unbestimmte Zeit laufen, bis Sie das Programm mit einem Ctrl-Z-Befehl oder ähnlichem töten. In spätere Artikel werden wir einige dringend benötigte Verbesserungen durchführen, einschließlich. Real Strategien - Richtige Forex-Strategien, die profitable Signale generieren. Produktionsinfrastruktur - Remote-Server-Implementierung und 24 7 überwachtes Handelssystem mit Stop-Start-Fähigkeit. Portfolio und Risiko Management - Portfolio - und Risiko-Overlays für alle vorgeschlagenen Aufträge aus der Strategie. Mehrere Strategien - Aufbau eines Portfolios von Strategien, die sich in das Risikomanagement-Overlay integrieren. Mit dem Equity Event-driven Backtester müssen wir auch ein Forex-Backtesting-Modul erstellen Lassen Sie uns schnelle Forschung durchführen und machen es einfacher, Strategien zu implementieren. Denken Sie daran, ACCOUNTID und ACCESSTOKEN. Just Getting Started mit quantitativen Trading. Making Geld mit Python. Making Geld mit Python. A während zurück ein Freund erzählte mir über etwas namens Community-Währung auch bekannt als Local Exchange Trading System Die Grundidee davon ist das Menschen innerhalb eines geografischen Gebiets können Waren und Dienstleistungen mit maßgeschneiderten Austauschgegenständen austauschen, eher traditionelle Bargeld So können Sie zum Beispiel ein paar Rasen im Austausch für Gitarrenunterricht mähen, auch wenn es nicht die Gitarrenlehrerin ist, die Sie mähen Keine physische Währung als solche, Mitglieder der Community-Währung verlassen sich auf Freiwillige zu verfolgen, wie viel Währung sie besitzen Ich denke, das ist eine wunderbare Idee Es fördert gesunden Austausch ohne die Notwendigkeit, schlammige Dinge mit etwas so vulgär wie Bargeld Aber was hat mich geschlagen Nach ein bisschen Forschung ist, wie das ganze System in dringend Notwendigkeit der Mechanisierung Es gibt keinen zentralen Ort, um Ihr Konto oder Weg, um Transaktionen online zu machen, und ich dachte, es sollte sein So, das war mein Hobby-Projekt für die letzten Monate Ich habe eine solche Seite gebaut, die vor kurzem zu einem Punkt zusammengekommen ist, an dem ich gerne messen möchte, wie viel Interesse da draußen ist. Ich komme sogar noch einen Namen, also habe ich es von dem eher uninspirierten Moniker benannt Der Währung Site. Apologies für den irreführenden Titel dieses Post Ich bin ohne Schande. Users of Currency Site kann eine Währung, die sie verwenden können, um jede Art von Schulden zu verfolgen Der Währungs-Schöpfer oder Anbieter setzt die Politik auf, wie neue Geld ist Erstellt und verwaltet Sobald erstellt, kann Geld an andere Benutzer direkt an einen Benutzernamen oder indirekt über eine E-Mail-Adresse gesendet werden, und Benutzer können ihre Fonds durch die Schaffung von verschiedenen Konten zu verwalten Einmal Fonds wurden an einen Benutzer gesendet, hat der Anbieter keine Kontrolle mehr, Da jeder Benutzer frei ist, ihre Gelder zu speichern oder sie an andere zu schicken Für alle Absichten und Zwecke, ist Währung Site wie Online-Banking, obwohl mit einer weit schöneren Benutzeroberfläche als jedes Online-Banking-System, das ich jemals verwendet habe, die dazu neigen, ein Usability-Minenfeld zu sein Die Benutzer sind auch in der Lage zu sehen, wie viel Geld geprägt wurde und wie viel ist derzeit im Umlauf, dh nicht von dem Anbieter gespeichert, die hilft, Vertrauen in das System zu erhalten. Sie können denken, das klingt vertraut, wenn Sie jemals über die Bitcoin kommen Projekt, aber es gibt ein paar signifikante Unterschiede Der größte Unterschied ist, dass die Währung Site noch Vertrauen in die einzelnen oder Organisation, die die Verwaltung der Währung dh der Anbieter, und es gibt keine erzwungene Knappheit der neuen Währungs-Anbieter können Minze neues Geld, wie sie sehen Fit Es gibt ein wenig Überlappung, aber die Use Cases für Currency Site sind potenziell breiter, wenn auch begrenzt im Maßstab im Vergleich zu Bitcoin Community Währungsprojekte sind das, was ich im Sinn hatte bei der Arbeit an diesem, aber es ist gleichermaßen für eine Vielzahl von anderen Verwendungen Für Beispiel, sagen wir eine Familie, die wir nennen sie die Smiths haben ein paar Kinder, die don t wie ihre Aufgaben tun, so dass die Eltern eine Währung namens Smith Dollars Wenn kleine Bobby Smith seine Hausaufgaben macht oder reinigt sein Zimmer, seine Eltern senden Er 10 Smith Dollars Wenn Bobby 100 Smith Dollars hat, kann er sie für ein neues Videospiel einlösen oder 15 verbringen, um eine zusätzliche Stunde zu bleiben. Aber wenn er wollte, konnte er auch seine Schwester 5 Smith Dollars als Gegenleistung für ein Darlehen schicken Von ihrem Laptop Andere Verwendungen könnten Mitarbeiter halten, die sich für die Donuts oder ein paar Austausch von Gefälligkeiten verwenden Sie Ihre Phantasie für diese one. Currency Site ist mit Django gebaut und ich habe die hervorragende Bootstrap-Bibliothek für das Thema verwendet Die Website ist nutzbar Der Moment, aber es gibt noch ein paar Dinge, die ich tun möchte, bevor ich es überall lebe. Nur um zu beweisen, dass es kein Vaporware ist, hier sind ein paar Screenshots. Ich werde für ein paar mutige Seelen suchen, um mir zu helfen, dies zu testen Ich plane, eine private Beta zu machen, wo die Datenbank komplett abgewischt wird, bevor es für eine Weile live geht. Das gibt mir die Möglichkeit, die Knicke wirklich auszurüsten, ohne sich Sorgen um die Verwirrung der DB machen zu müssen. Wenn du dich interessierst Helfen, bitte in Kontakt zu treten, oder 1 dies, wenn Sie auf Google lesen Ich wäre auch interessiert an Anregungen für einen guten Namen für dieses Projekt Es scheint, dass jede Domain mit jeder Art von Bezug auf Geld oder Währung ist nicht überraschend, ich vermute. Ich bin für die Hilfe zu testen Liebe diese Idee x. Reply zu Jean Paldan. Did Sie haben einen Blick auf Welligkeit für einen Weg, um diese Skala zu machen. Es ist die Menge an Geld, die Sie haben, durch die Zulage gegeben, die andere Ihnen geben, und Wenn du mit jemandem handeln möchtest, der dir keine Vergütung gegeben hat, versucht das System, einen Weg zu finden, um das Geld über andere Leute zu verlagern, also haben beide von ihnen eine Zulage am Ende dieser Kette. Nach Arne Babenhauserheide. Value Funktion RLDirect RL. Wert Funktion RL Q-learning Q-learning5. Direkte RL Q-learningQ-Tabelle Wiederkehrende Verstärkung Lernen RRL RRL5 RRL. RRL Financial Trading Framework. Agent RRL-Trader. State. Reward tt 1.Action Trading-Signal kaufen verkaufen kurze lange neutrale hold. Differential Sharpe Ratio DSR Gewicht. T lang oder kurz Ft Signsumme w r w F vt Ft -1,1 kurz -1, langes 1 Gew .-% Vektor vt Schwelle des neuronalen Netzes rt pt - p .1 vt Gewichtsvektor. Pt Summe Rt Rt F rt - Ft-F Transaktionskosten 1. Differential Sharpe Ratio DSR Sharpe Verhältnis DSR Hut 0 Dt Frac.

No comments:

Post a Comment