Wednesday, 25 January 2017

Gleitender Mittelpylab

Zipline Beginner Tutorial Zipline ist ein Open-Source-algorithmischen Handel Simulator in Python geschrieben. Einige Vorteile sind: Realistisch: Schlupf, Transaktionskosten, Auftragsverzögerungen. Stream-based: Prozess jedes Ereignis einzeln, vermeidet Blick-Vorneigung. Batterien enthalten: Gemeinsame Umwandlungen (gleitender Durchschnitt) sowie gemeinsame Risiko-Berechnungen (Sharpe). Entwickelt und kontinuierlich aktualisiert von Quantopian, die eine einfach zu bedienende Web-Schnittstelle zu Zipline, 10 Jahre langer Auflösung historische US-Aktien-Daten und Live-Trading-Funktionen bietet. Dieses Tutorial richtet sich an Benutzer, die Zipline ohne Verwendung von Quantopian verwenden möchten. Wenn Sie stattdessen wollen, um auf Quantopian zu beginnen, sehen Sie hier. Dieses Tutorial geht davon aus, dass Sie Zipline richtig installiert haben, finden Sie in der Installationsanleitung, wenn Sie haven8217t eingerichtet Zipline noch. Jeder Zipline-Algorithmus besteht aus zwei Funktionen, die Sie definieren müssen: initialize (context) handledata (Kontext, Daten) Vor dem Start des Algorithmus ruft Zipline die Funktion initialize () auf und übergibt eine Kontextvariable. Kontext ist ein persistenter Namensraum, in dem Sie Variablen speichern können, auf die Sie von einer Algorithmusiteration zum nächsten zugreifen müssen. Nachdem der Algorithmus initialisiert wurde, ruft zipline die handledata () - Funktion einmal für jedes Ereignis auf. Bei jedem Anruf übergibt es die gleiche Kontextvariable und einen Ereignisrahmen, der Daten mit der aktuellen Handelsbar mit offenen, hohen, niedrigen und geschlossenen Preisen (OHLC) sowie Volumen für jeden Bestand in Ihrem Universum enthält. Weitere Informationen zu diesen Funktionen finden Sie im entsprechenden Teil der Quantopian-Dokumente. Mein erster Algorithmus Lets einen Blick auf einen sehr einfachen Algorithmus aus dem Beispielverzeichnis, buyapple. py: Wie Sie sehen können, müssen wir zunächst einige Funktionen importieren, die wir verwenden möchten. Alle in Ihrem Algorithmus verwendeten Funktionen finden Sie in zipline. api. Hier verwenden wir order (), der zwei Argumente umfasst: ein Sicherheitsobjekt und eine Zahl, die angibt, wie viele Bestände Sie bestellen möchten (falls negativ, order () sellshort Aktien). In diesem Fall möchten wir bei jeder Iteration 10 Aktien von Apple bestellen. Weitere Dokumentation zur Bestellung (). Siehe die Quantopian-Dokumente. Schließlich ermöglicht die Funktion record (), den Wert einer Variablen bei jeder Iteration zu speichern. Sie geben ihr einen Namen für die Variable zusammen mit der Variablen an: varnamevar. Nachdem der Algorithmus fertig ist, haben Sie Zugriff auf jeden Variablenwert, den Sie mit record () unter dem von Ihnen angegebenen Namen verfolgt haben (wir sehen das weiter unten). Sie sehen auch, wie wir auf die aktuellen Preisdaten des AAPL-Bestandes im Datenereignisrahmen zugreifen können (weitere Informationen finden Sie hier) Algorithmus ausführen Um nun diesen Algorithmus auf Finanzdaten zu testen, bietet zipline drei Schnittstellen: Eine Befehlszeilenschnittstelle, IPython Notebook-Magie und runalgorithm () Eingeben von Daten Wenn Sie haven8217t die Daten aufgenommen haben, führen Sie: wo ltbundlegt ist der Name des Bündels zu ingest, standardmäßig auf quantopian-quandl. Sie können die Einnahme Daten Abschnitt für weitere Details (Z. B. cmd. exe unter Windows oder die Terminal-App unter OSX): Wie Sie sehen können, gibt es ein paar Flags, die angeben, wo Sie Ihre finden können Algorithmus (-f) sowie Parameter, die angeben, welche Daten verwendet werden sollen, wobei auf den Quantopian Quandl-WIKI-Mirror zurückgegriffen wird, gibt es auch Argumente für den Zeitraum, in dem der Algorithmus über (--start und --end) ausgeführt werden soll Um die Performance-Metriken Ihres Algorithmus zu speichern, damit Sie analysieren können, wie er durchgeführt wurde. Dies geschieht über das Flag --output und wird die Performance DataFrame im Pickle-Python-Dateiformat schreiben. Beachten Sie, dass Sie auch eine Konfigurationsdatei mit diesen Parametern definieren können, die Sie dann bequem an die Option - c übergeben können, so dass Sie die Befehlszeile args nicht immer zur Verfügung stellen müssen (siehe die. conf-Dateien im Beispielverzeichnis). Um den Algorithmus von oben auszuführen und die Ergebnisse auf buyappleout. pickle zu speichern, wird zipline folgendermaßen aufgerufen: run führt zuerst die initialize () - Funktion auf und strömt dann den historischen Aktienkurs tagesaktuell durch handledata (). Nach jedem Aufruf von handledata () weisen wir Zipline an, 10 Aktien von AAPL zu bestellen. Nach dem Aufruf der Funktion order () gibt die Zipline den bestellten Bestand und den Betrag im Orderbuch ein. Nachdem die Funktion handledata () beendet ist, sucht zipline nach offenen Befehlen und versucht sie zu füllen. Wenn das Handelsvolumen hoch genug für diese Aktie ist, wird die Order nach dem Hinzufügen der Provision ausgeführt und das Slippage-Modell angewendet, das den Einfluss Ihrer Order auf den Aktienkurs modelliert, so dass Ihr Algorithmus mehr als nur den Aktienkurs 10 berechnet wird. (Beachten Sie, dass Sie auch das Provisions - und Slippage-Modell ändern können, das die Zipline verwendet, siehe Quantopian Docs für weitere Informationen). Werfen wir einen Blick auf die Performance DataFrame. Dazu verwenden wir Pandas aus dem IPython Notebook und drucken die ersten zehn Zeilen aus. Beachten Sie, dass Zipline starken Gebrauch von Pandas macht. Vor allem für die Dateneingabe und Ausgabe so lohnt es sich, einige Zeit zu verbringen, um es zu lernen. 5 Zeilen 39 Spalten Wie Sie sehen können, gibt es eine Zeile für jeden Handelstag ab dem ersten Geschäftstag 2000. In den Spalten finden Sie verschiedene Informationen über den Zustand Ihres Algorithmus. Die erste Spalte AAPL wurde dort durch die oben genannte Funktion record () platziert und erlaubt uns, den Preis von Apfel zu plotten. So konnten wir z. B. leicht untersuchen, wie sich unser Portfoliowert im Laufe der Zeit gegenüber dem AAPL-Aktienkurs veränderte. Wie Sie sehen können, entspricht unsere Algorithmenleistung, wie sie vom portfoliovalue bewertet wird, eng mit dem des AAPL-Aktienkurses. Dieses ist nicht überraschend, da unser Algorithmus nur AAPL jede mögliche Chance kaufte, die es bekam. IPython Notebook Das IPython Notebook ist eine sehr leistungsfähige browserbasierte Schnittstelle zu einem Python-Interpreter (dieses Tutorial wurde darin geschrieben). Da es bereits die De-facto-Schnittstelle für die meisten quantitativen Forscher zipline bietet eine einfache Möglichkeit, Ihren Algorithmus in das Notebook laufen, ohne dass Sie die CLI verwenden müssen. Um es zu verwenden, müssen Sie Ihren Algorithmus in eine Zelle schreiben und lassen Sie zipline wissen, dass es diesen Algorithmus laufen soll. Dies geschieht über die Zipline IPython Magic-Befehl, die verfügbar ist, nachdem Sie importieren Zipline aus dem IPython Notebook. Diese Magie nimmt dieselben Argumente wie die oben beschriebene Befehlszeilenschnittstelle. Um also den Algorithmus von oben mit den gleichen Parametern auszuführen, müssen wir nur die folgende Zelle ausführen, nachdem wir Zipline importiert haben, um die Magie zu registrieren. Beachten Sie, dass wir keine Eingabedatei wie oben angeben müssen, da die Magie den Inhalt der Zelle verwendet und dort nach Ihren Algorithmusfunktionen sucht. Anstatt eine Ausgabedatei zu definieren, geben wir einen Variablennamen mit - o an, der im Namensraum erstellt wird und die Performance DataFrame enthält, die wir oben betrachtet haben. Zugang zu vorherigen Preisen mit Hilfe der Historie Arbeitsbeispiel: Dual Moving Average Cross-Over Der Dual Moving Average (DMA) ist eine klassische Impulsstrategie. It8217s wahrscheinlich von keinem ernsthaften Händler mehr verwendet, aber ist immer noch sehr lehrreich. Die Grundidee besteht darin, dass wir zwei rollierende oder gleitende Durchschnitte (mavg) 8211 mit einem längeren Fenster berechnen, das langfristige Trends erfassen soll und ein kürzeres Fenster, das kurzfristige Trends erfassen soll. Sobald der Short-mavg den Long-Mavg von unten kreuzt, nehmen wir an, dass der Aktienkurs nach oben Momentum und lange den Bestand hat. Wenn der Short-Mavg von oben kreuzt, verlassen wir die Positionen, wenn wir annehmen, dass der Bestand weiter sinkt. Da wir Zugang zu früheren Preisen haben müssen, um diese Strategie umzusetzen, brauchen wir ein neues Konzept: History history () ist eine Bequemlichkeitsfunktion, die ein rollendes Datenfenster für Sie hält. Das erste Argument ist die Anzahl der Balken, die Sie sammeln möchten, das zweite Argument ist die Einheit (entweder 1d für 1m, aber beachten Sie, dass Sie minutengenaue Daten für die Verwendung von 1m haben müssen). Für eine ausführlichere Beschreibung history () 8216s Funktionen, siehe die Quantopian docs. Let8217s Blick auf die Strategie, die dies deutlich machen sollte: Hier definieren wir explizit eine Analyse () - Funktion, die automatisch aufgerufen wird, sobald der Backtest durchgeführt wird (dies ist bei Quantopian derzeit nicht möglich). Obwohl es vielleicht nicht direkt offensichtlich ist, kann die Macht der Geschichte () (Wortspiel beabsichtigt) nicht unterschätzt werden, da die meisten Algorithmen vorherige Marktentwicklungen in einer Form oder anderen nutzen. Sie könnten leicht eine Strategie entwickeln, die einen Klassifikator mit scikit-learn trainiert, der künftige Marktbewegungen basierend auf vergangenen Preisen vorhersagen will (beachten Sie, dass die meisten Scikit-Learn-Funktionen numpy. ndarray s anstelle von pandas. DataFrame s benötigen Kann einfach das zugrundeliegende ndarray eines DataFrame über. values ​​übergeben). Wir haben auch die Funktion ordertarget () verwendet. Diese und andere Funktionen wie es kann Auftragsmanagement und Portfolio-Rebalancing viel einfacher machen. Weitere Informationen finden Sie in der Quantopian-Dokumentation zu Bestellfunktionen. Fazit Wir hoffen, dass dieses Tutorial Ihnen einen kleinen Einblick in die Architektur, API und Features der Zipline gegeben hat. Für die nächsten Schritte, schauen Sie sich einige der Beispiele. Spyder - die Python IDE Mo 16 September 2013 Hans Fangohr. University of Southampton, Großbritannien, 2013 Spyder hat sich zu einem recht ausgereiften und sehr produktiven Werkzeug hier versucht, ein Tutorial zu bieten. Diese Dokumentation ist motiviert durch Schulungen in Python und rechnerische Modellierung für Studenten an der University of Southampton (siehe historische Anmerkung für weitere Details). Dieser Blog-Eintrag wurde in Spyder als Tutorial integriert. Sobald Spyder gestartet ist, finden Sie die aktuellste Version dieses Tutorials unter Help - gt Spyder Tutorial. Holen Sie sich die hello world-Datei in das Spyder-Editor-Fenster entweder als Download hello. py und speichern Sie als hello. py. (Sie laden die Datei herunter, indem Sie mit der rechten Maustaste auf den Link in Ihrem Browser klicken, dann Ziel speichern unter speichern oder als Download speichern unter speichern) und öffnen dann die Datei hello. py im Menü Datei und wählen dann Öffnen. Wir sagen dies als File - gt Open kurz. Klicken Sie auf hello. py, um den Quellcode im webbrowser zu sehen, dann kopieren Sie den ganzen Code navigieren Sie zum Editorfenster in spyder und fügen Sie den Code ein. Speichern Sie die Datei dann als hello. py. Um das Programm auszuführen, wählen Sie Run - gt Run (oder drücken Sie F5), und bestätigen Sie die Run-Einstellungen, falls erforderlich. Sie sollten die Ausgabe wie sehen: oder (der bestimmte Pfad hängt davon ab, wo Sie die Datei gespeichert haben, aber das wird von Spyder automatisch eingefügt): Wenn ja, dann haben Sie nur Ihr erstes Python-Programm ausgeführt - gut gemacht. Bevor wir weitermachen, bitte Die IPython Konsole kann ein wenig mehr als die Standard Python Konsole, und wir empfehlen, es als die Standard-Konsole hier verwenden. In der IPython-Interpretersitzung, die wir gerade gestartet haben, können Sie Run-gtRun (wie zuvor) verwenden, um hello. py auszuführen, und Sie sollten folgendes sehen: Python liest die Datei Zeile für Zeile und ignoriert Kommentare, wenn sie auf das Schlüsselwort def steht Weiß, dass in dieser und der nächsten (einer oder mehreren) Zeile eine Funktion definiert ist. In der hello. py-Datei erstellt Python somit ein Funktionsobjekt mit dem Namen hello. Alle eingerückten Linien nach def hello (): gehören zum Funktionskörper. Beachten Sie, dass das Funktionsobjekt gerade an dieser Stelle in der Datei erstellt wird, aber die Funktion noch nicht aufgerufen wird (d. H. Nicht ausgeführt). Wenn Python auf Befehle (außer def und ein paar andere Schlüsselwörter) stößt, die in der linken Spalte geschrieben werden, führt es diese sofort aus. In der hello. py-Datei ist dies nur die Zeile, die hello () liest, die tatsächlich die Funktion mit dem Namen hallo aufruft (also ausführt). Wenn Sie die Zeile hello () aus dem Programm entfernen und die gesamte Datei erneut ausführen (indem Sie F5 drücken oder run - gt run wählen) wird nichts gedruckt (weil die Funktion hello definiert, aber nicht aufgerufen, dh nicht ausgeführt wird) . Nun sollten Sie wissen, wie Sie ein Python-Programm ausführen, das Sie im Editor-Fenster in Spyder mit der Python-Konsole und der anspruchsvolleren IPython-Konsole haben. Wenn Sie gerade anfangen, Python zu lernen, ist dies wahrscheinlich ein guter Punkt, um zu Ihrem Lehrbuchkurs zurückzukehren und mehr grundlegende Beispiele zu betrachten. Im nächsten Abschnitt finden Sie detailliertere Informationen, wie Sie Teile des Codes im Editor in der Python-Konsole ausführen und damit Teile Ihrer Definitionen im Editor aktualisieren können. Dies ist eine fortgeschrittenere Technik, kann aber sehr nützlich sein. (Sie können sich auch für die Ausführung von Chunks (sog. Quotcellsquot) von Codes interessieren, die durch Trennzeichen getrennt sind - siehe Verknüpfungen für nützliche Funktionen.) Sobald Sie das hello. py-Programm ausgeführt haben, wird das Funktionsobjekt hello definiert Und an der Python-Eingabeaufforderung bekannt. Wir können die Funktion aus der Python-Eingabeaufforderung aufrufen: Rufen Sie die hello () - Funktion aus der Python-Eingabeaufforderung an, dh geben Sie hello () im Python-Shell-Fenster ein (die Python-Eingabeaufforderung wird als gtgtgt oder als In angezeigt, wenn wir die IPython-Sitzung verwenden Das Fragezeichen kann jede positive ganze Zahl sein.), Und drücken Sie die Return-Taste. Sie sollten feststellen, dass die hello () - Funktion erneut ausgeführt wird, d. H. Hello World wird erneut gedruckt. Ihr Funktionsaufruf an der Python-Eingabeaufforderung zusammen mit der Ausgabe sollte so aussehen: Können Sie sehen, wie sich dies vom Ausführen des ganzen Programms unterscheidet, wenn wir das ganze Programm ausführen (durch Drücken von F5), führt Python die Datei durch, erzeugt die Hello-Funktion (Überschreibt das vorhergehende Objekt), gelangt zum Hauptprogramm und ruft die Funktion auf. Wenn wir von der Python-Eingabeaufforderung hello () aufrufen, rufen wir nur die in der (I) - Python-Konsole definierten Funktionsobjekte hello auf, wenn wir die gesamte hello. py-Datei früher (durch Drücken von F5) ausgeführt haben. Dies wird klarer im Laufe der Zeit und auch wenn wir mit etwas größeren Beispielen arbeiten. Sie können zu diesem Tutorial zu einem etwas späteren Zeitpunkt zurückkehren. Python stellt eine Funktion zur Verfügung, die alle bekannten Objekte (im aktuellen Namensraum) anzeigt. Es heißt dir (). Wenn Sie dir () an der Eingabeaufforderung eingeben, erhalten Sie eine Liste der bekannten Objekte. Ignoriere alles, was mit einem Unterstrich beginnt. Können Sie sehen, hallo in der Liste (Wenn Sie eine lange Liste von definierten Objekten, dann Spyder Mai haben einige Convenience-Importe für Sie bereits getan haben. Um dies zu tun, können Sie: führen Sie dann dir () wie oben vorgeschlagen - Objekt im aktuellen Namensraum sichtbar ist (wie in diesem Beispiel hello), können wir die Hilfe-Funktion wie folgt verwenden, um es zu lernen: Geben Sie help (hello) an der Python-Eingabeaufforderung ein, sollten Sie die Ausgabe wie folgt sehen: Woher kommt Python Nehmen Sie die Informationen aus Einige davon (wie die Anzahl der Eingabeargumente und Namen dieser Variablen haben wir hier keine Eingabeargumente) Python kann durch die Inspektion seiner Objekte finden, zusätzliche Informationen stammen aus dem Dokumentationsstring für das Funktionsobjekt hallo zur Verfügung gestellt. Der Dokumentationsstring ist der erste String unmittelbar unterhalb der Zeile def hello ():. Die Spyder-Umgebung bietet auch ein Panel in der rechten oberen Ecke (standardmäßig), das der Objektinspektor ist. Wenn Sie hello in die leere Zeile in das Objekt-Inspector-Fenster eingeben, wird es auch die Hilfe-String. Ändern Sie im Editor-Fenster die Funktion hello, so dass es Goodbye-Welt anstatt Hello World druckt. Drücken Sie F5 (um das gesamte Programm auszuführen) und überprüfen Sie, ob die Ausgabe des Programms jetzt ist: Was geschehen ist, wenn Sie F5 gedrückt haben, ist dies: Python hat die hello. py-Datei durchlaufen und ein neues Funktionsobjekt hallo erstellt (das Überschreiben der Funktion Objekt Hallo hatten wir vorher definiert) und dann die Funktion ausgeführt. Wir müssen mit einem klar definierten Zustand beginnen. Um dies zu tun, ändern Sie bitte die Funktion hello () zurück, so dass es Hello World druckt (d. H. Die ursprüngliche hello. py-Datei) und drücken Sie dann F5, um das gesamte Programm auszuführen und zu überprüfen, dass es Hello World druckt. Rufen Sie die Funktion hello () von der Befehlseingabeaufforderung auf (wie unter Aufruf existierender Funktionsobjekte von der Befehlszeile beschrieben). Sie sollten Hello World ausdrucken. Ändern Sie nun die Funktionsdefinition so, dass sie Laters World ausdrucken würde. Und speichern Sie die Datei (aber nicht das Programm ausführen, d. H. Drücken Sie noch nicht F5). Rufen Sie die Funktion hello () erneut an der Eingabeaufforderung auf. Sie sollten feststellen, dass der Text gedruckt liest Hallo Welt. Wie hier Warum ist dies so Da das Hallo-Funktion-Objekt in der Python-Interpreter ist die alte, die Hello World druckt. Bisher haben wir die Datei hello. py (und ersetzt Hallo World in dort mit Laters World) im Editor geändert, aber das hat nicht die Objekte beeinflusst, die zuvor im Python-Interpreter erstellt wurden. Hier gibt es zwei Möglichkeiten, unsere geänderte Version der hello-Funktion zu verwenden: Option 1: Führen Sie die gesamte Datei hello. py erneut durch Drücken von F5 aus: Dies erzeugt ein neues Funktionsobjekt hello (und überschreibt das alte). Sie sollten feststellen, dass, wenn Sie F5 drücken und dann an der Eingabeaufforderung hello () aufrufen, der neue Text Laters World gedruckt wird. Option 2: Wählen Sie den Bereich, den Sie geändert haben (in diesem Fall die gesamte Funktion hello, ausgehend von der Zeile def hello (): nach unten, um zurückzukehren, und wählen Sie dann Run - gt Run-Auswahl. Dadurch wird das hello-Objekt im Interpreter aktualisiert Ohne die gesamte hello. py-Datei ausführen zu müssen: Wenn wir nun hello () eingeben, sehen wir die update-Antwort: Die Fähigkeit, Teile des Codes auszuführen, um einige Objekte im Interpreter zu aktualisieren (im obigen Beispiel haben wir die Funktion aktualisiert Objekt hello), ist von großem Nutzen beim Entwickeln und Debuggen komplexerer Codes und beim Erstellen von objectdata in der Interpretersitzung Zeit in Anspruch nehmen, zB indem wir nur die Funktionen (oder Klassenobjekte usw.) ändern, die wir tatsächlich entwickeln oder debuggen Kann die Verwendung von IPython anstelle des normalen Python-Interpreters und (ii) keine Convenience-Importe verwenden, um Python-Programmierung und Computermodellierung zu unterrichten Akzeptiert IPython als De-facto-Standard und hilft, Namespaces besser zu verstehen. Spyder versucht, erweiterten Benutzern zu helfen, indem sie eine Anzahl von Modulen in den Hauptnamenraum importieren. Geben Sie an der Eingabeaufforderung die Option science ein, um die Details anzuzeigen. Dieses Verhalten kann sich in zukünftigen Spyder-Versionen ändern. Während diese Convenience-Importe sind sehr nützlich für erfahrene Programmierer, können sie verwirrend sein (wenn nicht irreführend) für Anfänger. Wir empfehlen daher, diese Importe rückgängig zu machen, um die oben genannten Anforderungen zu erfüllen und (i) auf eine IPython-Konsole umzustellen. Und (ii) den Rücksetzbefehl ausgeben, um den Namensraum zurückzusetzen. Beide Schritte werden im nächsten Abschnitt näher erläutert. Im Konsolenfenster (untere rechte Ecke standardmäßig) sehen Sie standardmäßig eine Eingabeaufforderung mit drei größeren als Zeichen, d. h. gtgtgt. Dies zeigt, dass wir mit der Konsole - im Grunde eine normale Python-Interpreter-Sitzung (mit einigen zusätzlichen Funktionalität von Spyder). Stattdessen möchten wir eine interaktive Python-Shell verwenden, kurz IPython aus dem ipython-Projekt. Dazu wählen Sie Interpreter - gt Öffnen Sie eine IPython-Konsole. Im Consolse-Fenster sollte eine neue Shell erscheinen und die IPython-Eingabeaufforderung In 1: angezeigt werden. Der Namensraum kann in IPython mit dem Befehl reset gelöscht werden. Geben Sie reset ein und drücken Sie die Eingabetaste, dann bestätigen Sie mit y: Wir besprechen dies ein wenig weiter, aber Sie können die folgenden überspringen, wenn Sie nicht interessiert sind: Nach dem Ausgeben des Rücksetzbefehls, sollten wir nur wenige Objekte im Namensraum dieser Sitzung definiert haben . Wir können sie alle mit dem Befehl dir () auflisten: Wenn Sie den Bestätigungsschritt des Rücksetzbefehls überspringen möchten, können Sie mit reset - f anstelle von reset zurücksetzen. Zusätzlich zu der Syntax, die von Python erzwungen wird, gibt es zusätzliche Konventionen bezüglich des Layouts des Quellcodes, insbesondere der Style Guide für Python-Quellcode als quotPEP8quot. Viele Verhaltensweisen von Spyder können über seine Einstellungen konfiguriert werden. Wo dies im Menü liegt, hängt von Ihrem Betriebssystem ab: Unter Windows und Linux gehen Sie zu Tools - gt Preferences Unter Mac OS gehen Sie zu Python - gt Preferences. Gehen Sie zu Preferences - gt IPython console - gt Startup und wählen Sie das Kontrollkästchen neben Öffnen Sie eine IPython-Konsole beim Start. Klicken Sie dann auf die Schaltfläche OK. Wenn Spyder das nächste Mal startet, wird die IPython-Konsole automatisch angezeigt. Gehen Sie zu Präferenzen - gt-Editor - gt Code IntrospectionAnalysis und wählen Sie die Tickbox neben Style-Analyse (PEP8) Um zu vermeiden, dass jede Magie, wenn die Konsole gestartet wird, gehen Sie zu Preferences - gt Console - gt Erweiterte Einstellungen - gt PYTHONSTARTUP Ersatz und wählen Sie Default PYTHONSTARTUP Skript (Und Spyder neu starten). (Diese Magie läuft unter anderem vom zukünftigen Importteilungsbefehl aus.) Die Standardeinstellungen können sich im nächsten Hauptversand ändern. Um den Import aller Objekte aus pylab und numpy in den aktuellen Namensraum der IPython Console zu vermeiden, gehen Sie zu Preferences - gt IPython console - gt Graphics und deaktivieren Sie das Kontrollkästchen neben Pylab and NumPy Module automatisch laden und deaktivieren Sie die Option Support aktivieren. Die Standardeinstellungen können sich in der nächsten Hauptversion ändern. Durch Vorgaben - gt IPython Konsole - gt Erweiterte Einstellungen - gt Verwenden Sie symbolische Mathematik können wir aktivieren IPythons symbolischen Python-Modus. Auf diese Weise wird eine sympy-Ausgabe (Latex-Stil) ermöglicht und auch einige sympy-Objekte automatisch importiert, sobald die IPython-Konsole gestartet wird, und berichtet, was sie getan hat. Wir können dann die Variablen x verwenden. Y ist. ZB wie folgt: F5 führt den aktuellen Puffer F9 führt den aktuell markierten Codeabschnitt aus: Dies ist sehr nützlich, um Definitionen von Funktionen (zB) in der Interpretersitzung zu aktualisieren, ohne die gesamte Datei erneut ausführen zu müssen CTRL ltRETURNgt führt die aktuelle Zelle ( Men enty Run - gt Run Zelle). Eine Zelle ist definiert als der Code zwischen zwei Zeilen, die mit dem vereinbarten Tag beginnen. SHIFT ltRETURNgt führt die aktuelle Zelle aus und führt den Cursor zur nächsten Zelle (Menüeintrag Run - gt Run Zelle und Fortschritt). Zellen sind nützlich, um ein großes Filecode-Segment in kleineren Einheiten auszuführen. (Es ist ein bisschen wie eine Zelle in einem IPython-Notebook, in der Chunks von Code unabhängig voneinander ausgeführt werden können.) ALT ltCURSOR UPgt verschiebt die aktuelle Zeile nach oben. Wenn mehrere Zeilen markiert sind, werden sie zusammen verschoben. ALTltCURSOR DOWNgt arbeitet entsprechend Bewegungslinie (n) nach unten. Wenn Sie mit der rechten Maustaste auf eine Funktionsmethode in der Quelle klicken, öffnet sich ein neues Editorfenster mit der Definition dieser Funktion. SHIFTCTRLALTM maximiert das aktuelle Fenster (oder ändert die Größe wieder normal, wenn in einem maximierten Fenster gedrückt wird) SHIFTCTRLF aktiviert die Suche über alle Dateien. Unter Mac OS X: CMD erhöht die Schriftgröße im Editor, CMD - Abnahme. Funktioniert auch in der IPython-Konsole. Die Schriftgröße für den Objekt-Explorer, die Python-Konsole usw. können einzeln über Preferences - gt Object-Explorer usw. eingestellt werden. Ich konnte keine Möglichkeit finden, die Schriftgröße im Variablen-Explorer zu ändern. CTRLSPACE autocompletes Befehle, Funktionsnamen, Variablennamen, Methoden sehr nützlich. CMDs (auf Mac OS X) und CTRLs (sonst) im Editor-Fenster speichern die aktuell bearbeitete Datei. Dies führt auch dazu, dass verschiedene Warndreiecke in der linken Spalte des Editors aktualisiert werden (andernfalls aktualisieren sie alle 2 bis 3 Sekunden standardmäßig). CMDs (auf Mac OS X) und CTRLs (sonst) im IPython-Konsolenfenster speichern die aktuelle IPython-Sitzung als HTML-Datei, einschließlich aller Zahlen, die inline angezeigt werden können. Dies ist nützlich, um schnell zu erfassen, was in einer Sitzung gemacht wurde. (Es ist nicht möglich, diesen gespeicherten Datensatz wieder in die Sitzung zu laden - wenn Sie diese Funktionalität benötigen, suchen Sie nach dem IPython-Notebook.) CMDi (auf Mac OS X) und CTRLi (andernfalls) beim Drücken des Cursors auf ein Objekt , Öffnet die Dokumentation für dieses Objekt im Objektinspektor. Dies sind die Einstellungen, die definieren, wie der Code im Editor ausgeführt wird, wenn wir Run - gt Run auswählen oder F5 drücken. Standardmäßig wird das Einstellungsfenster angezeigt, wenn wir zum ersten Mal versuchen, eine Datei auszuführen. Wenn wir die Einstellungen zu einem anderen Zeitpunkt ändern wollen, finden Sie sie unter Run - gt Configure oder mit F6. Es gibt drei Möglichkeiten für den Dolmetscher zu verwenden, von denen Ill diskutieren die ersten beiden. Wir gehen davon aus, wir haben ein Programm hello. py im Editor, der liest Dies ist der Vorschlag Vorschlag, und auch im Allgemeinen eine gute Wahl. Die Auswahl von Ausführen in der aktuellen Python - oder IPython-Interpreter-Einstellung unter Run - gt Konfigurieren bedeutet, dass Wenn die Ausführung von hello. py abgeschlossen ist, können wir mit dem Interpreter interagieren, in dem das Programm ausgeführt wurde, und wir können den bequemen IPython-Interpreter für diese (eher verwenden Als der Standard-Python-Interpreter). Können wir Objekte untersuchen und mit Objekten interagieren, die die Ausführung unseres Programms erzeugt, wie i und hello (). Dies ist in der Regel sehr nützlich für die inkrementelle Codierung, Test und Debugging: Wir können hello () direkt aus der Interpreter-Eingabeaufforderung aufrufen und müssen nicht die gesamte hello. py ausführen (obwohl, wenn wir die Funktion hello () ändern , Um den Puffer oder zumindest die Funktionsdefinition auszuführen, um die neue Version von hello () am Interpreter entweder durch Ausführen des gesamten Puffers oder über Run - gt Run Selection sichtbar zu machen.) Die Ausführung des Codes im Editor im Aktuelle Interpreter bedeutet auch, dass der Code, der ausgeführt wird, andere (globale) Objekte sehen, die in der Interpretersitzung definiert wurden. Diese Beharrlichkeit von Objekten ist leicht verständlich und in der Regel nicht erforderlich, wenn die Arbeit an kleinen Programmen (obwohl es von großer Wert sein kann gelegentlich). Diese Objekte könnten aus der vorherigen Ausführung des Codes, aus interaktiver Arbeit im Interpreter oder aus Convenience-Importen, wie beispielsweise aus dem Pylab-Import stammen (Spyder kann einige dieser Convenience-Importe automatisch durchführen). Diese Sichtbarkeit von Objekten im globalen Namensraum des Interpreters auf den von uns ausgeführten Code kann auch zu Codierungsfehlern führen, wenn der Code versehentlich auf diesen Objekten beruht. Hier ist ein Beispiel: vorstellen, dass wir den Code hello. py laufen lassen. Anschließend ist die Variable i im Interpreter als globale Variable bekannt. Bearbeiten wir die hello. py-Quelle und löschen versehentlich die Zeile i 42 wir den Puffer mit hello. py erneut aus. An diesem Punkt wird der Aufruf von hello (i) nicht fehlschlagen, da der Interpreter ein Objekt mit dem Namen i definiert hat, obwohl dies nicht in der Quelle von hello. py definiert ist. An diesem Punkt konnten wir hello. py speichern und (fälschlicherweise) denken, dass es korrekt ausgeführt werden würde. Das Ausführen in einer neuen Python-Interpretersitzung (oder über python hello. py. Say) würde jedoch zu einem Fehler führen, da i nicht definiert ist. Das Problem entsteht, weil der Code Gebrauch von einem Objekt (hier i) ohne es zu schaffen. Dies wirkt sich auch auf den Import von Modulen aus: Wenn wir Pylab an der IPython-Eingabeaufforderung importiert haben, wird unser Programm das sehen, wenn es in dieser IPython-Interpretersitzung ausgeführt wird. Um zu erlernen, wie wir überprüfen können, ob unser Code nicht von solchen existierenden Objekten abhängt, finden Sie unter Wie Sie überprüfen, ob Ihr Code korrekt ausgeführt wird. Die Auswahl von Ausführen im neuen dedizierten Python-Interpreter unter Run - gt Configure startet einen neuen Python-Interpreter jedes Mal, wenn das hello. py-Programm ausgeführt wird. Der Hauptvorteil dieses Modus über Ausführen im aktuellen Python - oder IPython-Interpreter ist, dass wir sicher sein können, dass es keine globalen Objekte gibt, die in diesem Interpreter definiert sind und vom Debugging und der wiederholten Ausführung unseres Codes ausgehen: jedes Mal, wenn wir den Code im Editor ausführen , Wird der Python-Interpreter, in dem der Code läuft, neu gestartet. Dies ist eine sichere Option, bietet jedoch weniger Flexibilität und kann den IPyton-Interpreter nicht verwenden. Angenommen, Sie haben für Ihren Code, um in der aktuellen Python oder IPython-Interpreter Execute gewählt. Dann haben Sie zwei Möglichkeiten, zu überprüfen, dass unser Code auf eigene Faust funktioniert (dh er hängt nicht von undefinierten Variablen, nicht importierten Modulen und Befehlen usw. ab). Alternativ können Sie IPythons magic reset verwenden, wenn Sie mit dem aktuellen IPython-Interpreter bleiben möchten Das alle Objekte (wie z. B. i im obigen Beispiel) aus dem aktuellen Namensraum entfernt und dann den Code im Editor ausführt. Sobald Sie ein Stück Code abgeschlossen haben, überprüfen Sie, dass es unabhängig ausgeführt wird, mit einer der Optionen, die in Wie zu verdoppeln überprüfen Sie Ihren Code ausgeführt korrekt Zitat seine eigene quot. Wenn mehrere Dateien im Editor geöffnet werden, werden die entsprechenden Registerkarten am oberen Rand des Fensterbereichs in alphabetischer Reihenfolge des Dateinamens von links nach rechts angeordnet. Auf der linken Seite der Registerkarten, gibt es als Symbol, Durchsuchen Tabs, wenn die Maus darüber schwebt zeigt. Es ist nützlich, direkt zu einer bestimmten Datei zu springen, wenn viele Dateien geöffnet sind. Umgebungsvariablen können im Fenster Konsole (unten rechts im Standardlayout) angezeigt werden. Klicken Sie auf das Symbol Optionen (die Tooltip ist Optionen) und wählen Sie Umgebungsvariablen. Alle auf dem Datenträger gespeicherten Anpassungen können durch Aufrufen von spyder über die Befehlszeile mit dem switch --reset zurückgesetzt werden. D. h. einen Befehl wie spyder - reset. Wenn Sie mit der rechten Maustaste auf Arrays im Variablen-Explorer klicken, erhalten Sie Optionen, um diese darzustellen und zu analysieren. Ein Doppelklick auf ein Wörterbuchobjekt öffnet ein neues Fenster, das das Wörterbuch gut anzeigt. Vermutlich gibt es andere versteckte Fähigkeit für einige andere Datentypen. Für Dokumentationszeichenfolgen, die in umstrukturiertem Text geschrieben wurden, werden einige Konventionen angenommen. Wenn wir diesen Richtlinien folgen, können wir sehr gut formulierte Dokumentationsstrings in Spyder erhalten. Um beispielsweise die Funktion average () im Spyder Object Explorer zu sehen, müssen wir den Dokumentationsstring folgendermaßen formatieren: Was hier von Bedeutung ist, ist, dass das Wort Parameter verwendet und unterstrichen wird. Die Zeile a. Die Zahl zeigt uns, dass der Typ des Parameters a die Zahl ist. In der nächsten Zeile, die eingerückt ist, können wir eine erweiterte Erklärung schreiben, was diese Variable repräsentiert, welche Bedingungen die zulässigen Typen erfüllen müssen usw. Dasselbe gilt für alle Parameter und auch für den zurückgegebenen Wert. Oft ist es eine gute Idee, ein Beispiel einzuschließen. Das Aktivieren des Debug-Modus (Debug - gt Debug) startet den IPython-Debugger (ipdb) in der IPython-Konsole. Dies wird als normal ausgeführt, aber das Editor-Anzeigefenster markiert die gerade auszuführende Zeile und der Variablen-Explorer zeigt Variablen im aktuellen Kontext der Programmausführung an. (Es werden nur numerische Variablen angezeigt, d. H. Keine Funktionsobjekte usw.). Die Tastenbefehle im IPython-Debugger sind einzelne Tastenanschläge: s, um in die aktuelle Anweisung zu gelangen. Wenn dies ein Funktionsaufruf ist, gehen Sie in diese Funktion. N in die nächste Anweisung wechseln. Wenn die aktuelle Anweisung eine Funktion ist, gehen Sie nicht in diese Funktion, sondern führen Sie sie vollständig aus, bevor Sie die Steuerung an die interaktive Debugger-Eingabeaufforderung zurückgeben. R füllen Sie alle Anweisungen in der aktuellen Funktion und Return aus dieser Funktion, bevor Sie das Steuerelement zurückgeben. P Drucken ermöglicht die Anzeige von Variablenwerten, zB wird p x den Wert der Variablen x ausgeben. Beachten Sie, dass Sie auf der ipdb auch Werte der Variablen ändern können. Zum Beispiel, um ein valides x zu modifizieren. Können Sie sagen, ipdb gt x 42 und der Debugger wird weiter mit x an 42 gebunden. Sie können auch Funktionen aufrufen und viele andere Dinge tun. Um den Debugging-Modus zu verlassen, können Sie exit eingeben oder aus dem Menü Debug - gt Debugging Control - gt Exit In der IPython-Konsole können wir Debug direkt aufrufen, nachdem eine Exception ausgelöst wurde: Dies startet den IPython Debug-Modus und erlaubt Inspektion der lokalen Variablen an dem Punkt, an dem die Ausnahme wie oben beschrieben auftrat. Dies ist viel effizienter als das Hinzufügen von Druck-Anweisungen auf den Code und es wieder ausgeführt. Wenn Sie dies verwenden, können Sie auch die Befehle nach oben und unten verwenden, die den Prüfpunkt nach oben und nach unten durch den Stapel navigieren. (Der Stack bedeutet, dass die Funktionen, die die aktuelle Funktion aufgerufen haben, umgekehrt sind.) Wenn wir eine IPython-Konsole mit der Version gt 1.0.0 verwenden, können wir entscheiden, ob die mit matplotlibpylab erstellten Zahlen inline erscheinen. D. h. innerhalb der IPython-Konsole, oder ob sie in einem neuen Fenster erscheinen sollen. Option 1 ist praktisch, um einen Datensatz der interaktiven Sitzung zu speichern (Abschnitt Shortcuts für nützliche Funktionen listet eine Verknüpfung auf, um die IPython-Konsole in einer HTML-Datei zu speichern). Option 2 ermöglicht es, interaktiv in die Figur zu zoomen, sie etwas zu manipulieren und die Figur über das Menü in verschiedene Dateiformate zu speichern. Der Befehl, um die Zahlen inline in der IPython-Konsole zu erhalten, ist matplotlib inline. Der Befehl, um Zahlen in ihrem eigenen Fenster (die technisch ist ein QT Windown) ist matplotlib qt. Die Spyder-Einstellungen können verwendet werden, um das Standardverhalten anzupassen (z. B. Preferences - gt IPython Console - gt Graphics - gt Unterstützung, um in Inline-Plotten umzuschalten). Aktuelle Beiträge Kategorien


No comments:

Post a Comment