Présentation des commandes d'achat et de vente d'actions.
[Obtenir ici] les fichiers csv des marques n1570 et n7752 utilisés lors de l'exécution du code (https://github.com/fdfpy/zipline1)
2-1 zipline.api.order Achetez le nombre d'actions spécifié.
test.py
from zipline.api import order, record, symbol,set_benchmark
import pandas as pd
from datetime import datetime
import zipline
import pytz #paramètres de fuseau horaire https://narito.ninja/blog/detail/81/
from trading_calendars import get_calendar #Importez le calendrier de chaque échange
from collections import OrderedDict
import seaborn as sns
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
###### (1)Réglage initial#######
HDIR="xxxxxxxxxxxxxxxxxx" #Spécifiez le répertoire dans lequel le fichier csv de données de marque est stocké.
data=OrderedDict() #Donnez de l'ordre au dictionnaire ordonné.
tickers=["n1570","n7752"] #Spécifiez le nom de la marque.
###### (2)Lire le cours d'une action à partir d'un fichier csv######
for ticker in tickers:
DIR=HDIR + ticker +".csv" #Marque à lire(fichier csv)Spécifier.
data[ticker]= pd.read_csv(DIR, index_col=0,parse_dates=True) #Lisez le fichier csv.
###### (3)Préparez un ensemble de données.###########
panel=pd.Panel(data) #Placez les données de marque dans le panneau de matrice 3D.
panel.major_axis=panel.major_axis.tz_localize(pytz.utc) #Réglez l'heure sur la zone UTC.(Si vous ne le définissez pas sur la zone UTC pour plus de commodité, une erreur se produira.)
###### (4)Description de l'algorithme de trading#########
def initialize(contect):
set_benchmark(symbol("n1570")) #Désignez le stock n1570 comme référence.
def handle_data(context,data):
order(symbol("n1570"),1) #Achetez une part chaque jour à la clôture.
record(N1570=data.current(symbol("n1570"),"price")) #Enregistrez la valeur de clôture de l'émission n1570.
###### (5)Effectuer un test arrière#########
#Spécifiez la date et l'heure de début et la date et l'heure de fin
starttime=datetime(2020,2,4,0,0,0,0,pytz.utc)
endtime=datetime(2020,2,8,0,0,0,0,pytz.utc)
#Exécutez un backtest.(Achetez une part de la marque n1570 à la clôture chaque jour.)
perf=zipline.run_algorithm(start=starttime,
end=endtime,
initialize=initialize,
capital_base=1000000, #Spécifiez l'actif au début.
handle_data= handle_data,
data=panel,
trading_calendar=get_calendar('XTKS') #Lire le calendrier de la Bourse de Tokyo
)
dat0=pd.DataFrame(perf,columns=["N1570","ending_cash","ending_exposure"])
dat0.to_csv("C:/Users/fdfpy/anaconda3/backtestresult/dat0.csv")
print(dat0)
Le résultat de l'exécution est le suivant.
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
(Remarque)Description de chaque ligne
N1570 :CLOSE valeur de la marque N1570
ending_cash :Encaisse
ending_exposure :Valeur de valorisation des stocks détenus
2-2 zipline.api.order_percent Achète des stocks dans le ratio spécifié de trésorerie disponible. Du code affiché en 2-1 uniquement, la partie «(4) Description de l'algorithme de trading» est affichée. (Les autres parties sont les mêmes)
test.py
###### (4)Description de l'algorithme de trading#########
def initialize(contect):
set_benchmark(symbol("n1570")) #Désignez le stock n1570 comme référence.
def handle_data(context,data):
zipline.api.order_percent(symbol("n1570"),0.1) #Fermer tous les jours et pour cent de tous les actifs(=10%)Achetez le stock qui correspond à
record(N1570=data.current(symbol("n1570"),"price")) #Enregistrez la valeur de clôture de l'émission 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
(La description)
Actifs quotidiens(ending_cash)10 sur%J'achète le prix de l'action du montant de.(Les fractions sont tronquées)
Recommended Posts