[PYTHON] Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique

environnement

- MacOS Sierra 10.12.6
- Python 3.5.3 :: Anaconda 4.4.0 (x86_64)
- Jupyter 4.3.0

Contexte

―― 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.

problème

Solution

――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.

spécification

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.

Obtenez des informations sur les prix de vente auprès de Zaif Exchange

--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

Créer un graphique à partir des informations de prix de vente acquises

--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 ")

Résumé

Recommended Posts

Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Obtenez des informations sur la monnaie virtuelle Coincheck avec l'API ♪
Créez une base de données propre pour les tests avec FastAPI et effectuez le test Unittest de l'API avec pytest
Créez un lot d'images et gonflez avec ImageDataGenerator
Créez une carte thermique de tweet avec l'API Google Maps
Obtenez des commentaires et des abonnés avec l'API de données YouTube
Obtenez l'identifiant d'un GPU avec une faible utilisation de la mémoire
Obtenez UNIXTIME au début d'aujourd'hui avec une commande
Fabriquez un thermomètre BLE et obtenez la température avec Pythonista3
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
Créez une fonction pour obtenir le contenu de la base de données dans Go
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Créez un environnement virtuel avec Python!
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Lisez l'image du graphique avec OpenCV et obtenez les coordonnées du point final du graphique
L'histoire de la création d'une caméra sonore avec Touch Designer et ReSpeaker
Créez DNN-CRF avec Chainer et reconnaissez la progression des accords de la musique
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
Obtenez le salaire moyen d'un emploi avec des conditions spécifiées sur Indeed.com
[Python] Créez un environnement virtuel avec Anaconda
Fonctionnement du script de trading automatique de monnaie virtuelle
Obtenez les débats parlementaires via l'API
Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)
Obtenez des vacances avec l'API Google Agenda
Obtenez le nom de fichier du répertoire (glob)
Créez une application simple qui intègre l'API Fetch pour les requêtes Ajax dans Flask et expliquez-la rapidement.
Créez une API REST à l'aide du modèle appris dans Lobe et TensorFlow Serving.
Créons un système de réception simple avec le framework sans serveur Python Chalice et Twilio
Obtenez une liste d'articles publiés par les utilisateurs avec Python 3 Qiita API v2
Créez un pdf facile à lire des lois et ordonnances gouvernementales à l'aide de l'API Law
Utilisez la commande [shell] pour compresser par zip n'importe quel fichier pour créer un fichier et supprimer le fichier d'origine.
Créer un projet et une application Django dans un environnement virtuel Python et démarrer le serveur
Obtenez le nombre de tweets liés à un certain mot-clé à l'aide de l'API Twitter
Créez un filtre pour obtenir un jeton d'accès avec l'API Graph (Flask)
Comment obtenir une liste de fichiers dans le même répertoire avec python
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Après avoir frappé l'API Qiita avec Python pour obtenir une liste d'articles pour les débutants, nous visiterons les articles divins
[Python] Récupérez les fichiers dans le dossier avec Python
Récupérer l'appelant d'une fonction en Python
Créer un environnement virtuel avec conda avec Python
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Obtenir une liste d'utilisateurs IAM avec Boto3
Créez un environnement virtuel avec pyenv et venv
Obtenez l'objet et le corps de Gmail avec Python et l'API Gmail
Prise en compte des forces et faiblesses de Python
Créez une commande pour obtenir le journal de travail
Créez un outil de traduction avec Translate Toolkit
Créer une table avec le notebook IPython
Automatisez la suppression de l'arrière-plan pour les derniers portraits dans un répertoire avec Python et API
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
Essayez de créer une table d'enregistrement de bataille avec matplotlib à partir des données de "Schedule-kun"