[PYTHON] Fonction tyrolienne pour acheter et vendre des actions

1 Et cet article?

Présentation des commandes d'achat et de vente d'actions.

2 Sommaire

[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

Fonction tyrolienne pour acheter et vendre des actions
Achetez et vendez de la monnaie virtuelle à l'aide de l'API Zaif
Introduction à la définition de la fonction Thano et à la différenciation automatique
Introduction à l'apprentissage profond ~ Fonction de localisation et de perte ~
[Python] Comment utiliser la fonction de hachage et taple.
[Systre] Achetez et vendez avec le MACD moyen mobile ♬
Let Code Day 19 À partir de zéro "121. Meilleur moment pour acheter et vendre des actions"
Comment définir Decorator et Decomaker avec une seule fonction