hikyuu2/hikyuu_pywrap/_KData.cpp
2024-04-02 12:27:20 +08:00

109 lines
3.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* _KData.cpp
*
* Created on: 2012-9-28
* Author: fasiondog
*/
#include <hikyuu/serialization/KData_serialization.h>
#include <hikyuu/indicator/crt/KDATA.h>
#include "pybind_utils.h"
using namespace hku;
namespace py = pybind11;
const KRecord& (KData::*KData_getKRecord1)(size_t pos) const = &KData::getKRecord;
const KRecord& (KData::*KData_getKRecord2)(Datetime datetime) const = &KData::getKRecord;
void export_KData(py::module& m) {
py::class_<KData>(
m, "KData",
"通过 Stock.getKData 获取的K线数据由 KRecord 组成的数组,可象 list 一样进行遍历")
.def(py::init<>())
.def("__str__", &KData::toString)
.def("__repr__", &KData::toString)
.def_property_readonly("start_pos", &KData::startPos,
"获取在原始K线记录中对应的起始位置如果KData为空返回0")
.def_property_readonly(
"end_pos", &KData::endPos,
"获取在原始K线记录中对应范围的下一条记录的位置如果为空返回0,其他等于lastPos + 1")
.def_property_readonly(
"last_pos", &KData::lastPos,
"获取在原始K线记录中对应的最后一条记录的位置如果为空返回0,其他等于endPos - 1")
.def_property_readonly("open", &KData::open,
"返回包含开盘价的 Indicator 实例,相当于 OPEN(k)")
.def_property_readonly("close", &KData::close,
"返回包含收盘价的 Indicator 实例,相当于 CLOSE(k)")
.def_property_readonly("high", &KData::high,
"返回包含最高价的 Indicator 实例,相当于 HIGH(k)")
.def_property_readonly("low", &KData::low, "返回包含最低价的 Indicator 实例,相当于 LOW(k)")
.def_property_readonly("amo", &KData::amo, "返回包含成交金额的 Indicator 实例,相当于 AMO(k)")
.def_property_readonly("vol", &KData::vol, "返回包含成交量的 Indicator 实例,相当于 VOL(k)")
.def("get_datetime_list", &KData::getDatetimeList, R"(get_datetime_list(self)
:rtype: DatetimeList)")
.def("get", KData_getKRecord1, py::return_value_policy::copy, R"(get(self, pos)
K线记录
:param int pos:
:rtype: KRecord)")
.def("get_by_datetime", KData_getKRecord2, py::return_value_policy::copy,
R"(get_by_datetime(self, datetime)
K线记录
:param Datetime datetime:
:rtype: KRecord)")
.def("_getPos", &KData::getPos) // python中需要将Null的情况改写为None
.def("_getPosInStock", &KData::getPosInStock)
.def("empty", &KData::empty, R"(empty(self)
:rtype: bool)")
.def("get_query", &KData::getQuery, py::return_value_policy::copy, R"(get_query(self)
:rtype: KQuery)")
.def("get_stock", &KData::getStock, py::return_value_policy::copy, R"(get_stock(self)
Stock
:rtype: Stock)")
.def("get_kdata", &KData::getKData, R"(get_kdata(self, start_date, end_date)
KData KData KData
:param Datetime start:
:param Datetime end:
:rtype: KData)")
.def("tocsv", &KData::tocsv, R"(tocsv(self, filename)
CSV文件
:param str filename: )")
.def("__len__", &KData::size)
.def(py::self == py::self)
.def(py::self != py::self)
DEF_PICKLE(KData);
}