Skip to content

Latest commit

 

History

History
524 lines (323 loc) · 15.8 KB

stock_manager.rst

File metadata and controls

524 lines (323 loc) · 15.8 KB
.. py:currentmodule:: hikyuu

证券管理

构建K线查询条件

.. py:class:: Query

    K线数据查询条件一般在Python中使用 Query 即可不用指明 Query简化 :py:data:`Query.KType` 枚举值

    - Query.DAY - 日线类型
    - Query.WEEK - 周线类型
    - Query.MONTH - 月线类型
    - Query.QUARTER - 季线类型
    - Query.HALFYEAR - 半年线类型
    - Query.YEAR - 年线类型
    - Query.MIN - 1分钟线类型
    - Query.MIN5 - 5分钟线类型
    - Query.MIN15 - 15分钟线类型
    - Query.MIN30 - 30分钟线类型
    - Query.MIN60 - 60分钟线类型

    简化 :py:data:`Query.RecoverType` 枚举值

    - Query.NO_RECOVER      - 不复权
    - Query.FORWARD         - 前向复权
    - Query.BACKWARD        - 后向复权
    - Query.EQUAL_FORWARD   - 等比前向复权
    - Query.EQUAL_BACKWARD  - 等比后向复权

    .. py:attribute:: start

        起始索引当按日期查询方式创建时无效 constant.null_int64

    .. py:attribute:: end

        结束索引当按日期查询方式创建时无效 constant.null_int64

    .. py:attribute:: start_datetime

        起始日期当按索引查询方式创建时无效 constant.null_datetime

    .. py:attribute:: end_datetime

        结束日期当按索引查询方式创建时无效 constant.null_datetime

    .. py:attribute:: query_type

        查询方式

    .. py:attribute:: ktype

        查询的K线类型

    .. py:attribute:: recover_type

        查询的复权类型

    .. py:data:: QueryType

        查询方式定义

        - DATE  - 按日期方式查询
        - INDEX - 按索引方式查询

    .. py:data:: KType

        K线类型枚举定义

        - DAY      - 日线类型
        - WEEK     - 周线类型
        - MONTH    - 月线类型
        - QUARTER  - 季线类型
        - HALFYEAR - 半年线类型
        - YEAR     - 年线类型
        - MIN      - 1分钟线类型
        - MIN5     - 5分钟线类型
        - MIN15    - 15分钟线类型
        - MIN30    - 30分钟线类型
        - MIN60    - 60分钟线类型

    .. py:data:: RecoverType

        K线复权类别枚举定义

        - NO_RECOVER      - 不复权
        - FORWARD         - 前向复权
        - BACKWARD        - 后向复权
        - EQUAL_FORWARD   - 等比前向复权
        - EQUAL_BACKWARD  - 等比后向复权

StockManager/Block/Stock

.. py:class:: StockManager

    证券信息管理类

    .. py:staticmethod:: instance()

        获取StockManager单例实例

    .. py:method:: init(self, baseInfoParam, blockParam, kdataParam, preloadParam, hkuParam)

        初始化

        :param Parameter baseInfoParam: 基础信息数据驱动参数
        :param Parameter blockParam: 板块信息数据驱动参数
        :param Parameter kdataParam: K线数据驱动参数
        :param Parameter preloadParam: 预加载参数
        :param Parameter hkuParam: 其他hikyuu参数

    .. py:method:: get_base_info_parameter(self)

        :return: 基础信息数据驱动参数
        :rtype: Parameter

    .. py:method:: get_block_parameter(self)

        :return: 板块信息数据驱动参数
        :rtype: Parameter

    .. py:method:: get_kdata_parameter(self)

        :return: K线数据驱动参数
        :rtype: Parameter

    .. py:method:: get_preload_parameter(self)

        :return: 预加载参数
        :rtype: Parameter

    .. py:method:: get_hikyuu_parameter(self)

        :return: 其他hikyuu参数
        :rtype: Parameter

    .. py:method:: tmpdir(self)

        获取用于保存零时变量等的临时目录如未配置则为当前目录 由m_config中的tmpdir指定

    .. py:method:: datadir(self)

        获取财务数据目录

    .. py:method:: get_market_list(self)

        获取市场简称列表

        :rtype: StringList

    .. py:method:: get_market_info(self, market)

        获取相应的市场信息

        :param string market: 指定的市场标识市场简称)
        :return: 相应的市场信息如果相应的市场信息不存在则返回Null<MarketInfo>()
        :rtype: MarketInfo

    .. py:method:: get_stock_type_info(self, stk_type)

        获取相应的证券类型详细信息

        :param int stk_type: 证券类型参见: :py:data:`constant`
        :return: 对应的证券类型信息如果不存在则返回Null<StockTypeInfo>()
        :rtype: StockTypeInfo

    .. py:method:: get_stock(self, querystr)

        根据"市场简称证券代码"获取对应的证券实例

        :param str querystr: 格式:“市场简称证券代码”,"sh000001"
        :return: 对应的证券实例如果实例不存在则Null<Stock>(),不抛出异常
        :rtype: Stock

    .. py:method:: __getitem__

         get_stock

    .. py:method:: get_block(self, category, name)

        获取预定义的板块

        :param str category: 板块分类
        :param str name: 板块名称
        :return: 板块如找不到返回空Block
        :rtype: Block

    .. py:method:: get_block_list(self[, category])

        获取指定分类的板块列表

        :param str category: 板块分类
        :return: 板块列表
        :rtype: BlockList

    .. py:method:: get_trading_calendar(self, query[, market='SH'])

        获取指定市场的交易日日历

        :param Query query: Query查询条件
        :param str market: 市场简称
        :return: 日期列表
        :rtype: DatetimeList

    .. py:method:: is_holiday(self, d)

        判断日期是否为节假日

        :param Datetime d: 待判定的日期

    .. py:method:: add_temp_csv_stock(self, code, day_filename, min_filename[, tick=0.01, tick_value=0.01, precision=2, min_trade_num = 1, max_trade_num=1000000])

        从CSV文件K线数据增加临时的Stock可用于只有CSV格式的K线数据时进行临时测试添加的 stock 对应的 market  "TMP", 如需通过 sm 获取需加入 tmpsm['tmp0001']

        CSV文件第一行为标题需含有 Datetime或Date日期)、OPEN或开盘价)、HIGH或最高价)、LOW或最低价)、CLOSE或收盘价)、AMOUNT或成交金额)、VOLUME或VOLCOUNT成交量)。

        :param str code: 自行编号的证券代码不能和已有的Stock相同否则将返回Null<Stock>。
        :param str day_filename: 日线CSV文件名
        :param str min_filename: 分钟线CSV文件名
        :param float tick: 最小跳动量默认0.01
        :param float tick_value: 最小跳动量价值默认0.01
        :param int precision: 价格精度默认2
        :param int min_trade_num: 单笔最小交易量默认1
        :param int min_trade_num: 单笔最大交易量默认1000000
        :return: 加入的Stock
        :rtype: Stock

    .. py:method:: remove_temp_csv_stock(self, code)

        移除增加的临时Stock

        :param str code: 创建时自定义的编码
.. py:class:: Stock

    证券对象

    .. py:attribute:: id : 内部id一般用于作为map的键值使用
    .. py:attribute:: market : 获取所属市场简称市场简称是市场的唯一标识
    .. py:attribute:: code : 获取证券代码
    .. py:attribute:: market_code : 市场简称+证券代码: sh000001
    .. py:attribute:: name : 获取证券名称
    .. py:attribute:: type

        获取证券类型参见::py:data:`constant`

    .. py:attribute:: valid : 该证券当前是否有效
    .. py:attribute:: start_datetime : 证券起始日期
    .. py:attribute:: last_datetime : 证券最后日期
    .. py:attribute:: tick : 最小跳动量
    .. py:attribute:: tick_value : 最小跳动量价值
    .. py:attribute:: unit : 每单位价值 = tickValue / tick
    .. py:attribute:: precision : 价格精度
    .. py:attribute:: atom : 最小交易数量同minTradeNumber
    .. py:attribute:: min_trade_number : 最小交易数量
    .. py:attribute:: max_trade_number : 最大交易数量

    .. py:method:: is_null(self)

        是否为Null

        :rtype: bool

    .. py:method:: get_kdata(self, query)

        获取K线数据

        :param Query query: 查询条件
        :return: 满足查询条件的K线数据
        :rtype: KData

    .. py:method:: get_count(self[, ktype=Query.DAY])

        获取不同类型K线数据量

        :param Query.KType ktype: K线数据类别
        :return: K线记录数
        :rtype: int

    .. py:method:: get_market_value(self, date, ktype)

        获取指定时刻的市值即小于等于指定时刻的最后一条记录的收盘价

        :param Datetime date: 指定时刻
        :param Query.KType ktype: K线数据类别
        :return: 指定时刻的市值
        :rtype: float

    .. py:method:: get_krecord(self, pos[, ktype=Query.DAY])

        获取指定索引的K线数据记录未作越界检查

        :param int pos | Datetime datetime: 指定的索引位置或日期
        :param Query.KType ktype: K线数据类别
        :return: K线记录
        :rtype: KRecord


    .. py:method:: get_krecord_list(self, start, end, ktype)

        获取K线记录 [start, end),一般不直接使用用getKData替代

        :param int start: 起始位置
        :param int end: 结束位置
        :param Query.KType ktype: K线类别
        :return: K线记录列表
        :rtype: KRecordList

    .. py:method:: get_datetime_list(self, query)

        获取日期列表

        :param Query query: 查询条件
        :rtype: DatetimeList

        get_datetime_list(self, start, end, ktype)

        获取日期列表

        :param int start: 起始位置
        :param ind end: 结束位置
        :param Query.KType ktype: K线类型
        :rtype: DatetimeList

    .. py:method:: get_timeline_list(self, query)

        获取分时线数据

        :param Query query: 查询条件查询条件中的K线类型复权类型参数此时无用)
        :rtype: TimeLineList

    .. py:method:: get_trans_list(self, query)

        获取历史分笔数据

        :param Query query: 查询条件查询条件中的K线类型复权类型参数此时无用)
        :rtype: TransList

    .. py:method:: get_weight(self[, start, end])

        获取指定时间段[start,end)内的权息信息未指定起始结束时刻时获取全部权息记录。

        :param Datetime start: 起始时刻
        :param Datetime end: 结束时刻
        :rtype: StockWeightList

    .. py:method:: get_finance_info(self)

        获取当前财务信息

        :rtype: Parameter

    .. py:method:: get_history_finance_info(self, date)

        获取历史财务信息, 字段含义参见`<https://hikyuu.org/finance_fields.html>`_

        :param Datetime date: 指定日期必须是0331063009301231 Datetime(201109300000)
        :rtype: list

    .. py:method:: realtime_update(self, krecord)

        (临时函数只用于更新内存缓存中的日线数据

        :param KRecord krecord: 新增的实时K线记录

    .. py:method:: load_kdata_to_buffer(self, ktype)

        将指定类别的K线数据加载至内存缓存

        :param Query.KType ktype: K线类型

    .. py:method:: release_kdata_buffer(self, ktype)

        释放指定类别的内存K线数据

        :param Query.KType ktype: K线类型
.. py:class:: Block

    板块类可视为证券的容器

    .. py:attribute:: category : 板块分类
    .. py:attribute:: name : 板块名称

    .. py:method:: __init__(self, category, name):

        构建一个新的板块实例并指定其板块分类及板块名称

        :param str category: 板块分类
        :param srt name: 板块名称

    .. py:method:: __init__(self, block):

        通过其他板块实例构建新的板块实例

        :param Block block: 板块实例

    .. py:method:: size(self)

        包含的证券数量

    .. py:method:: empty(self)

        是否为空

    .. py:method:: get(self, market_code)

        根据"市场简称证券代码"获取对应的证券实例

        :param str querystr: 格式:“市场简称证券代码”,"sh000001"
        :return: 对应的证券实例如果实例不存在则Null<Stock>(),不抛出异常
        :rtype: Stock

    .. py:method:: add(self, stock)

        加入指定的证券

        :param Stock stock: 待加入的证券
        :return: 是否成功加入
        :rtype: bool

        add(self, market_code)

        根据"市场简称证券代码"加入指定的证券

        :param str market_code: 市场简称证券代码
        :return: 是否成功加入
        :rtype: bool

    .. py:method:: remove(self, stock)

        移除指定证券

        :param Stock stock: 指定的证券
        :return: 是否成功
        :rtype: bool

        remove(self, market_code)

        移除指定证券

        :param str market_code: 市场简称证券代码
        :return: 是否成功
        :rtype: bool

    .. py:method:: clear(self)

        移除包含的所有证券

    .. py:method:: __len__(self)

        包含的证券数量

    .. py:method:: __getitem__(self, market_code)

        根据"市场简称证券代码"获取对应的证券实例

        :param str querystr: 格式:“市场简称证券代码”,"sh000001"
        :return: 对应的证券实例如果实例不存在则Null<Stock>(),不抛出异常
        :rtype: Stock

其它证券信息定义

.. py:class:: StockTypeInfo

    股票类型详情记录

    .. py:attribute:: type : 证券类型
    .. py:attribute:: description : 描述信息
    .. py:attribute:: tick : 最小跳动量
    .. py:attribute:: tick_value : 每一个tick价格
    .. py:attribute:: unit : 每最小变动量价格即单位价格 = tickValue/tick
    .. py:attribute:: precision : 价格精度
    .. py:attribute:: min_trade_num : 每笔最小交易量
    .. py:attribute:: max_trade_num : 每笔最大交易量
.. py:class:: StockWeight

    权息记录

    .. py:attribute:: datetime : 权息日期
    .. py:attribute:: count_as_gift : 每10股送X股
    .. py:attribute:: count_for_sell : 每10股配X股
    .. py:attribute:: price_for_sell : 配股价
    .. py:attribute:: bonus : 每10股红利
    .. py:attribute:: increasement : 每10股转增X股
    .. py:attribute:: total_count : 总股本万股)
    .. py:attribute:: free_count : 流通股万股
.. py:class:: StockWeightList

    std::vector<StockWeight> 包装 :py:class:`StockWeight`
.. py:class:: MarketInfo

    市场信息记录

    .. py:attribute:: market : 市场简称沪市SH”, 深市SZ”)
    .. py:attribute:: name : 市场全称
    .. py:attribute:: description :描述说明
    .. py:attribute:: code : 该市场对应的主要指数用于获取交易日历
    .. py:attribute:: last_datetime : 该市场K线数据最后交易日期