普段は資産運用の記事が多いのですが、今回はエンジニアらしく Pythonを使った仮想通貨の記録プログラム を紹介します。
「仮想通貨の価格推移を長期的に記録したい」と思ったことはありませんか?
多くのサイトでは 直近1年程度 しか見られず、もっと細かく追いたいと感じる方も多いはず。
そこで、私が保有している リップル(XRP) の値動きを記録するため、Pythonで4本値(始値・高値・安値・終値)を保存できるプログラムを作ってみました。
開発環境
- OS:Windows 11
- 言語:Python 3.x
- 開発ツール:Visual Studio Code
Python環境構築手順(Windows向け)
1. Pythonをインストール
公式サイトからWindows用のPythonをインストールしてください。
👉 Python公式ダウンロードページ
以下の赤丸部分を押してダウンロードしてください。Python3以上なら大丈夫です。

ダウンロードしたインストーラを実行してInstall Nowをクリックします。正常終了したらpythonの準備完了です。

2. VS Codeをインストール
プログラミング用エディタとしてVS Codeを利用します。
👉 Visual Studio Code公式サイト
Downloade for windowsをクリックしてインストーラをダウンロードします。
インストーラを実行してダウンロードします。色々聞かれますが基本はデフォルトでいいです。インストール出来たらVS Codeも準備完了です。

3. 仮想環境(.venv)の作成
VS Codeで以下を実行します。 まずはVS Codeを開いてください。
開いたら以下の手順で操作してください
1. Ctrl + Shift + P → 「Python: 環境作成」を選択
2. インストール済みのPythonバージョンを選ぶんでください(スクショは筆者の古いPythonバージョンですが、皆様はダウンロードしたPythonバージョンを選んでください
3. .venv フォルダが自動生成されます
以下を実行して仮想環境を有効化してください:
.venv\Scripts\activate
※.venvをVS Code上でアクティベートできない方はコマンドプロンプト上で実行してみてください
有効化出来たら画像のように(.venv)が頭につきます。
4. 必要なライブラリのインストール
仮想環境が準備できたらライブラリを導入します。
pip install pycoingecko pip install pandas
これでAPIを使う準備が整いました。
プログラム実装例
以下のコードを coin_gecko.py として保存してください。
from pycoingecko import CoinGeckoAPI from datetime import datetime import pandas as pd import numpy as np import time import os # ---------------------------- # 定数 # ---------------------------- SYMBOLS = [ 'solana', # SOL 'stepn', # GMT 'green-satoshi-token', # GST 'green-satoshi-token-on-eth', # GST-ETH 'bitcoin', # BTC 'ethereum', # ETH 'stellar', # XLM 'usd-coin', # USDC ] CURRENCIES = ['usd', 'jpy'] YMD_COLS = ['ymd', 'year', 'month', 'day'] OHLC_COLS = ['open', 'high', 'low', 'close'] cg = CoinGeckoAPI() # ---------------------------- # 時間データを整形 # ---------------------------- def process_dates(timestamps): dates, ymd, years, months, days, hours = [], [], [], [], [], [] for ts in timestamps: loc = datetime.utcfromtimestamp(int(ts / 1000)) dates.append(loc) ymd.append(f"{loc.year:04}/{loc.month:02}/{loc.day:02}") years.append(loc.year) months.append(loc.month) days.append(loc.day) hours.append(loc.hour) return dates, ymd, years, months, days, hours # ---------------------------- # OHLCデータ取得と整形 # ---------------------------- def fetch_ohlc(symbol, currency, days=7): ohlc = cg.get_coin_ohlc_by_id(symbol, currency, str(days)) df = pd.DataFrame(ohlc, columns=['date'] + OHLC_COLS) dates, ymd, years, months, days, hours = process_dates(df['date']) df['date'] = dates df['ymd'] = ymd df['year'] = years df['month'] = months df['day'] = days df['hour'] = hours return df # ---------------------------- # 日次データに変換 # ---------------------------- def to_daily(df): open_price = df[df['hour'] == 0][['ymd', 'open'] + YMD_COLS[1:]] close_price = df[df['hour'] == 20][['ymd', 'close'] + YMD_COLS[1:]] high_low = df.groupby('ymd').agg({'high': np.max, 'low': np.min}).reset_index() daily = open_price.merge(close_price, on=['ymd'] + YMD_COLS[1:], how='inner') daily = daily.merge(high_low, on='ymd', how='inner') return daily[['ymd'] + OHLC_COLS + YMD_COLS[1:]] # ---------------------------- # CSV保存 # ---------------------------- def save_to_csv(symbol, currency, new_data): filename = f"{symbol}_{currency}.csv" if os.path.exists(filename): old_data = pd.read_csv(filename) merged = pd.concat([old_data, new_data]).drop_duplicates().sort_values(YMD_COLS) print(f"更新: {filename}") else: merged = new_data print(f"新規作成: {filename}") merged.to_csv(filename, index=False) # ---------------------------- # メイン処理 # ---------------------------- def main(): for symbol in SYMBOLS: print(f"\n{'-'*20} {symbol} {'-'*20}") for currency in CURRENCIES: df = fetch_ohlc(symbol, currency) daily = to_daily(df) print(f"通貨: {currency}, データ件数: {len(daily)}") save_to_csv(symbol, currency, daily) time.sleep(5) # API呼び出し制限回避用 if __name__ == "__main__": main()
実行方法:
python coin_gecko.py
これで csv ファイルに仮想通貨の4本値が記録されます。
日本円とドル両方を記録します。他のコインを見たい場合はSYMBOLS変数のリストに追加すればオッケーです。

仮想通貨価格記録を自動化する方法
手動で実行するのが面倒な方は、Windowsの タスクスケジューラ を使って毎朝自動実行できます。 さらに本格的にやるなら、Raspberry Pi などの小型サーバーに常時稼働させても面白いです。
実際に使ってみた感想
リップル(XRP)の値動きが 長期的に見えるようになった
確定申告に備えて利益の管理がしやすくなる
データをPandasで加工して可視化すると、トレンド把握にも役立つ
投資や取引履歴を残していない人でも、この仕組みがあれば 自分専用の価格データベース を作れます。
まとめ
Python + CoinGecko API で仮想通貨の4本値を取得できる
環境構築(Python、VS Code、.venv)さえできれば誰でも実行可能
タスクスケジューラやラズパイを使えば自動化も可能
また今回のようなプログラム系も投稿していこうと思います。読んでいただきありがとうございました。
【関連記事】 www.se30invest.com