Einführung von Befehlen zum Kauf und Verkauf von Aktien.
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