[PYTHON] Zipline Funktion zum Kaufen und Verkaufen von Aktien

1 Was ist mit diesem Artikel?

Einführung von Befehlen zum Kauf und Verkauf von Aktien.

2 Inhalt

Holen Sie sich die CSV-Dateien für die Marken n1570 und n7752, die beim Ausführen des Codes verwendet wurden hierher kommen

2-1 zipline.api.order Kaufen Sie die angegebene Anzahl von Aktien.

test.py


from zipline.api import order, record, symbol,set_benchmark
import pandas as pd
from datetime import datetime
import zipline
import pytz  #Zeitzoneneinstellungen https://narito.ninja/blog/detail/81/
from trading_calendars import get_calendar #Importieren Sie den Kalender jeder Börse
from collections import OrderedDict
import seaborn as sns
import matplotlib.dates as mdates
import matplotlib.pyplot as plt


###### (1)Grundeinstellung#######

HDIR="xxxxxxxxxxxxxxxxxx" #Geben Sie das Verzeichnis an, in dem die CSV-Datei mit Markendaten gespeichert ist.
data=OrderedDict() #Bestellen Sie das bestellte Wörterbuch.
tickers=["n1570","n7752"]  #Geben Sie den Markennamen an.


###### (2)Lesen Sie den Aktienkurs einer Aktie aus einer CSV-Datei######

for ticker in tickers:
    DIR=HDIR + ticker +".csv" #Marke zu lesen(CSV-Datei)Konkretisieren.
    data[ticker]= pd.read_csv(DIR, index_col=0,parse_dates=True) #Lesen Sie die CSV-Datei.

###### (3)Bereiten Sie einen Datensatz vor.###########

panel=pd.Panel(data)  #Fügen Sie die Markendaten in das 3D-Array-Bedienfeld ein.
panel.major_axis=panel.major_axis.tz_localize(pytz.utc) #Stellen Sie die Zeit auf die UTC-Zone ein.(Wenn Sie es der Einfachheit halber nicht auf die UTC-Zone einstellen, tritt ein Fehler auf.)


###### (4)Beschreibung des Handelsalgorithmus#########

def initialize(contect):
    set_benchmark(symbol("n1570")) #Bestimmen Sie die Aktie n1570 als Benchmark.


def handle_data(context,data):
    order(symbol("n1570"),1) #Kaufen Sie zum Schluss jeden Tag eine Aktie.
    record(N1570=data.current(symbol("n1570"),"price")) #Notieren Sie den Schlusswert der Ausgabe n1570.


###### (5)Führen Sie einen Backtest durch#########    
    
#Geben Sie Startdatum und -zeit sowie Enddatum und -zeit an
starttime=datetime(2020,2,4,0,0,0,0,pytz.utc)
endtime=datetime(2020,2,8,0,0,0,0,pytz.utc)    
    
#Führen Sie einen Backtest durch.(Kaufen Sie jeden Tag eine Aktie der Marke n1570 zum Handelsschluss.)
perf=zipline.run_algorithm(start=starttime,
                            end=endtime,
                            initialize=initialize,
                            capital_base=1000000, #Geben Sie das Asset zu Beginn an.
                            handle_data= handle_data,
                            data=panel,
                            trading_calendar=get_calendar('XTKS') #Lesen Sie den Kalender der Tokyo Stock Exchange
                           )

dat0=pd.DataFrame(perf,columns=["N1570","ending_cash","ending_exposure"])

dat0.to_csv("C:/Users/fdfpy/anaconda3/backtestresult/dat0.csv")
print(dat0)

Das Ausführungsergebnis ist wie folgt.

python


[4 rows x 38 columns]
                           N1570  ending_cash  ending_exposure
2020-02-04 06:00:00+00:00  21240  1000000.000              0.0
2020-02-05 06:00:00+00:00  21680   978309.159          21680.0
2020-02-06 06:00:00+00:00  22750   955547.783          45500.0
2020-02-07 06:00:00+00:00  22630   932906.467          67890.0

(Hinweis)Beschreibung jeder Zeile
N1570           :CLOSE-Wert der Marke N1570
ending_cash     :Bar auf die Hand
ending_exposure :Bewertungswert der gehaltenen Aktien

2-2 zipline.api.order_percent Kauft Aktien innerhalb des angegebenen Kassenbestands. Von dem Code, der nur in 2-1 veröffentlicht wurde, wird der Teil "(4) Beschreibung des Handelsalgorithmus" veröffentlicht. (Andere Teile sind gleich)

test.py


###### (4)Beschreibung des Handelsalgorithmus#########

def initialize(contect):
    set_benchmark(symbol("n1570")) #Kennzeichnen Sie die Marke n1570 als Benchmark.


def handle_data(context,data):

    zipline.api.order_percent(symbol("n1570"),0.1) #Schließen Sie jeden Tag und Prozent aller Vermögenswerte(=10%)Kaufen Sie die Aktie, die entspricht
    record(N1570=data.current(symbol("n1570"),"price")) #Notieren Sie den Schlusswert der Ausgabe n1570.

python


[4 rows x 38 columns]
                           N1570  ending_cash  ending_exposure
2020-02-04 06:00:00+00:00  21240  1000000.000              0.0
2020-02-05 06:00:00+00:00  21680   913236.636          86720.0
2020-02-06 06:00:00+00:00  22750   822191.132         182000.0
2020-02-07 06:00:00+00:00  22630   731625.868         271560.0

(Erläuterung)
Tägliches Vermögen(ending_cash)10 von%Ich kaufe den Aktienkurs in Höhe von.(Brüche werden abgeschnitten)

Recommended Posts

Zipline Funktion zum Kaufen und Verkaufen von Aktien
Kaufen und verkaufen Sie virtuelle Währungen mit der Zaif-API
Einführung in die Thano-Funktionsdefinition und automatische Differenzierung
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
[Python] Verwendung von Hash-Funktion und Taple.
[Systre] Kaufen und verkaufen mit mobilem Durchschnitts-MACD ♬
Lassen Sie Code Tag 19 ab Null "121. Beste Zeit zum Kaufen und Verkaufen von Aktien"
So definieren Sie Decorator und Decomaker mit einer Funktion