/* * _ProfitGoal.cpp * * Created on: 2013-3-21 * Author: fasiondog */ #include #include #include "../_Parameter.h" #include "../pickle_support.h" using namespace boost::python; using namespace hku; class ProfitGoalWrap : public ProfitGoalBase, public wrapper { public: ProfitGoalWrap(): ProfitGoalBase() {} ProfitGoalWrap(const string& name): ProfitGoalBase(name) {} virtual ~ProfitGoalWrap() {} void _reset() { if (override func = get_override("_reset")) { func(); } else { ProfitGoalBase::_reset(); } } void default_reset() { this->ProfitGoalBase::_reset(); } ProfitGoalPtr _clone() { return this->get_override("_clone")(); } void _calculate() { this->get_override("_calculate")(); } void buyNotify(const TradeRecord& tr) { if (override buy_notify = this->get_override("buyNotify")) { buy_notify(tr); return; } this->ProfitGoalBase::buyNotify(tr); } void default_buyNotify(const TradeRecord& tr) { this->ProfitGoalBase::buyNotify(tr); } void sellNotify(const TradeRecord& tr) { if (override sell_notify = this->get_override("sellNotify")) { sell_notify(tr); return; } this->ProfitGoalBase::sellNotify(tr); } void default_sellNotify(const TradeRecord& tr) { this->ProfitGoalBase::sellNotify(tr); } price_t getGoal(const Datetime& datetime, price_t price) { return this->get_override("getGoal")(datetime, price); } price_t getShortGoal(const Datetime& datetime, price_t price) { if (override getShortGoal = get_override("getShortGoal")) { return getShortGoal(datetime, price); } return ProfitGoalBase::getShortGoal(datetime, price); } price_t default_getShortGoal(const Datetime& datetime, price_t price) { return this->ProfitGoalBase::getShortGoal(datetime, price); } }; string (ProfitGoalBase::*pg_get_name)() const = &ProfitGoalBase::name; void (ProfitGoalBase::*pg_set_name)(const string&) = &ProfitGoalBase::name; void export_ProfitGoal() { class_("ProfitGoalBase", init<>()) .def(init()) .def(self_ns::str(self)) .add_property("name", pg_get_name, pg_set_name) .def("getParam", &ProfitGoalBase::getParam) .def("setParam", &ProfitGoalBase::setParam) .def("haveParam", &ProfitGoalBase::haveParam) .def("setTM", &ProfitGoalBase::setTM) .def("setTO", &ProfitGoalBase::setTO) .def("getTM", &ProfitGoalBase::getTM) .def("getTO", &ProfitGoalBase::getTO) .def("buyNotify", &ProfitGoalBase::buyNotify, &ProfitGoalWrap::default_buyNotify) .def("sellNotify", &ProfitGoalBase::sellNotify, &ProfitGoalWrap::default_sellNotify) .def("getGoal", pure_virtual(&ProfitGoalBase::getGoal)) .def("getShortGoal", &ProfitGoalBase::getShortGoal, & ProfitGoalWrap::default_getShortGoal) .def("reset", &ProfitGoalBase::reset) .def("clone", &ProfitGoalBase::clone) .def("_calculate", pure_virtual(&ProfitGoalBase::_calculate)) .def("_reset", &ProfitGoalBase::_reset, &ProfitGoalWrap::default_reset) .def("_clone", pure_virtual(&ProfitGoalBase::_clone)) ; register_ptr_to_python(); def("PG_NoGoal", PG_NoGoal); def("PG_FixedPercent", PG_FixedPercent, (arg("p") = 0.2)); def("PG_FixedHoldDays", PG_FixedHoldDays, (arg("days") = 5)); }