Skip to content

Commit

Permalink
💯 👍 So happy! Woo, Woo. Fixing bugs for binding DataFrame.
Browse files Browse the repository at this point in the history
Bugfix. It Should use the static library to port DataFrame.
  • Loading branch information
yssource committed Jan 28, 2021
1 parent 57863a2 commit 49204fe
Show file tree
Hide file tree
Showing 40 changed files with 284 additions and 308 deletions.
38 changes: 19 additions & 19 deletions bind11/abquant/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(pyabquant_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(pyabquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

set(sample_library "${pyabquant_lib_dir}/libabqcontroller.so;${pyabquant_lib_dir}/libabqhelper.so;${pyabquant_lib_dir}/libabqmodel.so;${pyabquant_lib_dir}/libabqaction.so")
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -58,23 +58,23 @@ set(${bindings_library}_sources main.cpp)
# add_library(${bindings_library} MODULE ${${bindings_library}_sources})
pybind11_add_module(${bindings_library} SHARED ${${bindings_library}_sources} NO_EXTRAS)

# target_include_directories(${bindings_library} PRIVATE ${CONAN_INCLUDE_DIRS})
# target_include_directories(${bindings_library} PUBLIC ${CONAN_INCLUDE_DIRS})

# Apply relevant include and link flags.
target_include_directories(${bindings_library} PRIVATE ${python_include_dir})
target_include_directories(${bindings_library} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${bindings_library} PRIVATE ${pyabquant_include_dir})
target_include_directories(${bindings_library} PRIVATE ${tree_includes})

target_include_directories(${bindings_library} PRIVATE "${Qt5Core_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Network_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Sql_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Xml_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Qml_INCLUDE_DIRS}")
# target_include_directories(${bindings_library} PRIVATE "${QtTest_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE ${pybind11_INCLUDE_DIRS})

target_link_libraries(${bindings_library} PRIVATE ${sample_library} ${CONAN_LIBS})
target_include_directories(${bindings_library} PUBLIC ${python_include_dir})
target_include_directories(${bindings_library} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${bindings_library} PUBLIC ${pyabquant_include_dir})
target_include_directories(${bindings_library} PUBLIC ${tree_includes})

target_include_directories(${bindings_library} PUBLIC "${Qt5Core_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Network_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Sql_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Xml_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Qml_INCLUDE_DIRS}")
# target_include_directories(${bindings_library} PUBLIC "${QtTest_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC ${pybind11_INCLUDE_DIRS})

target_link_libraries(${bindings_library} PUBLIC ${sample_library} ${CONAN_LIBS})
set_property(TARGET ${bindings_library} PROPERTY CXX_STANDARD 17)

# Adjust the name of generated module.
Expand All @@ -97,7 +97,7 @@ if (WIN32)
list(GET python_linking_data 0 python_libdir)
list(GET python_linking_data 1 python_lib)
find_library(python_link_flags ${python_lib} PATHS ${python_libdir} HINTS ${python_libdir})
target_link_libraries(${bindings_library} PRIVATE ${python_link_flags})
target_link_libraries(${bindings_library} PUBLIC ${python_link_flags})
endif()


Expand All @@ -118,4 +118,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${pyabquant_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
6 changes: 3 additions & 3 deletions bind11/emconceptbase/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(abqemconceptbase_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(abqemconceptbase_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

set(sample_library "${abqemconceptbase_lib_dir}/libabqcontroller.so;${abqemconceptbase_lib_dir}/libabqhelper.so;${abqemconceptbase_lib_dir}/libabqmodel.so;${abqemconceptbase_lib_dir}/libabqaction.so")
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -118,4 +118,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${abqemconceptbase_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
6 changes: 3 additions & 3 deletions bind11/emconcepthistory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(abqemconcepthistory_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(abqemconcepthistory_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

set(sample_library "${abqemconcepthistory_lib_dir}/libabqcontroller.so;${abqemconcepthistory_lib_dir}/libabqhelper.so;${abqemconcepthistory_lib_dir}/libabqmodel.so;${abqemconcepthistory_lib_dir}/libabqaction.so")
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -118,4 +118,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${abqemconcepthistory_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
6 changes: 3 additions & 3 deletions bind11/indexday/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(abqindexday_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(abqindexday_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

set(sample_library "${abqindexday_lib_dir}/libabqcontroller.so;${abqindexday_lib_dir}/libabqhelper.so;${abqindexday_lib_dir}/libabqmodel.so;${abqindexday_lib_dir}/libabqaction.so")
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -118,4 +118,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${abqindexday_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
6 changes: 3 additions & 3 deletions bind11/indexmin/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(abqindexmin_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(abqindexmin_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

set(sample_library "${abqindexmin_lib_dir}/libabqcontroller.so;${abqindexmin_lib_dir}/libabqhelper.so;${abqindexmin_lib_dir}/libabqmodel.so;${abqindexmin_lib_dir}/libabqaction.so")
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -118,4 +118,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${abqindexmin_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
41 changes: 22 additions & 19 deletions bind11/stockday/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(abqstockday_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(abqstockday_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

#Bugfix: libabqaction.so -> libabqaction.a, since it is not able to port
# DataFrame to outside for binding.
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")

set(sample_library "${abqstockday_lib_dir}/libabqcontroller.so;${abqstockday_lib_dir}/libabqhelper.so;${abqstockday_lib_dir}/libabqmodel.so;${abqstockday_lib_dir}/libabqaction.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -58,23 +61,23 @@ set(${bindings_library}_sources main.cpp)
# add_library(${bindings_library} MODULE ${${bindings_library}_sources})
pybind11_add_module(${bindings_library} SHARED ${${bindings_library}_sources} NO_EXTRAS)

# target_include_directories(${bindings_library} PRIVATE ${CONAN_INCLUDE_DIRS})
# target_include_directories(${bindings_library} PUBLIC ${CONAN_INCLUDE_DIRS})

# Apply relevant include and link flags.
target_include_directories(${bindings_library} PRIVATE ${python_include_dir})
target_include_directories(${bindings_library} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${bindings_library} PRIVATE ${abqstockday_include_dir})
target_include_directories(${bindings_library} PRIVATE ${tree_includes})

target_include_directories(${bindings_library} PRIVATE "${Qt5Core_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Network_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Sql_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Xml_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE "${Qt5Qml_INCLUDE_DIRS}")
# target_include_directories(${bindings_library} PRIVATE "${QtTest_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PRIVATE ${pybind11_INCLUDE_DIRS})

target_link_libraries(${bindings_library} PRIVATE ${sample_library} ${CONAN_LIBS})
target_include_directories(${bindings_library} PUBLIC ${python_include_dir})
target_include_directories(${bindings_library} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${bindings_library} PUBLIC ${abqstockday_include_dir})
target_include_directories(${bindings_library} PUBLIC ${tree_includes})

target_include_directories(${bindings_library} PUBLIC "${Qt5Core_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Network_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Sql_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Xml_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC "${Qt5Qml_INCLUDE_DIRS}")
# target_include_directories(${bindings_library} PUBLIC "${QtTest_INCLUDE_DIRS}")
target_include_directories(${bindings_library} PUBLIC ${pybind11_INCLUDE_DIRS})

target_link_libraries(${bindings_library} PUBLIC ${sample_library} ${CONAN_LIBS})
set_property(TARGET ${bindings_library} PROPERTY CXX_STANDARD 17)

# Adjust the name of generated module.
Expand All @@ -97,7 +100,7 @@ if (WIN32)
list(GET python_linking_data 0 python_libdir)
list(GET python_linking_data 1 python_lib)
find_library(python_link_flags ${python_lib} PATHS ${python_libdir} HINTS ${python_libdir})
target_link_libraries(${bindings_library} PRIVATE ${python_link_flags})
target_link_libraries(${bindings_library} PUBLIC ${python_link_flags})
endif()


Expand All @@ -118,4 +121,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${abqstockday_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
63 changes: 38 additions & 25 deletions bind11/stockday/main.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include <pybind11/cast.h>
#include <pybind11/numpy.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
Expand All @@ -13,10 +14,14 @@
#include "abquant/actions/stockday.hpp"
#include "abquant/actions/utils.hpp"

// using namespace std;
namespace abq
{
class PyStockDay
// PYBIND11_DECLARE_HOLDER_TYPE(MyDataFrame, MyDataFramePtr);

using roc_return_t = std::unordered_map<const char*, xt::xarray<double>>;
using StockDayActionPtr = std::shared_ptr<StockDayAction>;

class PyStockDay : public std::enable_shared_from_this<PyStockDay>
{
public:
PyStockDay(std::vector<std::string> codes, const string& start, const string& end, FQ_TYPE xdxr = FQ_TYPE::NONE)
Expand All @@ -26,45 +31,51 @@ class PyStockDay
for (auto c : codes) {
qcodes << QString::fromStdString(c);
}
m_sda = StockDayAction(qcodes, m_start.c_str(), m_end.c_str(), m_xdxr);
m_sda.setDataFrame();
m_sda_ptr = std::make_shared<StockDayAction>(qcodes, m_start.c_str(), m_end.c_str(), m_xdxr);
m_df = m_sda_ptr->getDataFrame();
};

size_t toQfq() const noexcept
size_t toQfq() noexcept
{
// const auto fq = m_sda.toFq(FQ_TYPE::PRE);
auto fq = m_sda.getDataFrame();
try {
auto fq2 = m_sda.getOpen();
} catch (const std::exception& e) {
std::cout << e.what();
}

// fq.write<std::ostream, std::string, double, int>(std::cout);
fq->write<std::ostream, std::string, double, int>(std::cout);
auto fq = m_sda_ptr->toFq(FQ_TYPE::PRE);
// fq->write<std::ostream, index_t, double, int>(std::cout);
return fq->get_index().size();
// return fq.get_index().size();
}

template <class T>
std::vector<T> toSeries(const string& col) const noexcept
std::vector<T> toSeries(const string& col) noexcept
{
auto m_df = m_sda_ptr->getDataFrame();
if constexpr (std::is_same_v<T, double>) {
auto series = m_sda.get_pyseries(col.c_str());
auto series = m_sda_ptr->get_pyseries(col.c_str());
return series;
}

auto series = m_sda.toSeries<T>(col.c_str());
auto series = m_sda_ptr->toSeries<T>(col.c_str());
return series.toStdVector();
}

int ROC(const string& col = "close", size_t N = 12, size_t M = 6) noexcept
// roc_return_t ROC(const string& col = "close", size_t N = 12, size_t M = 6) noexcept
{
auto m_df = m_sda_ptr->getDataFrame();
auto ind = m_sda_ptr->makeIndicator();
roc_return_t rst = ind.ROC(col.c_str(), N, M);
// std::cout << rst["ROC"] << "\n";
return 0;
}

~PyStockDay() = default;

private:
std::vector<std::string> m_codes{};
const string m_start{};
const string m_end{};
StockDayAction m_sda{};
StockDayActionPtr m_sda_ptr{nullptr};
StockDayAction m_sda;
FQ_TYPE m_xdxr{FQ_TYPE::NONE};
MyDataFramePtr m_df{nullptr};
std::shared_ptr<std::string> m_name{nullptr};
};

namespace py = pybind11;
Expand All @@ -75,20 +86,22 @@ PYBIND11_MODULE(abqstockday, m)
Pybind11 StockDay plugin
-----------------------
.. abqstockday:: currentmodule_exmaple
.. abqstockday:: abqstockday_module_exmaple
.. autosummary::
:stockday: toQfq
toQfq
)pbdoc";

py::class_<PyStockDay> sm_class(m, "PyStockDay");
py::class_<MyDataFrame, MyDataFramePtr>(m, "MyDataFrame");
py::class_<PyStockDay, std::shared_ptr<PyStockDay>> sm_class(m, "PyStockDay");
sm_class.def(py::init<std::vector<std::string>, const string, const string, FQ_TYPE>())
.def("toQfq", &PyStockDay::toQfq, R"pbdoc(toQfq qfq function.)pbdoc")
.def("toSeries", &PyStockDay::toSeries<double>, R"pbdoc(toSeries double toSeries double function.)pbdoc")
.def("toSeries_string", &PyStockDay::toSeries<std::string>,
R"pbdoc(toSeries string toSeries string function.)pbdoc");
.def("toSeries", &PyStockDay::toSeries<double> /* , py::return_value_policy::reference */,
R"pbdoc(toSeries double function.)pbdoc")
.def("toSeries_string", &PyStockDay::toSeries<std::string>, R"pbdoc(toSeries string function.)pbdoc")
.def("ROC", &PyStockDay::ROC, R"pbdoc(ROC function.)pbdoc");

#ifdef VERSION_INFO
m.attr("__version__") = VERSION_INFO;
Expand Down
6 changes: 3 additions & 3 deletions bind11/stockmin/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_SQL_LIB")
set(abqstockmin_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../cxx/include)
set(tree_includes "/usr/include/treefrog/")
# set(tree_lib "/usr/lib/libtreefrog.so")
set(abqstockmin_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)
set(abquant_lib_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib)

set(sample_library "${abqstockmin_lib_dir}/libabqcontroller.so;${abqstockmin_lib_dir}/libabqhelper.so;${abqstockmin_lib_dir}/libabqmodel.so;${abqstockmin_lib_dir}/libabqaction.so")
set(sample_library "${abquant_lib_dir}/libabqcontroller.so;${abquant_lib_dir}/libabqhelper.so;${abquant_lib_dir}/libabqmodel.so;${abquant_lib_dir}/libabqaction.a;/usr/lib/libtreefrog.so")
set(bindings_library_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/)


Expand Down Expand Up @@ -118,4 +118,4 @@ install(TARGETS ${bindings_library}

add_custom_command(TARGET ${bindings_library} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:${bindings_library}> ${abqstockmin_lib_dir})
$<TARGET_FILE:${bindings_library}> ${abquant_lib_dir})
17 changes: 13 additions & 4 deletions bind11/test/test_stockday.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ def testDay(self):
end = "2019-12-01"
sd = stockday(codes, start, end, FQ_TYPE.PRE)

# fq = sd.toQfq()
# print(fq)
# self.assertTrue(fq > 0)

open_ = sd.toSeries("open")
close = sd.toSeries("close")
high = sd.toSeries("high")
Expand Down Expand Up @@ -56,6 +52,19 @@ def testDay(self):
# self.assertEqual(open_[0], 9.39)
self.assertAlmostEqual(open_[0], 9.39, delta=0.001)

def test_ROC(self):
codes = ["000001"]
start = "2019-01-01"
end = "2019-12-01"
sd = stockday(codes, start, end, FQ_TYPE.PRE)

rst = sd.ROC("close", 12, 6)
print(rst)

fq = sd.toQfq()
print(fq)
self.assertTrue(fq > 0)


if __name__ == "__main__":
PyAbquant.start()
Expand Down
7 changes: 6 additions & 1 deletion cxx/src/actions/actions.pro
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
TARGET = abqaction
TEMPLATE = lib
CONFIG += shared console debug c++17
#Bugfix: libabqaction.so -> libabqaction.a, since it is not able to port
# DataFrame to outside for binding.
CONFIG += static console debug c++17
# CONFIG += shared console debug c++17
CONFIG -= app_bundle

QMAKE_CXXFLAGS += -fPIC

include(../../abqbase.pri)
include($$OUT_PWD/../../../conanbuildinfo.pri)

Expand Down
Loading

0 comments on commit 49204fe

Please sign in to comment.