- MacOS Sierra 10.12.6
- Python 3.5.3 :: Anaconda 4.4.0 (x86_64)
- Jupyter 4.3.0
―― L'échange Zaif est un échange de devises virtuelles précieux qui propose des devises virtuelles qui peuvent être achetées et vendues par paires avec le yen japonais uniquement ici, telles que NEM et Monacoin, ainsi que Bitcoin.
――La bourse Zaif publie une API qui vous permet d'obtenir et d'échanger des informations sur les prix, et même si le site Web est lourd, l'API survit souvent. Par conséquent, si vous acquérez périodiquement le prix de négociation avec l'API et affichez le graphique, vous pouvez vérifier le mouvement des prix même si vous ne pouvez pas vous connecter au site Web.
Créez un script qui acquiert les informations sur les prix de vente de l'échange Zaif et les écrit dans un fichier csv, et un script qui crée un graphique à partir du fichier csv écrit, et exécutez-les régulièrement avec cron.
--Importer les modules requis tels que pandas, numpy, json, etc.
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
from datetime import datetime
import time
import json
import requests
import csv
import sys, codecs
date = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
response = requests.get('https://api.zaif.jp/api/1/last_price/btc_jpy')
if response.status_code != 200:
raise Exception('return status code is {}'.format(response.status_code))
res_dict = json.loads(response.text)
btc_price = res_dict['last_price']
#[Heure actuelle, prix de vente]Créez une liste de
btc_list = [date, btc_price]
f = open("/var/www/html/zaif/btc.csv", "a")
writer = csv.writer(f, lineterminator='\n')
writer.writerow(btc_list)
f.close()
Si vous exécutez un script qui inclut une opération d'écriture dans un fichier avec cron, l'erreur suivante peut s'afficher et vous ne pourrez peut-être pas l'exécuter.
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 720: ordinal not in range(128)
Cette fois, l'erreur a été évitée en écrivant ʻexport LANG = ja_JP.UTF-8; `dans crontab comme indiqué ci-dessous.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * export LANG=ja_JP.UTF-8; runipy /home/user/Get_Zaif_data.ipynb
--Importer les modules requis tels que matplotlib
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
from datetime import datetime
import time
import json
import requests
import csv
import matplotlib.pyplot as plt
from matplotlib.pylab import rcParams
%matplotlib inline
import seaborn as sns
sns.set_style('whitegrid')
rcParams['figure.figsize'] = 20, 10
from matplotlib.dates import DateFormatter
btc_df = pd.read_csv("/var/www/html/zaif/btc.csv", names = ("date", "BTC price"))
btc_df = btc_df[-864:-1]
--Mouler la colonne de date de btc_df au format hh: mm
date_df = btc_df["date"].str[10:16]
btc_df = pd.concat([date_df, btc_df["BTC price"]], axis=1)
--Calculer la bande de bollinger de BTC (ce qui suit ne décrit que BTC, il en va de même pour les autres monnaies virtuelles)
rm = btc_df.set_index("date").rolling(window=24).mean()
rstd = btc_df.set_index("date").rolling(window=24).std()
upper_band = rm + rstd * 2
lower_band = rm - rstd * 2
--Créez un graphique à partir de Dataframe (ce qui suit ne décrit que BTC, il en va de même pour les autres monnaies virtuelles)
ax = btc_df.set_index("date").plot()
rm.columns = ["Rolling mean"]
rm.plot(ax=ax, color="#8FBC8F")
upper_band.columns = ["Upper band"]
upper_band.plot(ax=ax, color="#F4A460")
lower_band.columns = ["Lower band"]
lower_band.plot(ax=ax, color="#F4A460")
plt.legend(loc='best',
fontsize=14,
borderaxespad=0.,)
plt.tick_params(labelsize=14)
plt.savefig("/var/www/html/zaif/btc.png ")
Recommended Posts