本業や研究でより良いアウトプットを出すために
いろいろなソースコードを作っていきたいと思います
優良なデータを集めて Microsoft Access などの
データベースに保存したい
そこでAPIの活用を考えました
上記のサイトを参考に
APIキーを作ってみます
get_stock_API.py
import requests
def get_stock_data(symbol):
API_KEY = '〇〇' # ここにAPIキーを入力
BASE_URL = 'https://www.alphavantage.co/query'
parameters = {
"function": "TIME_SERIES_DAILY",
"symbol": symbol,
"apikey": API_KEY,
"datatype": "json"
}
response = requests.get(BASE_URL, params=parameters)
data = response.json()
return data
コードスニペットは、Alpha VantageのAPIを使用して、特定の株式の日次時系列データをJSON形式で取得する方法を示しています。requestsライブラリを使用してAPIにリクエストを送り、paramsで指定したパラメータ(関数、シンボル、データ形式、APIキー)を含めます。API_KEY = : '〇〇'の部分には、あなたがAlpha Vantageから取得したAPIキーを入力してください。
このリクエストを送信すると、指定した株式のデータが応答として返され、print(response.json())でその内容を表示
main.py
import requests
from src import get_stock_API
if __name__ == "__main__":
symbol = "〇〇" # 株のシンボルを指定
stock_data = get_stock_API.get_stock_data(symbol)
print(stock_data)
main.py の実行で無事に
データを取り出せました
これらのデータをもとに
データベースの接続を考えてみます
環境変数を利用する
環境変数を設定:
環境変数を設定するには、以下のコマンドを実行します:
export MY_API_KEY="your_api_key_here"
import os
api_key = os.environ.get("STOCK_API_KEY")
ここでMY_API_KEYは任意の環境変数名で、your_api_key_hereは実際のAPIキーに置き換えてください。
#!/bin/bash
cd /path/to/your/directory
export MY_API_KEY="your_api_key_here"
python3 your_script.py
ファイルを保存して実行権限を付与します:
chmod +x run_my_script.sh
これでバッチファイルを実行できます:
bash run_my_script.sh
get_stock_API.py を変更
import os
import requests
def get_stock_data(symbol):
API_KEY = os.environ.get("STOCK_API_KEY")
#API_KEY = '〇〇' # ここにAPIキーを入力
BASE_URL = 'https://www.alphavantage.co/query'
parameters = {
"function": "TIME_SERIES_DAILY",
"symbol": symbol,
"apikey": API_KEY,
"datatype": "json"
}
response = requests.get(BASE_URL, params=parameters)
data = response.json()
return data
def save_stock_data_to_csv(stock_data, filename="stock_data.csv"):
# Extract relevant data from stock_data (adjust as needed)
time_series = stock_data.get("Time Series (Daily)", {})
rows = [(date, values["1. open"], values["4. close"]) for date, values in time_series.items()]
# Write data to CSV file
with open(filename, "w", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Date", "Open Price", "Close Price"]) # Write header
writer.writerows(rows)
print(f"Stock data saved to {filename}")
main.py を変更
import requests
# multiprocessingをインポートすることで、プロセスの生成と管理が可能になります。
import multiprocessing
# get_stock_APIからget_stock_data関数とsave_stock_data_to_csv関数をインポートします。
# これらの関数は株価データの取得とCSVファイルへの保存を行います。
from src.get_stock_API import get_stock_data, save_stock_data_to_csv
# 株式シンボルを引数として、株価データを取得し、CSVファイルに保存する関数です。
def process_stock(symbol):
# 指定されたシンボルの株価データを取得します。
stock_data = get_stock_data(symbol)
# 取得した株価データをCSVファイルに保存します。ファイル名はシンボル名に基づきます。
save_stock_data_to_csv(stock_data, filename=f"{symbol}_stock_data.csv")
# このスクリプトが直接実行された場合にのみ以下のコードブロックが実行されます。
if __name__ == "__main__":
# 処理する株式シンボルのリストです。
symbols = ["IBM", "AAPL", "GOOG"]
# 空のプロセスリストを作成します。このリストは後でプロセスを管理するために使用されます。
processes = []
# 株式シンボルごとにループを実行します。
for symbol in symbols:
# 各シンボルに対して、新しいプロセスを生成します。ターゲット関数は`process_stock`で、引数はシンボルです。
p = multiprocessing.Process(target=process_stock, args=(symbol,))
#p = multiprocessing.Process(target=process_stock_to_db, args=(symbol,))
# 生成したプロセスをプロセスリストに追加します。
processes.append(p)
# プロセスを開始します。
p.start()
# 全てのプロセスが終了するまで待機します。
for process in processes:
process.join()
上記は wsl2 で実施しました
保存された csv データから
Microsoft Access などの
データベースに保存する バッチファイルの作成などを考えます