hikyuu2/hikyuu_pywrap/trade_sys/_Environment.cpp
2024-05-13 05:23:37 +08:00

116 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.

/*
* _Environment.cpp
*
* Created on: 2013-3-2
* Author: fasiondog
*/
/*
* _TradeRecord.cpp
*
* Created on: 2013-2-25
* Author: fasiondog
*/
#include <hikyuu/trade_sys/environment/EnvironmentBase.h>
#include <hikyuu/trade_sys/environment/build_in.h>
#include "../pybind_utils.h"
namespace py = pybind11;
using namespace hku;
class PyEnvironmentBase : public EnvironmentBase {
PY_CLONE(PyEnvironmentBase, EnvironmentBase)
public:
using EnvironmentBase::EnvironmentBase;
PyEnvironmentBase(const EnvironmentBase& base) : EnvironmentBase(base) {}
void _calculate() override {
PYBIND11_OVERLOAD_PURE(void, EnvironmentBase, _calculate, );
}
void _reset() override {
PYBIND11_OVERLOAD(void, EnvironmentBase, _reset, );
}
};
void export_Environment(py::module& m) {
py::class_<EnvironmentBase, EnvironmentPtr, PyEnvironmentBase>(
m, "EnvironmentBase", py::dynamic_attr(),
R"(市场环境判定策略基类
- _calculate :
- _clone :
- _reset : )")
.def(py::init<>())
.def(py::init<const EnvironmentBase&>())
.def(py::init<const string&>())
.def("__str__", to_py_str<EnvironmentBase>)
.def("__repr__", to_py_str<EnvironmentBase>)
.def_property("name", py::overload_cast<>(&EnvironmentBase::name, py::const_),
py::overload_cast<const string&>(&EnvironmentBase::name),
py::return_value_policy::copy, "名称")
.def_property("query", &EnvironmentBase::getQuery, &EnvironmentBase::setQuery,
py::return_value_policy::copy, "设置或获取查询条件")
.def("get_param", &EnvironmentBase::getParam<boost::any>, R"(get_param(self, name)
:param str name:
:return:
:raises out_of_range: )")
.def("set_param", &EnvironmentBase::setParam<boost::any>, R"(set_param(self, name, value)
:param str name:
:param value:
:raises logic_error: Unsupported type! )")
.def("have_param", &EnvironmentBase::haveParam, "是否存在指定参数")
.def("is_valid", &EnvironmentBase::isValid, R"(is_valid(self, datetime)
:param Datetime datetime:
:return: True | False )")
.def("_add_valid", &EnvironmentBase::_addValid, R"(_add_valid(self, datetime)
_calculate中调用
:param Datetime datetime: )")
.def("reset", &EnvironmentBase::reset, "复位操作")
.def("clone", &EnvironmentBase::clone, "克隆操作")
.def("_reset", &EnvironmentBase::_reset, "【重载接口】子类复位接口,用于复位内部私有变量")
.def("_calculate", &EnvironmentBase::_calculate, "【重载接口】子类计算接口")
DEF_PICKLE(EnvironmentPtr);
m.def("EV_TwoLine", EV_TwoLine, py::arg("fast"), py::arg("slow"), py::arg("market") = "SH",
R"(EV_TwoLine(fast, slow[, market = 'SH'])
线线线
:param Indicator fast: 线
:param Indicator slow: 线
:param string market: )");
m.def("EV_Bool", EV_Bool, py::arg("ind"), py::arg("market") = "SH",
R"(EV_Bool(ind, market='SH')
:param Indicator ind: bool类型的指标>0
:param str market: )");
}