Skip to main content

Upbit Candle Collector

Project description

pyubcc

Upbit Candle Collector for Python

Description

Upbit Candle Collector is a Python script that collects historical candle data from the Upbit API and saves it to a SQLite3 DB or CSV file. It allows you to specify the market, time interval, and date range for the data collection.

Quick Start

$ pip install pyubcc
$ ubcc BTC --timeframe day --days 30             

Starting data collection for BTC...
Period: 30 days, Timeframe: day

KRW-BTC: 30 candles [00:00, 116.88 candles/s]                                                                       
No missing candles found.

=== BTC Data Collection Results ===
Collection Period: 2025-01-18 09:00 ~ 2025-02-17 00:00
Timeframe: day (1440 minutes)
Collected Candles: 30
Data Gaps: 0
Timestamp Order Mismatches: 0

$ sqlite3 db/KRW-BTC_day.db "SELECT COUNT(*) FROM ohlcv;"
30

Usage

CLI

usage: ubcc [-h]
              [--timeframe {minute1,minute3,minute5,minute10,minute15,minute30,minute60,minute240,day,week,month}]
              [--days DAYS] [--db-path DB_PATH] [--export-csv] [--verbose]
              coin

Upbit Candle Collector

positional arguments:
  coin                  Coin symbol (e.g., BTC, ETH, DOGE) or full ticker (e.g., KRW-
                        BTC, USDT-BTC)

options:
  -h, --help            show this help message and exit
  --timeframe {minute1,minute3,minute5,minute10,minute15,minute30,minute60,minute240,day,week,month}
                        Time interval (default: day)
  --days DAYS           Collection period in days (default: 30)
  --db-path DB_PATH     DB file path (default: db/{coin}_{timeframe}.db)
  --export-csv          Export data to CSV file
  --verbose             Enable detailed logging

Module

from pyubcc import UpbitCandleCollector

# Initialize collector for BTC/KRW daily candles
collector = UpbitCandleCollector(
    coin='BTC',           # Coin symbol (e.g., BTC, ETH, DOGE)
    timeframe='day',      # Time interval (minute1 to month)
    fiat='KRW',          # Base currency (default: KRW)
    verbose=True         # Enable detailed logging
)

# Check database status
collector.check_db_status()

# Collect last 30 days of data
from datetime import datetime, timedelta
end_date = datetime.now()
start_date = end_date - timedelta(days=30)
results = collector.collect(start_date=start_date, end_date=end_date)

# Export collected data to CSV
collector.export_to_csv()

# Get data as pandas DataFrame
df = collector.get_ohlcv_data(start_date=start_date, end_date=end_date, filter_gaps=True)
print(df.head())

Return Values

The collect() method returns a tuple containing:

  • total_count: Number of collected candles
  • expected_candles: Expected number of candles for the period
  • timestamp_order_mismatches: Number of timestamp order mismatches
  • gaps: List of gaps in the data

Data Structure

The collected data includes:

  • timestamp: Candle timestamp
  • open: Opening price
  • high: Highest price
  • low: Lowest price
  • close: Closing price
  • volume: Trading volume

Public API

Constructor

UpbitCandleCollector(coin, timeframe, fiat="KRW", db_path=None, verbose=False, show_progress=False)
  • coin (str): Coin symbol (e.g., 'BTC', 'ETH', 'DOGE')
  • timeframe (str): Time interval (minute1, minute3, minute5, minute10, minute15, minute30, minute60, minute240, day, week, month)
  • fiat (str): Base currency (KRW, BTC, USDT, default: KRW)
  • db_path (str, optional): DB file path (default: db/{coin}{timeframe}{fiat}.db)
  • verbose (bool): Enable detailed logging
  • show_progress (bool): Show progress bar (default: False)

Methods

check_db_status()

Checks the database status and returns information about the first and last timestamps.

  • Returns: bool - True if database contains data, False if empty

collect(start_date=None, end_date=None)

Collects historical data for the specified period.

  • Parameters:
    • start_date (datetime, optional): Start date for data collection
    • end_date (datetime, optional): End date for data collection (default: current time)
  • Returns: tuple (total_count, expected_candles, timestamp_order_mismatches, gaps)

get_ohlcv_data(start_date=None, end_date=None, filter_gaps=True)

Retrieves stored OHLCV data as a pandas DataFrame.

  • Parameters:
    • start_date (datetime, optional): Start date for data retrieval
    • end_date (datetime, optional): End date for data retrieval
    • filter_gaps (bool): Whether to filter data gaps (default: True)
  • Returns: pandas.DataFrame with OHLCV data

export_to_csv(start_date=None, end_date=None)

Exports OHLCV data to a CSV file.

  • Parameters:
    • start_date (datetime, optional): Start date for data export
    • end_date (datetime, optional): End date for data export
  • Returns: str - Path to the exported CSV file, or None if no data to export

analyze_gaps(start_date=None, end_date=None)

Analyzes gaps in candle data from database.

  • Parameters:
    • start_date (datetime, optional): Start date for gap analysis
    • end_date (datetime, optional): End date for gap analysis
  • Returns: list of dictionaries containing gap information

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyubcc-0.1.0.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyubcc-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file pyubcc-0.1.0.tar.gz.

File metadata

  • Download URL: pyubcc-0.1.0.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for pyubcc-0.1.0.tar.gz
Algorithm Hash digest
SHA256 aeb18c79f936908eb745b9d7404b7517e8345993be5cae1a480ec35b3d2c0707
MD5 9606ef3648274db673b1fbde2e1b397b
BLAKE2b-256 5f205ae5d87014e178c1392b11eaa31a01065bbdba11246fc012381595805873

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyubcc-0.1.0.tar.gz:

Publisher: publish.yml on kyungw00k/pyubcc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyubcc-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyubcc-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for pyubcc-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d2ef7a4658d618f25510889e4fc4271fb28f632407ed44a867bf5f690b712037
MD5 bf193322dd6d64c92273a60e0c0ad7e0
BLAKE2b-256 8cb4cc765abb25625be22a3e3cb6d883af5b3403c0cae225eda0368240e14316

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyubcc-0.1.0-py3-none-any.whl:

Publisher: publish.yml on kyungw00k/pyubcc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page