Source code for koapy.cli.commands.get.chart_data.daily

import click

from koapy.cli.utils.fail_with_usage import fail_with_usage
from koapy.cli.utils.verbose_option import verbose_option
from koapy.utils.logging import get_logger

[docs]logger = get_logger(__name__)
@click.command(short_help="Get daily OHLCV of stocks.") @click.option("-c", "--code", metavar="CODE", help="Stock code to get.") @click.option( "-o", "--output", metavar="FILENAME", type=click.Path(), help="Output filename for code.", ) @click.option( "-f", "--format", metavar="FORMAT", type=click.Choice(["xlsx", "sqlite3"], case_sensitive=False), default="xlsx", help="Output format. (default: xlsx)", ) @click.option( "-s", "--start-date", metavar="YYYY-MM-DD", type=click.DateTime(formats=["%Y-%m-%d", "%Y%m%d"]), help="Most recent date to get. Defaults to today or yesterday if market is open.", ) @click.option( "-e", "--end-date", metavar="YYYY-MM-DD", type=click.DateTime(formats=["%Y-%m-%d", "%Y%m%d"]), help="Stops if reached, not included (optional).", ) @click.option( "-p", "--port", metavar="PORT", help="Port number of grpc server (optional)." ) @verbose_option()
[docs]def daily( code, output, format, start_date, end_date, port ): # pylint: disable=redefined-builtin if (code, output, start_date, end_date) == (None, None, None, None): fail_with_usage() if output is None: output = "{}.{}".format(code, format) from koapy.backend.kiwoom_open_api_plus.core.KiwoomOpenApiPlusEntrypoint import ( KiwoomOpenApiPlusEntrypoint, ) with KiwoomOpenApiPlusEntrypoint(port=port) as context: context.EnsureConnected() df = context.GetDailyStockDataAsDataFrame(code, start_date, end_date) if format == "xlsx": df.to_excel(output) logger.info("Saved data to file: %s", output) elif format == "sqlite3": from sqlalchemy import create_engine engine = create_engine("sqlite:///" + output) tablename = "A" + code df.to_sql(tablename, engine) logger.info("Saved data to file %s with tablename %s", output, tablename)