hikyuu 2.2.2__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hikyuu/LICENSE.txt +21 -0
- hikyuu/__init__.py +137 -0
- hikyuu/analysis/__init__.py +14 -0
- hikyuu/analysis/analysis.py +151 -0
- hikyuu/config/__init__.py +1 -0
- hikyuu/config/block/__init__.py +0 -0
- hikyuu/config/block/dybk.ini +5357 -0
- hikyuu/config/block/gnbk.ini +50024 -0
- hikyuu/config/block/hybk.ini +5464 -0
- hikyuu/config/block/self.ini +10 -0
- hikyuu/config/block/zsbk.ini +65543 -0
- hikyuu/core.py +27 -0
- hikyuu/cpp/__init__.py +1 -0
- hikyuu/cpp/boost_date_time-mt.dll +0 -0
- hikyuu/cpp/boost_serialization-mt.dll +0 -0
- hikyuu/cpp/boost_wserialization-mt.dll +0 -0
- hikyuu/cpp/concrt140.dll +0 -0
- hikyuu/cpp/core310.pyd +0 -0
- hikyuu/cpp/core311.pyd +0 -0
- hikyuu/cpp/core312.pyd +0 -0
- hikyuu/cpp/core313.pyd +0 -0
- hikyuu/cpp/core38.pyd +0 -0
- hikyuu/cpp/core39.pyd +0 -0
- hikyuu/cpp/hikyuu.dll +0 -0
- hikyuu/cpp/hku_hdf5.dll +0 -0
- hikyuu/cpp/hku_hdf5_cpp.dll +0 -0
- hikyuu/cpp/hku_hdf5_hl.dll +0 -0
- hikyuu/cpp/hku_hdf5_hl_cpp.dll +0 -0
- hikyuu/cpp/libcrypto-1_1-x64.dll +0 -0
- hikyuu/cpp/libmysql.dll +0 -0
- hikyuu/cpp/libssl-1_1-x64.dll +0 -0
- hikyuu/cpp/msvcp140.dll +0 -0
- hikyuu/cpp/msvcp140_1.dll +0 -0
- hikyuu/cpp/msvcp140_2.dll +0 -0
- hikyuu/cpp/msvcp140_atomic_wait.dll +0 -0
- hikyuu/cpp/msvcp140_codecvt_ids.dll +0 -0
- hikyuu/cpp/sqlite3.dll +0 -0
- hikyuu/cpp/vcruntime140.dll +0 -0
- hikyuu/cpp/vcruntime140_1.dll +0 -0
- hikyuu/data/__init__.py +1 -0
- hikyuu/data/common.py +248 -0
- hikyuu/data/common_h5.py +398 -0
- hikyuu/data/common_mysql.py +485 -0
- hikyuu/data/common_pytdx.py +108 -0
- hikyuu/data/common_sqlite3.py +140 -0
- hikyuu/data/em_block_to_mysql.py +120 -0
- hikyuu/data/em_block_to_sqlite.py +117 -0
- hikyuu/data/hku_config_template.py +266 -0
- hikyuu/data/mysql_upgrade/0001.sql +5 -0
- hikyuu/data/mysql_upgrade/0002.sql +3 -0
- hikyuu/data/mysql_upgrade/0003.sql +9 -0
- hikyuu/data/mysql_upgrade/0004.sql +26 -0
- hikyuu/data/mysql_upgrade/0005.sql +3 -0
- hikyuu/data/mysql_upgrade/0006.sql +2 -0
- hikyuu/data/mysql_upgrade/0007.sql +20 -0
- hikyuu/data/mysql_upgrade/0008.sql +6 -0
- hikyuu/data/mysql_upgrade/0009.sql +36 -0
- hikyuu/data/mysql_upgrade/0010.sql +5 -0
- hikyuu/data/mysql_upgrade/0011.sql +5 -0
- hikyuu/data/mysql_upgrade/0012.sql +5 -0
- hikyuu/data/mysql_upgrade/0013.sql +2389 -0
- hikyuu/data/mysql_upgrade/0014.sql +3 -0
- hikyuu/data/mysql_upgrade/0015.sql +4 -0
- hikyuu/data/mysql_upgrade/0016.sql +4 -0
- hikyuu/data/mysql_upgrade/0017.sql +5 -0
- hikyuu/data/mysql_upgrade/0018.sql +2 -0
- hikyuu/data/mysql_upgrade/0019.sql +6 -0
- hikyuu/data/mysql_upgrade/0020.sql +4 -0
- hikyuu/data/mysql_upgrade/0021.sql +4 -0
- hikyuu/data/mysql_upgrade/0022.sql +5 -0
- hikyuu/data/mysql_upgrade/0023.sql +4 -0
- hikyuu/data/mysql_upgrade/__init__.py +1 -0
- hikyuu/data/mysql_upgrade/createdb.sql +265 -0
- hikyuu/data/pytdx_finance_to_mysql.py +129 -0
- hikyuu/data/pytdx_finance_to_sqlite.py +162 -0
- hikyuu/data/pytdx_to_h5.py +662 -0
- hikyuu/data/pytdx_to_mysql.py +803 -0
- hikyuu/data/pytdx_weight_to_mysql.py +196 -0
- hikyuu/data/pytdx_weight_to_sqlite.py +192 -0
- hikyuu/data/sqlite_mem.py +84 -0
- hikyuu/data/sqlite_mem_sql/__init__.py +1 -0
- hikyuu/data/sqlite_mem_sql/createdb.sql +126 -0
- hikyuu/data/sqlite_upgrade/0001.sql +4 -0
- hikyuu/data/sqlite_upgrade/0002.sql +48 -0
- hikyuu/data/sqlite_upgrade/0003.sql +18 -0
- hikyuu/data/sqlite_upgrade/0004.sql +11 -0
- hikyuu/data/sqlite_upgrade/0005.sql +28 -0
- hikyuu/data/sqlite_upgrade/0006.sql +5 -0
- hikyuu/data/sqlite_upgrade/0007.sql +4 -0
- hikyuu/data/sqlite_upgrade/0008.sql +22 -0
- hikyuu/data/sqlite_upgrade/0009.sql +8 -0
- hikyuu/data/sqlite_upgrade/0010.sql +5 -0
- hikyuu/data/sqlite_upgrade/0011.sql +16 -0
- hikyuu/data/sqlite_upgrade/0012.sql +15 -0
- hikyuu/data/sqlite_upgrade/0013.sql +9 -0
- hikyuu/data/sqlite_upgrade/0014.sql +607 -0
- hikyuu/data/sqlite_upgrade/0015.sql +7 -0
- hikyuu/data/sqlite_upgrade/0016.sql +8 -0
- hikyuu/data/sqlite_upgrade/0017.sql +16 -0
- hikyuu/data/sqlite_upgrade/0018.sql +5 -0
- hikyuu/data/sqlite_upgrade/0019.sql +4 -0
- hikyuu/data/sqlite_upgrade/0020.sql +4 -0
- hikyuu/data/sqlite_upgrade/0021.sql +6 -0
- hikyuu/data/sqlite_upgrade/0022.sql +6 -0
- hikyuu/data/sqlite_upgrade/0023.sql +7 -0
- hikyuu/data/sqlite_upgrade/0024.sql +22 -0
- hikyuu/data/sqlite_upgrade/__init__.py +1 -0
- hikyuu/data/sqlite_upgrade/createdb.sql +61 -0
- hikyuu/data/tdx_to_h5.py +464 -0
- hikyuu/data/tdx_to_mysql.py +464 -0
- hikyuu/data/weight_to_mysql.py +72 -0
- hikyuu/data/weight_to_sqlite.py +70 -0
- hikyuu/data/zh_bond10_to_mysql.py +30 -0
- hikyuu/data/zh_bond10_to_sqlite.py +42 -0
- hikyuu/data_driver/__init__.py +49 -0
- hikyuu/data_driver/jqdata_data_driver.py +277 -0
- hikyuu/data_driver/pytdx_data_driver.py +292 -0
- hikyuu/deprecated.py +651 -0
- hikyuu/draw/__init__.py +59 -0
- hikyuu/draw/drawplot/__init__.py +291 -0
- hikyuu/draw/drawplot/bokeh_draw.py +583 -0
- hikyuu/draw/drawplot/common.py +89 -0
- hikyuu/draw/drawplot/echarts_draw.py +402 -0
- hikyuu/draw/drawplot/matplotlib_draw.py +832 -0
- hikyuu/draw/elder.py +135 -0
- hikyuu/draw/kaufman.py +192 -0
- hikyuu/draw/volume.py +122 -0
- hikyuu/examples/Turtle_SG.py +47 -0
- hikyuu/examples/__init__.py +1 -0
- hikyuu/examples/examples_init.py +33 -0
- hikyuu/examples/notebook/000-Index.ipynb +76 -0
- hikyuu/examples/notebook/001-overview.ipynb +345 -0
- hikyuu/examples/notebook/002-HowToGetStock.ipynb +265 -0
- hikyuu/examples/notebook/003-HowToGetKDataAndDraw.ipynb +375 -0
- hikyuu/examples/notebook/004-IndicatorOverview.ipynb +501 -0
- hikyuu/examples/notebook/005-Drawplot.ipynb +321 -0
- hikyuu/examples/notebook/006-TradeManager.ipynb +381 -0
- hikyuu/examples/notebook/007-SystemDetails.ipynb +380 -0
- hikyuu/examples/notebook/008-Pickle.ipynb +127 -0
- hikyuu/examples/notebook/009-RealData.ipynb +110 -0
- hikyuu/examples/notebook/010-Portfolio.ipynb +333 -0
- hikyuu/examples/notebook/011-PyechartsDrawplot.ipynb +21821 -0
- hikyuu/examples/notebook/Demo/Demo1.ipynb +622 -0
- hikyuu/examples/notebook/Demo/Demo2.ipynb +665 -0
- hikyuu/examples/notebook/Demo/__init__.py +1 -0
- hikyuu/examples/notebook/README.md +1 -0
- hikyuu/examples/notebook/__init__.py +1 -0
- hikyuu/examples/notebook/images/002_01_block_config.png +0 -0
- hikyuu/examples/notebook/images/008_01_tocsv.png +0 -0
- hikyuu/examples/notebook/images/008_02_tocsv_look.png +0 -0
- hikyuu/examples/notebook/images/008_03_pickle.png +0 -0
- hikyuu/examples/notebook/images/__init__.py +1 -0
- hikyuu/examples/quick_crtsg.py +40 -0
- hikyuu/extend.py +387 -0
- hikyuu/fetcher/__init__.py +8 -0
- hikyuu/fetcher/proxy/__init__.py +12 -0
- hikyuu/fetcher/proxy/proxy.py +39 -0
- hikyuu/fetcher/proxy/zhima.py +63 -0
- hikyuu/fetcher/stock/__init__.py +8 -0
- hikyuu/fetcher/stock/zh_block_em.py +140 -0
- hikyuu/fetcher/stock/zh_stock_a_huatai.py +51 -0
- hikyuu/fetcher/stock/zh_stock_a_pytdx.py +139 -0
- hikyuu/fetcher/stock/zh_stock_a_qmt.py +58 -0
- hikyuu/fetcher/stock/zh_stock_a_sina_qq.py +229 -0
- hikyuu/flat/Spot.py +440 -0
- hikyuu/flat/SpotList.py +74 -0
- hikyuu/flat/__init__.py +4 -0
- hikyuu/gui/HikyuuTDX.py +839 -0
- hikyuu/gui/__init__.py +1 -0
- hikyuu/gui/data/CollectSpotThread.py +43 -0
- hikyuu/gui/data/CollectToMemThread.py +123 -0
- hikyuu/gui/data/CollectToMySQLThread.py +178 -0
- hikyuu/gui/data/EscapetimeThread.py +32 -0
- hikyuu/gui/data/ImportBlockInfoTask.py +55 -0
- hikyuu/gui/data/ImportHistoryFinanceTask.py +141 -0
- hikyuu/gui/data/ImportPytdxTimeToH5Task.py +94 -0
- hikyuu/gui/data/ImportPytdxToH5Task.py +98 -0
- hikyuu/gui/data/ImportPytdxTransToH5Task.py +94 -0
- hikyuu/gui/data/ImportTdxToH5Task.py +111 -0
- hikyuu/gui/data/ImportWeightToSqliteTask.py +114 -0
- hikyuu/gui/data/ImportZhBond10Task.py +48 -0
- hikyuu/gui/data/MainWindow.py +807 -0
- hikyuu/gui/data/SchedImportThread.py +62 -0
- hikyuu/gui/data/UsePytdxImportToH5Thread.py +371 -0
- hikyuu/gui/data/UseTdxImportToH5Thread.py +182 -0
- hikyuu/gui/data/__init__.py +1 -0
- hikyuu/gui/data/tool.py +43 -0
- hikyuu/gui/hikyuu.ico +0 -0
- hikyuu/gui/importdata.py +166 -0
- hikyuu/gui/spot_server.py +336 -0
- hikyuu/gui/start_huatai_insight.py +510 -0
- hikyuu/gui/start_qmt.py +122 -0
- hikyuu/hub.py +634 -0
- hikyuu/include/__init__.py +1 -0
- hikyuu/include/hikyuu/Block.h +173 -0
- hikyuu/include/hikyuu/DataType.h +171 -0
- hikyuu/include/hikyuu/GlobalInitializer.h +46 -0
- hikyuu/include/hikyuu/HistoryFinanceInfo.h +35 -0
- hikyuu/include/hikyuu/KData.h +271 -0
- hikyuu/include/hikyuu/KDataImp.h +94 -0
- hikyuu/include/hikyuu/KQuery.h +275 -0
- hikyuu/include/hikyuu/KRecord.h +94 -0
- hikyuu/include/hikyuu/MarketInfo.h +132 -0
- hikyuu/include/hikyuu/Stock.h +351 -0
- hikyuu/include/hikyuu/StockManager.h +361 -0
- hikyuu/include/hikyuu/StockMapIterator.h +72 -0
- hikyuu/include/hikyuu/StockTypeInfo.h +127 -0
- hikyuu/include/hikyuu/StockWeight.h +148 -0
- hikyuu/include/hikyuu/StrategyContext.h +107 -0
- hikyuu/include/hikyuu/TimeLineRecord.h +71 -0
- hikyuu/include/hikyuu/TransRecord.h +79 -0
- hikyuu/include/hikyuu/ZhBond10.h +36 -0
- hikyuu/include/hikyuu/__init__.py +1 -0
- hikyuu/include/hikyuu/analysis/__init__.py +1 -0
- hikyuu/include/hikyuu/analysis/analysis_sys.h +76 -0
- hikyuu/include/hikyuu/analysis/combinate.h +115 -0
- hikyuu/include/hikyuu/config.h +48 -0
- hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +201 -0
- hikyuu/include/hikyuu/data_driver/BlockInfoDriver.h +94 -0
- hikyuu/include/hikyuu/data_driver/DataDriverFactory.h +58 -0
- hikyuu/include/hikyuu/data_driver/DriverConnectPool.h +146 -0
- hikyuu/include/hikyuu/data_driver/HistoryFinanceReader.h +36 -0
- hikyuu/include/hikyuu/data_driver/KDataDriver.h +194 -0
- hikyuu/include/hikyuu/data_driver/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/mysql/MySQLBaseInfoDriver.h +54 -0
- hikyuu/include/hikyuu/data_driver/base_info/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/sqlite/SQLiteBaseInfoDriver.h +50 -0
- hikyuu/include/hikyuu/data_driver/base_info/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/HistoryFinanceFieldTable.h +19 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/HistoryFinanceTable.h +23 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/HolidayTable.h +29 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/MarketInfoTable.h +127 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/StockTable.h +64 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/StockTypeInfoTable.h +108 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/StockWeightTable.h +52 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/ZhBond10Table.h +20 -0
- hikyuu/include/hikyuu/data_driver/base_info/table/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/mysql/MySQLBlockInfoDriver.h +29 -0
- hikyuu/include/hikyuu/data_driver/block_info/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/qianlong/QLBlockInfoDriver.h +29 -0
- hikyuu/include/hikyuu/data_driver/block_info/qianlong/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/block_info/sqlite/SQLiteBlockInfoDriver.h +29 -0
- hikyuu/include/hikyuu/data_driver/block_info/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/DoNothingKDataDriver.h +33 -0
- hikyuu/include/hikyuu/data_driver/kdata/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/cvs/KDataTempCsvDriver.h +106 -0
- hikyuu/include/hikyuu/data_driver/kdata/cvs/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/hdf5/H5KDataDriver.h +89 -0
- hikyuu/include/hikyuu/data_driver/kdata/hdf5/H5Record.h +50 -0
- hikyuu/include/hikyuu/data_driver/kdata/hdf5/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/mysql/KRecordTable.h +124 -0
- hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +78 -0
- hikyuu/include/hikyuu/data_driver/kdata/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +62 -0
- hikyuu/include/hikyuu/data_driver/kdata/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/data_driver/kdata/tdx/TdxKDataDriver.h +63 -0
- hikyuu/include/hikyuu/data_driver/kdata/tdx/__init__.py +1 -0
- hikyuu/include/hikyuu/debug.h +32 -0
- hikyuu/include/hikyuu/doc.h +166 -0
- hikyuu/include/hikyuu/global/GlobalSpotAgent.h +33 -0
- hikyuu/include/hikyuu/global/SpotRecord.h +52 -0
- hikyuu/include/hikyuu/global/__init__.py +1 -0
- hikyuu/include/hikyuu/global/agent/SpotAgent.h +143 -0
- hikyuu/include/hikyuu/global/agent/__init__.py +1 -0
- hikyuu/include/hikyuu/global/agent/hikyuu/__init__.py +1 -0
- hikyuu/include/hikyuu/global/agent/hikyuu/flat/__init__.py +1 -0
- hikyuu/include/hikyuu/global/agent/spot_generated.h +527 -0
- hikyuu/include/hikyuu/global/schedule/__init__.py +1 -0
- hikyuu/include/hikyuu/global/schedule/inner_tasks.h +16 -0
- hikyuu/include/hikyuu/global/schedule/scheduler.h +24 -0
- hikyuu/include/hikyuu/global/sysinfo.h +67 -0
- hikyuu/include/hikyuu/hikyuu.h +55 -0
- hikyuu/include/hikyuu/indicator/IndParam.h +39 -0
- hikyuu/include/hikyuu/indicator/Indicator.h +403 -0
- hikyuu/include/hikyuu/indicator/IndicatorImp.h +413 -0
- hikyuu/include/hikyuu/indicator/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator/build_in.h +114 -0
- hikyuu/include/hikyuu/indicator/crt/ABS.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/ACOS.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/AD.h +28 -0
- hikyuu/include/hikyuu/indicator/crt/ADVANCE.h +32 -0
- hikyuu/include/hikyuu/indicator/crt/ALIGN.h +42 -0
- hikyuu/include/hikyuu/indicator/crt/AMA.h +113 -0
- hikyuu/include/hikyuu/indicator/crt/ASIN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ATAN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ATR.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/AVEDEV.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/BACKSET.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/BARSCOUNT.h +37 -0
- hikyuu/include/hikyuu/indicator/crt/BARSLAST.h +41 -0
- hikyuu/include/hikyuu/indicator/crt/BARSSINCE.h +41 -0
- hikyuu/include/hikyuu/indicator/crt/BETWEEN.h +85 -0
- hikyuu/include/hikyuu/indicator/crt/BLOCKSETNUM.h +23 -0
- hikyuu/include/hikyuu/indicator/crt/CEILING.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/CORR.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/COS.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/COST.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/COUNT.h +54 -0
- hikyuu/include/hikyuu/indicator/crt/CROSS.h +48 -0
- hikyuu/include/hikyuu/indicator/crt/CVAL.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/DECLINE.h +32 -0
- hikyuu/include/hikyuu/indicator/crt/DEVSQ.h +40 -0
- hikyuu/include/hikyuu/indicator/crt/DIFF.h +31 -0
- hikyuu/include/hikyuu/indicator/crt/DMA.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/DOWNNDAY.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/DROPNA.h +31 -0
- hikyuu/include/hikyuu/indicator/crt/EMA.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/EVERY.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/EXIST.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/EXP.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/FILTER.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/FINANCE.h +20 -0
- hikyuu/include/hikyuu/indicator/crt/FLOOR.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/HHV.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/HHVBARS.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/HSL.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/IC.h +41 -0
- hikyuu/include/hikyuu/indicator/crt/ICIR.h +51 -0
- hikyuu/include/hikyuu/indicator/crt/INSUM.h +33 -0
- hikyuu/include/hikyuu/indicator/crt/INTPART.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/IR.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/KDATA.h +72 -0
- hikyuu/include/hikyuu/indicator/crt/LAST.h +100 -0
- hikyuu/include/hikyuu/indicator/crt/LIUTONGPAN.h +23 -0
- hikyuu/include/hikyuu/indicator/crt/LLV.h +46 -0
- hikyuu/include/hikyuu/indicator/crt/LLVBARS.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/LN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/LOG.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/LONGCROSS.h +68 -0
- hikyuu/include/hikyuu/indicator/crt/MA.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/MACD.h +62 -0
- hikyuu/include/hikyuu/indicator/crt/MAX.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/MDD.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/MIN.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/MOD.h +49 -0
- hikyuu/include/hikyuu/indicator/crt/MRR.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/NDAY.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/NOT.h +35 -0
- hikyuu/include/hikyuu/indicator/crt/POS.h +21 -0
- hikyuu/include/hikyuu/indicator/crt/POW.h +48 -0
- hikyuu/include/hikyuu/indicator/crt/PRICELIST.h +59 -0
- hikyuu/include/hikyuu/indicator/crt/RECOVER.h +45 -0
- hikyuu/include/hikyuu/indicator/crt/REF.h +48 -0
- hikyuu/include/hikyuu/indicator/crt/RESULT.h +20 -0
- hikyuu/include/hikyuu/indicator/crt/REVERSE.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ROC.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROCP.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROCR.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROCR100.h +39 -0
- hikyuu/include/hikyuu/indicator/crt/ROUND.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ROUNDDOWN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/ROUNDUP.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/RSI.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/SAFTYLOSS.h +79 -0
- hikyuu/include/hikyuu/indicator/crt/SGN.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/SIN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/SLICE.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/SLOPE.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/SMA.h +72 -0
- hikyuu/include/hikyuu/indicator/crt/SPEARMAN.h +23 -0
- hikyuu/include/hikyuu/indicator/crt/SQRT.h +41 -0
- hikyuu/include/hikyuu/indicator/crt/STDEV.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/STDP.h +38 -0
- hikyuu/include/hikyuu/indicator/crt/SUM.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/SUMBARS.h +44 -0
- hikyuu/include/hikyuu/indicator/crt/TAN.h +36 -0
- hikyuu/include/hikyuu/indicator/crt/TIME.h +69 -0
- hikyuu/include/hikyuu/indicator/crt/TIMELINE.h +23 -0
- hikyuu/include/hikyuu/indicator/crt/TIMELINEVOL.h +21 -0
- hikyuu/include/hikyuu/indicator/crt/TURNOVER.h +21 -0
- hikyuu/include/hikyuu/indicator/crt/UPNDAY.h +43 -0
- hikyuu/include/hikyuu/indicator/crt/VAR.h +40 -0
- hikyuu/include/hikyuu/indicator/crt/VARP.h +40 -0
- hikyuu/include/hikyuu/indicator/crt/VIGOR.h +34 -0
- hikyuu/include/hikyuu/indicator/crt/ZHBOND10.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/ZONGGUBEN.h +17 -0
- hikyuu/include/hikyuu/indicator/crt/ZSCORE.h +30 -0
- hikyuu/include/hikyuu/indicator/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/indicator/imp/IAbs.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IAcos.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAd.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IAdvance.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IAlign.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAma.h +38 -0
- hikyuu/include/hikyuu/indicator/imp/IAsin.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAtan.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IAtr.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IBackset.h +33 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsCount.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsLast.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IBarsSince.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IBlockSetNum.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ICeil.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/ICorr.h +42 -0
- hikyuu/include/hikyuu/indicator/imp/ICos.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ICount.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/ICval.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDecline.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDevsq.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDiff.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IDma.h +47 -0
- hikyuu/include/hikyuu/indicator/imp/IDropna.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IEma.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IEvery.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IExist.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IExp.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IFilter.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IFinance.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/IFloor.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IHhvbars.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IHighLine.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IIc.h +45 -0
- hikyuu/include/hikyuu/indicator/imp/IInSum.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IIntpart.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IKData.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/ILiuTongPan.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/ILn.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ILog.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ILowLine.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/ILowLineBars.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IMa.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/IMacd.h +41 -0
- hikyuu/include/hikyuu/indicator/imp/IMdd.h +23 -0
- hikyuu/include/hikyuu/indicator/imp/IMrr.h +23 -0
- hikyuu/include/hikyuu/indicator/imp/INot.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IPow.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IPriceList.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRecover.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRef.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/IResult.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IReverse.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IRoc.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRocp.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRocr.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRocr100.h +29 -0
- hikyuu/include/hikyuu/indicator/imp/IRound.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IRoundDown.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IRoundUp.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/ISaftyLoss.h +44 -0
- hikyuu/include/hikyuu/indicator/imp/ISign.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ISin.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ISlice.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/ISlope.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/ISma.h +34 -0
- hikyuu/include/hikyuu/indicator/imp/ISpearman.h +42 -0
- hikyuu/include/hikyuu/indicator/imp/ISqrt.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IStdev.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/IStdp.h +33 -0
- hikyuu/include/hikyuu/indicator/imp/ISum.h +27 -0
- hikyuu/include/hikyuu/indicator/imp/ISumBars.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/ITan.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/ITime.h +33 -0
- hikyuu/include/hikyuu/indicator/imp/ITimeLine.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IVar.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IVarp.h +32 -0
- hikyuu/include/hikyuu/indicator/imp/IVigor.h +35 -0
- hikyuu/include/hikyuu/indicator/imp/IZScore.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/IZhBond10.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IZongGuBen.h +25 -0
- hikyuu/include/hikyuu/indicator/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/python/__init__.py +1 -0
- hikyuu/include/hikyuu/python/pickle_support.h +90 -0
- hikyuu/include/hikyuu/python/pybind_utils.h +103 -0
- hikyuu/include/hikyuu/serialization/Block_serialization.h +55 -0
- hikyuu/include/hikyuu/serialization/Datetime_serialization.h +40 -0
- hikyuu/include/hikyuu/serialization/KData_serialization.h +45 -0
- hikyuu/include/hikyuu/serialization/KQuery_serialization.h +79 -0
- hikyuu/include/hikyuu/serialization/KRecord_serialization.h +50 -0
- hikyuu/include/hikyuu/serialization/MarketInfo_serialization.h +68 -0
- hikyuu/include/hikyuu/serialization/PriceList_serialization.h +66 -0
- hikyuu/include/hikyuu/serialization/StockTypeInfo_serialization.h +62 -0
- hikyuu/include/hikyuu/serialization/StockWeight_serialization.h +65 -0
- hikyuu/include/hikyuu/serialization/Stock_serialization.h +47 -0
- hikyuu/include/hikyuu/serialization/TimeDelta_serialization.h +44 -0
- hikyuu/include/hikyuu/serialization/TimeLineRecord_serialization.h +42 -0
- hikyuu/include/hikyuu/serialization/TransRecord_serialization.h +44 -0
- hikyuu/include/hikyuu/serialization/__init__.py +1 -0
- hikyuu/include/hikyuu/serialization/all.h +26 -0
- hikyuu/include/hikyuu/strategy/BrokerTradeManager.h +433 -0
- hikyuu/include/hikyuu/strategy/RunPortfolioInStrategy.h +37 -0
- hikyuu/include/hikyuu/strategy/RunSystemInStrategy.h +38 -0
- hikyuu/include/hikyuu/strategy/Strategy.h +191 -0
- hikyuu/include/hikyuu/strategy/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_manage/BorrowRecord.h +91 -0
- hikyuu/include/hikyuu/trade_manage/CostRecord.h +67 -0
- hikyuu/include/hikyuu/trade_manage/FundsRecord.h +110 -0
- hikyuu/include/hikyuu/trade_manage/LoanRecord.h +64 -0
- hikyuu/include/hikyuu/trade_manage/OrderBrokerBase.h +182 -0
- hikyuu/include/hikyuu/trade_manage/Performance.h +80 -0
- hikyuu/include/hikyuu/trade_manage/PositionRecord.h +108 -0
- hikyuu/include/hikyuu/trade_manage/TradeCostBase.h +174 -0
- hikyuu/include/hikyuu/trade_manage/TradeManager.h +487 -0
- hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +782 -0
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +151 -0
- hikyuu/include/hikyuu/trade_manage/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_manage/build_in.h +19 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_FixedA.h +45 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_FixedA2015.h +43 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_FixedA2017.h +44 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_TestStub.h +21 -0
- hikyuu/include/hikyuu/trade_manage/crt/TC_Zero.h +25 -0
- hikyuu/include/hikyuu/trade_manage/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_manage/crt/crtTM.h +33 -0
- hikyuu/include/hikyuu/trade_manage/imp/FixedA2015TradeCost.h +53 -0
- hikyuu/include/hikyuu/trade_manage/imp/FixedA2017TradeCost.h +56 -0
- hikyuu/include/hikyuu/trade_manage/imp/FixedATradeCost.h +88 -0
- hikyuu/include/hikyuu/trade_manage/imp/TradeCostStub.h +48 -0
- hikyuu/include/hikyuu/trade_manage/imp/ZeroTradeCost.h +50 -0
- hikyuu/include/hikyuu/trade_manage/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/all.h +24 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +229 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +16 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_EqualWeight.h +25 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedWeight.h +26 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_MultiFactor.h +21 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/EqualWeightAllocateFunds.h +27 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixedWeightAllocateFunds.h +28 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/MultiFactorAllocaterFunds.h +23 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +241 -0
- hikyuu/include/hikyuu/trade_sys/condition/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/build_in.h +17 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_Bool.h +22 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_Logic.h +35 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_Manual.h +20 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/CN_OPLine.h +26 -0
- hikyuu/include/hikyuu/trade_sys/condition/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/BoolCondition.h +40 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/ManualCondition.h +23 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/OPLineCondition.h +44 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/SubCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/AddCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/AndCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/DivCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/MultiCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/OrCondition.h +42 -0
- hikyuu/include/hikyuu/trade_sys/condition/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +178 -0
- hikyuu/include/hikyuu/trade_sys/environment/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/build_in.h +16 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_Bool.h +23 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_Manual.h +20 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/EV_TwoLine.h +28 -0
- hikyuu/include/hikyuu/trade_sys/environment/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/BoolEnvironment.h +41 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/ManualEnvironment.h +23 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/TwoLineEnvironment.h +47 -0
- hikyuu/include/hikyuu/trade_sys/environment/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +230 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/build_in.h +20 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCapital.h +20 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCount.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedPercent.h +27 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedRisk.h +20 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedUnits.h +20 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_Nothing.h +24 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_WilliamsFixedRisk.h +20 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCapitalMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCountMoneyManager.h +38 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedPercentMoneyManager.h +34 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedRiskMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedUnitsMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/NotMoneyManager.h +30 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/WilliamsFixedRiskMoneyManager.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +275 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/ScoreRecord.h +51 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/build_in.h +12 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_EqualWeight.h +29 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICIRWeight.h +30 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICWeight.h +30 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/EqualWeightMultiFactor.h +25 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICIRMultiFactor.h +27 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICMultiFactor.h +27 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +256 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/build_in.h +14 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/PF_Simple.h +23 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +189 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/build_in.h +16 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/PG_FixedHoldDays.h +26 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/PG_FixedPercent.h +25 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/PG_NoGoal.h +24 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/FixedHoldDays.h +29 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/FixedPercentProfitGoal.h +28 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/NoGoalProfitGoal.h +27 -0
- hikyuu/include/hikyuu/trade_sys/profitgoal/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +245 -0
- hikyuu/include/hikyuu/trade_sys/selector/SystemWeight.h +70 -0
- hikyuu/include/hikyuu/trade_sys/selector/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/build_in.h +18 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Fixed.h +38 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Logic.h +43 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor.h +40 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Optimal.h +26 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Signal.h +30 -0
- hikyuu/include/hikyuu/trade_sys/selector/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/FixedSelector.h +28 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector.h +52 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/SignalSelector.h +30 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorAddSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorAddValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorDivSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorDivValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorInvertDivValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorInvertSubValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorMulSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorMulValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSelector.h +108 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSubSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorSubValueSelector.h +19 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/OperatorValueSelector.h +94 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/MaxFundsOptimalSelector.h +27 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalSelectorBase.h +86 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/PerformanceOptimalSelector.h +42 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +249 -0
- hikyuu/include/hikyuu/trade_sys/signal/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/build_in.h +22 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_AllwaysBuy.h +20 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Band.h +37 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Bool.h +28 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Cross.h +28 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_CrossGold.h +29 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Cycle.h +20 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Flex.h +29 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Manual.h +20 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Single.h +56 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/AllwaysBuySignal.h +25 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/BandSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/BandSignal2.h +47 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/BoolSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/CrossGoldSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/CrossSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/CycleSignal.h +25 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/ManualSignal.h +23 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/SingleSignal.h +45 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/SingleSignal2.h +45 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +170 -0
- hikyuu/include/hikyuu/trade_sys/slippage/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/slippage/build_in.h +15 -0
- hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_FixedPercent.h +26 -0
- hikyuu/include/hikyuu/trade_sys/slippage/crt/SP_FixedValue.h +26 -0
- hikyuu/include/hikyuu/trade_sys/slippage/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/slippage/imp/FixedPercentSlippage.h +28 -0
- hikyuu/include/hikyuu/trade_sys/slippage/imp/FixedValueSlippage.h +28 -0
- hikyuu/include/hikyuu/trade_sys/slippage/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +199 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/build_in.h +16 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_FixedPercent.h +25 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_Indicator.h +21 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_Saftyloss.h +37 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/FixedPercentStoploss.h +30 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/IndicatorStoploss.h +50 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/system/System.h +639 -0
- hikyuu/include/hikyuu/trade_sys/system/SystemPart.h +54 -0
- hikyuu/include/hikyuu/trade_sys/system/TradeRequest.h +94 -0
- hikyuu/include/hikyuu/trade_sys/system/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/system/build_in.h +15 -0
- hikyuu/include/hikyuu/trade_sys/system/crt/SYS_Simple.h +50 -0
- hikyuu/include/hikyuu/trade_sys/system/crt/SYS_WalkForward.h +27 -0
- hikyuu/include/hikyuu/trade_sys/system/crt/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/DelegateSystem.h +51 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/WalkForwardSystem.h +70 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/WalkForwardTradeManager.h +465 -0
- hikyuu/include/hikyuu/trade_sys/system/imp/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/ConnectPool.h +163 -0
- hikyuu/include/hikyuu/utilities/FilterNode.h +267 -0
- hikyuu/include/hikyuu/utilities/LRUCache11.h +230 -0
- hikyuu/include/hikyuu/utilities/Log.h +411 -0
- hikyuu/include/hikyuu/utilities/Null.h +143 -0
- hikyuu/include/hikyuu/utilities/Parameter.h +511 -0
- hikyuu/include/hikyuu/utilities/ResourcePool.h +636 -0
- hikyuu/include/hikyuu/utilities/SpendTimer.h +305 -0
- hikyuu/include/hikyuu/utilities/TimerManager.h +552 -0
- hikyuu/include/hikyuu/utilities/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/any_to_string.h +142 -0
- hikyuu/include/hikyuu/utilities/arithmetic.h +401 -0
- hikyuu/include/hikyuu/utilities/base64.h +52 -0
- hikyuu/include/hikyuu/utilities/config.h +41 -0
- hikyuu/include/hikyuu/utilities/cppdef.h +25 -0
- hikyuu/include/hikyuu/utilities/datetime/Datetime.h +438 -0
- hikyuu/include/hikyuu/utilities/datetime/TimeDelta.h +343 -0
- hikyuu/include/hikyuu/utilities/datetime/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/db_connect/AutoTransAction.h +124 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBCondition.h +248 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBConnect.h +30 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBConnectBase.h +658 -0
- hikyuu/include/hikyuu/utilities/db_connect/DBUpgrade.h +28 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLException.h +62 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLResultSet.h +248 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLStatementBase.h +305 -0
- hikyuu/include/hikyuu/utilities/db_connect/TableMacro.h +2579 -0
- hikyuu/include/hikyuu/utilities/db_connect/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLConnect.h +56 -0
- hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLStatement.h +87 -0
- hikyuu/include/hikyuu/utilities/db_connect/mysql/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteConnect.h +89 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteStatement.h +71 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/SQLiteUtil.h +80 -0
- hikyuu/include/hikyuu/utilities/db_connect/sqlite/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/exception.h +52 -0
- hikyuu/include/hikyuu/utilities/http_client/HttpClient.h +229 -0
- hikyuu/include/hikyuu/utilities/http_client/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/http_client/nng_wrap.h +517 -0
- hikyuu/include/hikyuu/utilities/http_client/url.h +25 -0
- hikyuu/include/hikyuu/utilities/ini_parser/IniParser.h +104 -0
- hikyuu/include/hikyuu/utilities/ini_parser/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/md5.h +41 -0
- hikyuu/include/hikyuu/utilities/mo/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/mo/mo.h +48 -0
- hikyuu/include/hikyuu/utilities/mo/moFileReader.h +836 -0
- hikyuu/include/hikyuu/utilities/node/NodeClient.h +175 -0
- hikyuu/include/hikyuu/utilities/node/NodeError.h +66 -0
- hikyuu/include/hikyuu/utilities/node/NodeMessage.h +80 -0
- hikyuu/include/hikyuu/utilities/node/NodeServer.h +246 -0
- hikyuu/include/hikyuu/utilities/node/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/os.h +102 -0
- hikyuu/include/hikyuu/utilities/osdef.h +159 -0
- hikyuu/include/hikyuu/utilities/runtimeinfo.h +35 -0
- hikyuu/include/hikyuu/utilities/snowflake.h +110 -0
- hikyuu/include/hikyuu/utilities/string_view.h +70 -0
- hikyuu/include/hikyuu/utilities/thread/FuncWrapper.h +85 -0
- hikyuu/include/hikyuu/utilities/thread/InterruptFlag.h +30 -0
- hikyuu/include/hikyuu/utilities/thread/MQStealQueue.h +112 -0
- hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +315 -0
- hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +275 -0
- hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +309 -0
- hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +231 -0
- hikyuu/include/hikyuu/utilities/thread/ThreadSafeQueue.h +101 -0
- hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +105 -0
- hikyuu/include/hikyuu/utilities/thread/__init__.py +1 -0
- hikyuu/include/hikyuu/utilities/thread/algorithm.h +110 -0
- hikyuu/include/hikyuu/utilities/thread/thread.h +10 -0
- hikyuu/include/hikyuu/version.h +24 -0
- hikyuu/indicator/__init__.py +29 -0
- hikyuu/indicator/indicator.py +157 -0
- hikyuu/indicator/pyind.py +47 -0
- hikyuu/indicator/talib_wrap.py +1264 -0
- hikyuu/interactive.py +331 -0
- hikyuu/setup.py +104 -0
- hikyuu/shell/__init__.py +0 -0
- hikyuu/shell/cmdserver.py +126 -0
- hikyuu/shell/hkucmd.py +110 -0
- hikyuu/shell/hkushell.py +20 -0
- hikyuu/sqlite3.dll +0 -0
- hikyuu/strategy/__init__.py +2 -0
- hikyuu/strategy/strategy_demo1.py +54 -0
- hikyuu/strategy/strategy_demo2.py +47 -0
- hikyuu/strategy/strategy_demo3.py +24 -0
- hikyuu/test/AllocateFunds.py +25 -0
- hikyuu/test/Condition.py +95 -0
- hikyuu/test/Datetime.py +61 -0
- hikyuu/test/Environment.py +88 -0
- hikyuu/test/Indicator.py +233 -0
- hikyuu/test/KData.py +64 -0
- hikyuu/test/MarketInfo.py +26 -0
- hikyuu/test/MoneyManager.py +88 -0
- hikyuu/test/Parameter.py +62 -0
- hikyuu/test/ProfitGoal.py +83 -0
- hikyuu/test/Signal.py +160 -0
- hikyuu/test/Slippage.py +88 -0
- hikyuu/test/Stock.py +127 -0
- hikyuu/test/StockTypeInfo.py +47 -0
- hikyuu/test/Stoploss.py +86 -0
- hikyuu/test/TradeCost.py +71 -0
- hikyuu/test/__init__.py +0 -0
- hikyuu/test/test.py +63 -0
- hikyuu/test/test_init.py +36 -0
- hikyuu/tools/__init__.py +1 -0
- hikyuu/tools/copy_file.py +16 -0
- hikyuu/tools/delete_index.py +50 -0
- hikyuu/tools/fenge.py +139 -0
- hikyuu/tools/h5_data_clear.py +163 -0
- hikyuu/tools/mysql_clear_last_day_data.py +61 -0
- hikyuu/tools/update_block_info.py +168 -0
- hikyuu/trade_manage/__init__.py +30 -0
- hikyuu/trade_manage/broker.py +95 -0
- hikyuu/trade_manage/broker_easytrader.py +63 -0
- hikyuu/trade_manage/broker_mail.py +101 -0
- hikyuu/trade_manage/trade.py +111 -0
- hikyuu/trade_sys/__init__.py +27 -0
- hikyuu/trade_sys/trade_sys.py +251 -0
- hikyuu/util/__init__.py +49 -0
- hikyuu/util/check.py +153 -0
- hikyuu/util/mylog.py +264 -0
- hikyuu/util/notebook.py +47 -0
- hikyuu/util/singleton.py +29 -0
- hikyuu/util/slice.py +43 -0
- hikyuu/util/timeout.py +83 -0
- hikyuu/vcruntime140.dll +0 -0
- hikyuu/vcruntime140_1.dll +0 -0
- hikyuu-2.2.2.dist-info/LICENSE +201 -0
- hikyuu-2.2.2.dist-info/METADATA +127 -0
- hikyuu-2.2.2.dist-info/RECORD +820 -0
- hikyuu-2.2.2.dist-info/WHEEL +5 -0
- hikyuu-2.2.2.dist-info/entry_points.txt +3 -0
- hikyuu-2.2.2.dist-info/top_level.txt +112 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* BorrowRecord.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2013-5-2
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef BORROWRECORD_H_
|
|
10
|
+
#define BORROWRECORD_H_
|
|
11
|
+
|
|
12
|
+
#include "../DataType.h"
|
|
13
|
+
#include "../serialization/Stock_serialization.h"
|
|
14
|
+
#include "../serialization/Datetime_serialization.h"
|
|
15
|
+
|
|
16
|
+
namespace hku {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* 记录当前借入的股票信息
|
|
20
|
+
* @ingroup TradeManagerClass
|
|
21
|
+
*/
|
|
22
|
+
class HKU_API BorrowRecord {
|
|
23
|
+
public:
|
|
24
|
+
BorrowRecord();
|
|
25
|
+
BorrowRecord(const Stock&, double number, price_t value);
|
|
26
|
+
|
|
27
|
+
Stock stock;
|
|
28
|
+
double number; // 借入总数量
|
|
29
|
+
price_t value; // 借入总价值
|
|
30
|
+
|
|
31
|
+
struct Data {
|
|
32
|
+
Data() : datetime(Null<Datetime>()), price(0.0), number(0) {}
|
|
33
|
+
Data(const Datetime& datetime, price_t price, double number)
|
|
34
|
+
: datetime(datetime), price(price), number(number) {}
|
|
35
|
+
|
|
36
|
+
Datetime datetime; // 借入时间
|
|
37
|
+
price_t price; // 借入时的单价
|
|
38
|
+
double number; // 借入数量
|
|
39
|
+
|
|
40
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
41
|
+
private:
|
|
42
|
+
friend class boost::serialization::access;
|
|
43
|
+
template <class Archive>
|
|
44
|
+
void save(Archive& ar, const unsigned int version) const {
|
|
45
|
+
uint64_t datetime_num = datetime.number();
|
|
46
|
+
ar& boost::serialization::make_nvp("datetime", datetime_num);
|
|
47
|
+
ar& BOOST_SERIALIZATION_NVP(number);
|
|
48
|
+
ar& BOOST_SERIALIZATION_NVP(price);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
template <class Archive>
|
|
52
|
+
void load(Archive& ar, const unsigned int version) {
|
|
53
|
+
uint64_t datetime_num;
|
|
54
|
+
ar& boost::serialization::make_nvp("datetime", datetime_num);
|
|
55
|
+
datetime = Datetime(datetime_num);
|
|
56
|
+
ar& BOOST_SERIALIZATION_NVP(number);
|
|
57
|
+
ar& BOOST_SERIALIZATION_NVP(price);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
BOOST_SERIALIZATION_SPLIT_MEMBER()
|
|
61
|
+
#endif
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
list<Data> record_list; // 当前的借入记录
|
|
65
|
+
|
|
66
|
+
// 序列化支持
|
|
67
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
68
|
+
private:
|
|
69
|
+
friend class boost::serialization::access;
|
|
70
|
+
template <class Archive>
|
|
71
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
72
|
+
ar& BOOST_SERIALIZATION_NVP(stock);
|
|
73
|
+
ar& BOOST_SERIALIZATION_NVP(number);
|
|
74
|
+
ar& BOOST_SERIALIZATION_NVP(value);
|
|
75
|
+
ar& BOOST_SERIALIZATION_NVP(record_list);
|
|
76
|
+
}
|
|
77
|
+
#endif
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
typedef vector<BorrowRecord> BorrowRecordList;
|
|
81
|
+
|
|
82
|
+
HKU_API std::ostream& operator<<(std::ostream&, const BorrowRecord&);
|
|
83
|
+
|
|
84
|
+
} /* namespace hku */
|
|
85
|
+
|
|
86
|
+
#if FMT_VERSION >= 90000
|
|
87
|
+
template <>
|
|
88
|
+
struct fmt::formatter<hku::BorrowRecord> : ostream_formatter {};
|
|
89
|
+
#endif
|
|
90
|
+
|
|
91
|
+
#endif /* BORROWRECORD_H_ */
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* CostRecord.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2013-2-13
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef COSTRECORD_H_
|
|
10
|
+
#define COSTRECORD_H_
|
|
11
|
+
|
|
12
|
+
#include "../DataType.h"
|
|
13
|
+
#include "../config.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 成本记录
|
|
19
|
+
* @details 总成本 = 佣金 + 印花税 + 过户费 + 其他费用
|
|
20
|
+
* @note 该结构主要用于存放成本记录结果,一般当做struct直接使用,
|
|
21
|
+
* 该类本身不对总成本进行计算,也不保证上面的公式成立
|
|
22
|
+
* @ingroup TradeCost
|
|
23
|
+
*/
|
|
24
|
+
class HKU_API CostRecord {
|
|
25
|
+
public:
|
|
26
|
+
CostRecord();
|
|
27
|
+
CostRecord(price_t commission, price_t stamptax, price_t transferfee, price_t others,
|
|
28
|
+
price_t total);
|
|
29
|
+
|
|
30
|
+
price_t commission; /**< 佣金 */
|
|
31
|
+
price_t stamptax; /**< 印花税 */
|
|
32
|
+
price_t transferfee; /**< 过户费 */
|
|
33
|
+
price_t others; /**< 其他费用 */
|
|
34
|
+
price_t total; /**< 总成本 */
|
|
35
|
+
|
|
36
|
+
string toString() const;
|
|
37
|
+
|
|
38
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
39
|
+
private:
|
|
40
|
+
friend class boost::serialization::access;
|
|
41
|
+
template <class Archive>
|
|
42
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
43
|
+
ar& BOOST_SERIALIZATION_NVP(commission);
|
|
44
|
+
ar& BOOST_SERIALIZATION_NVP(stamptax);
|
|
45
|
+
ar& BOOST_SERIALIZATION_NVP(transferfee);
|
|
46
|
+
ar& BOOST_SERIALIZATION_NVP(others);
|
|
47
|
+
ar& BOOST_SERIALIZATION_NVP(total);
|
|
48
|
+
}
|
|
49
|
+
#endif /* HKU_SUPPORT_SERIALIZATION */
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 输出成本信息
|
|
54
|
+
* @ingroup TradeCost
|
|
55
|
+
*/
|
|
56
|
+
HKU_API std::ostream& operator<<(std::ostream& os, const CostRecord&);
|
|
57
|
+
|
|
58
|
+
bool HKU_API operator==(const CostRecord& d1, const CostRecord& d2);
|
|
59
|
+
|
|
60
|
+
} /* namespace hku */
|
|
61
|
+
|
|
62
|
+
#if FMT_VERSION >= 90000
|
|
63
|
+
template <>
|
|
64
|
+
struct fmt::formatter<hku::CostRecord> : ostream_formatter {};
|
|
65
|
+
#endif
|
|
66
|
+
|
|
67
|
+
#endif /* COSTRECORD_H_ */
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* FundsRecord.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2013-5-2
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef FUNDSRECORD_H_
|
|
10
|
+
#define FUNDSRECORD_H_
|
|
11
|
+
|
|
12
|
+
#include "../DataType.h"
|
|
13
|
+
#include "../config.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 当前资产情况记录,由TradeManager::getFunds返回
|
|
19
|
+
* @ingroup TradeManagerClass
|
|
20
|
+
*/
|
|
21
|
+
class HKU_API FundsRecord {
|
|
22
|
+
public:
|
|
23
|
+
FundsRecord() = default;
|
|
24
|
+
FundsRecord(price_t cash, price_t market_value, price_t short_market_value, price_t base_cash,
|
|
25
|
+
price_t base_asset, price_t borrow_cash, price_t borrow_asset);
|
|
26
|
+
|
|
27
|
+
price_t cash{0.0}; /**< 当前现金 */
|
|
28
|
+
price_t market_value{0.0}; /**< 当前多头市值 */
|
|
29
|
+
price_t short_market_value{0.0}; /**< 当前空头仓位市值 */
|
|
30
|
+
price_t base_cash{0.0}; /**< 当前投入本金principal */
|
|
31
|
+
price_t base_asset{0.0}; /**< 当前投入的资产价值 */
|
|
32
|
+
price_t borrow_cash{0.0}; /**< 当前借入的资金,即负债 */
|
|
33
|
+
price_t borrow_asset{0.0}; /**< 当前借入证券资产价值 */
|
|
34
|
+
|
|
35
|
+
// 当前总资产 = 现金 + 多头市值 + 空头数量×(借入价格 - 当前价格)
|
|
36
|
+
// = cash + market_value + borrow_asset - short_market_value
|
|
37
|
+
// 当前负债 = 借入的资金 + 借入的资产价值
|
|
38
|
+
// = borrow_cash + borrow_asset
|
|
39
|
+
// 当前净资产 = 总资产 - 负债
|
|
40
|
+
// = cash + market_value - short_market_value - borrow_cash
|
|
41
|
+
// 当前投入本值资产 = 投入本金 + 投入资产价值
|
|
42
|
+
// = base_cash + base_asset
|
|
43
|
+
// 当前收益 = 当前净资产 - 当前投入本值资产
|
|
44
|
+
// = cash + market_value - short_market_value - borrow_cash - base_cash - base_asset
|
|
45
|
+
|
|
46
|
+
// 当前总资产
|
|
47
|
+
price_t total_assets() const {
|
|
48
|
+
return cash + market_value + borrow_asset - short_market_value;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// 当前净资产
|
|
52
|
+
price_t net_assets() const {
|
|
53
|
+
return cash + market_value - short_market_value - borrow_cash;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// 总负债
|
|
57
|
+
price_t total_borrow() const {
|
|
58
|
+
return borrow_cash + borrow_asset;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// 当前投入本值资产
|
|
62
|
+
price_t total_base() const {
|
|
63
|
+
return base_cash + base_asset;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 当前收益
|
|
67
|
+
price_t profit() const {
|
|
68
|
+
return cash + market_value - short_market_value - borrow_cash - base_cash - base_asset;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
FundsRecord operator+(const FundsRecord& other) const;
|
|
72
|
+
|
|
73
|
+
FundsRecord& operator+=(const FundsRecord& other);
|
|
74
|
+
|
|
75
|
+
// 序列化支持
|
|
76
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
77
|
+
private:
|
|
78
|
+
friend class boost::serialization::access;
|
|
79
|
+
template <class Archive>
|
|
80
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
81
|
+
ar& BOOST_SERIALIZATION_NVP(cash);
|
|
82
|
+
ar& BOOST_SERIALIZATION_NVP(market_value);
|
|
83
|
+
ar& BOOST_SERIALIZATION_NVP(short_market_value);
|
|
84
|
+
ar& BOOST_SERIALIZATION_NVP(base_cash);
|
|
85
|
+
ar& BOOST_SERIALIZATION_NVP(base_asset);
|
|
86
|
+
ar& BOOST_SERIALIZATION_NVP(borrow_cash);
|
|
87
|
+
ar& BOOST_SERIALIZATION_NVP(borrow_asset);
|
|
88
|
+
}
|
|
89
|
+
#endif
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
typedef vector<FundsRecord> FundsList;
|
|
93
|
+
typedef vector<FundsRecord> FundsRecordList;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* 输出TradeRecord信息
|
|
97
|
+
* @ingroup TradeManagerClass
|
|
98
|
+
*/
|
|
99
|
+
HKU_API std::ostream& operator<<(std::ostream&, const FundsRecord&);
|
|
100
|
+
|
|
101
|
+
bool HKU_API operator==(const FundsRecord& d1, const FundsRecord& d2);
|
|
102
|
+
|
|
103
|
+
} /* namespace hku */
|
|
104
|
+
|
|
105
|
+
#if FMT_VERSION >= 90000
|
|
106
|
+
template <>
|
|
107
|
+
struct fmt::formatter<hku::FundsRecord> : ostream_formatter {};
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
#endif /* FUNDSRECORD_H_ */
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* LoanRecord.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2013-5-24
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef LOANRECORD_H_
|
|
10
|
+
#define LOANRECORD_H_
|
|
11
|
+
|
|
12
|
+
#include "../DataType.h"
|
|
13
|
+
#include "../config.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 借款记录(融资记录)
|
|
19
|
+
* @ingroup TradeManagerClass
|
|
20
|
+
*/
|
|
21
|
+
class HKU_API LoanRecord {
|
|
22
|
+
public:
|
|
23
|
+
LoanRecord() : datetime(Null<Datetime>()), value(0.0) {}
|
|
24
|
+
LoanRecord(const Datetime& datetime, price_t value) : datetime(datetime), value(value) {}
|
|
25
|
+
|
|
26
|
+
Datetime datetime;
|
|
27
|
+
price_t value;
|
|
28
|
+
|
|
29
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
30
|
+
private:
|
|
31
|
+
friend class boost::serialization::access;
|
|
32
|
+
template <class Archive>
|
|
33
|
+
void save(Archive& ar, const unsigned int version) const {
|
|
34
|
+
namespace bs = boost::serialization;
|
|
35
|
+
hku::uint64_t date_number = datetime.number();
|
|
36
|
+
ar& bs::make_nvp("datetime", date_number);
|
|
37
|
+
ar& BOOST_SERIALIZATION_NVP(value);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template <class Archive>
|
|
41
|
+
void load(Archive& ar, const unsigned int version) {
|
|
42
|
+
namespace bs = boost::serialization;
|
|
43
|
+
hku::uint64_t date_number;
|
|
44
|
+
ar& bs::make_nvp("datetime", date_number);
|
|
45
|
+
datetime = Datetime(date_number);
|
|
46
|
+
ar& BOOST_SERIALIZATION_NVP(value);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
BOOST_SERIALIZATION_SPLIT_MEMBER()
|
|
50
|
+
#endif
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
typedef vector<LoanRecord> LoanRecordList;
|
|
54
|
+
|
|
55
|
+
HKU_API std::ostream& operator<<(std::ostream&, const LoanRecord&);
|
|
56
|
+
|
|
57
|
+
} /* namespace hku */
|
|
58
|
+
|
|
59
|
+
#if FMT_VERSION >= 90000
|
|
60
|
+
template <>
|
|
61
|
+
struct fmt::formatter<hku::LoanRecord> : ostream_formatter {};
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
#endif /* LOANRECORD_H_ */
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* OrderBrokerBase.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2017年6月28日
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef TRADE_MANAGE_ORDERBROKERBASE_H_
|
|
10
|
+
#define TRADE_MANAGE_ORDERBROKERBASE_H_
|
|
11
|
+
|
|
12
|
+
#include "../DataType.h"
|
|
13
|
+
#include "../utilities/Parameter.h"
|
|
14
|
+
#include "../trade_sys/system/SystemPart.h"
|
|
15
|
+
|
|
16
|
+
namespace hku {
|
|
17
|
+
|
|
18
|
+
struct HKU_API BrokerPositionRecord {
|
|
19
|
+
Stock stock;
|
|
20
|
+
price_t number{0.0}; // 数量
|
|
21
|
+
price_t money{0.0}; // 买入花费总资金
|
|
22
|
+
|
|
23
|
+
BrokerPositionRecord() = default;
|
|
24
|
+
BrokerPositionRecord(const Stock& stock, price_t number, price_t money);
|
|
25
|
+
BrokerPositionRecord(const BrokerPositionRecord&) = default;
|
|
26
|
+
BrokerPositionRecord(BrokerPositionRecord&& rv);
|
|
27
|
+
|
|
28
|
+
BrokerPositionRecord& operator=(const BrokerPositionRecord&) = default;
|
|
29
|
+
BrokerPositionRecord& operator=(BrokerPositionRecord&& rv);
|
|
30
|
+
|
|
31
|
+
string str() const;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
HKU_API std::ostream& operator<<(std::ostream& os, const BrokerPositionRecord&);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 订单代理基类,实现实际的订单操作及程序化的订单。
|
|
38
|
+
* @details 可通过向 TradeManager.regBroker 向 TradeManager 注册多个订单代理实例。
|
|
39
|
+
* 这些订单代理可执行额外的买入/卖出动作,如邮件订单代理,在 TradeManager 发出
|
|
40
|
+
* 买入/卖出指令时, 邮件订单代理可以发送邮件。
|
|
41
|
+
*
|
|
42
|
+
* 默认情况下,TradeManager会在执行买入/卖出操作时,调用订单代理执行代理的买入/卖出动作,
|
|
43
|
+
* 但这样在实盘操作时会存在问题。因为系统在计算信号指示时,需要回溯历史数据才能得到最新的信号,
|
|
44
|
+
* 这样TradeManager会在历史时刻就执行买入/卖出操作。此时如果订单代理本身没有对发出
|
|
45
|
+
* 买入/卖出指令的时刻进行控制,会导致代理发送错误的指令 。因此,需要指定在某一个时刻之后,
|
|
46
|
+
* 才允许执行订单代理的买入/卖出操作。TradeManager的属性 brokeLastDatetime 即用于
|
|
47
|
+
* 指定该时刻。
|
|
48
|
+
* @ingroup OrderBroker
|
|
49
|
+
*/
|
|
50
|
+
class HKU_API OrderBrokerBase {
|
|
51
|
+
PARAMETER_SUPPORT
|
|
52
|
+
|
|
53
|
+
public:
|
|
54
|
+
OrderBrokerBase();
|
|
55
|
+
OrderBrokerBase(const string& name);
|
|
56
|
+
virtual ~OrderBrokerBase();
|
|
57
|
+
|
|
58
|
+
/** 获取名称 */
|
|
59
|
+
const string& name() const;
|
|
60
|
+
|
|
61
|
+
/** 设置名称 */
|
|
62
|
+
void name(const string& name);
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 执行买入操作
|
|
66
|
+
* @param datetime 策略指示时间
|
|
67
|
+
* @param market 市场标识
|
|
68
|
+
* @param code 证券代码
|
|
69
|
+
* @param price 买入价格
|
|
70
|
+
* @param num 买入数量
|
|
71
|
+
* @param stoploss 预期的止损价
|
|
72
|
+
* @param goalPrice 预期的目标价位
|
|
73
|
+
* @param from 系统部件来源
|
|
74
|
+
*/
|
|
75
|
+
void buy(Datetime datetime, const string& market, const string& code, price_t price, double num,
|
|
76
|
+
price_t stoploss, price_t goalPrice, SystemPart from) noexcept;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 执行卖出操作
|
|
80
|
+
* @param datetime 策略指示时间
|
|
81
|
+
* @param market 市场标识
|
|
82
|
+
* @param code 证券代码
|
|
83
|
+
* @param price 卖出价格
|
|
84
|
+
* @param num 卖出数量
|
|
85
|
+
* @param stoploss 新的预期止损价
|
|
86
|
+
* @param goalPrice 新的预期目标价位
|
|
87
|
+
* @param from 系统部件来源
|
|
88
|
+
*/
|
|
89
|
+
void sell(Datetime datetime, const string& market, const string& code, price_t price,
|
|
90
|
+
double num, price_t stoploss, price_t goalPrice, SystemPart from) noexcept;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* 获取当前资产信息
|
|
94
|
+
* @return string json字符串
|
|
95
|
+
* <pre>
|
|
96
|
+
* 接口规范:
|
|
97
|
+
* {
|
|
98
|
+
* "datetime": "2001-01-01 18:00:00.12345",
|
|
99
|
+
* "cash": 0.0,
|
|
100
|
+
* "positions": [
|
|
101
|
+
* {"market": "SZ", "code": "000001", "number": 100.0, "stoploss": 0.0, "goal_price": 0.0,
|
|
102
|
+
* "cost_price": 0.0},
|
|
103
|
+
* {"market": "SH", "code": "600001", "number": 100.0, "stoploss": 0.0, "goal_price": 0.0,
|
|
104
|
+
* "cost_price": 0.0},
|
|
105
|
+
* ]
|
|
106
|
+
* }
|
|
107
|
+
*
|
|
108
|
+
* 说明:
|
|
109
|
+
* cash: 当前可用资金
|
|
110
|
+
* number 应该为:现有持仓 + 正在买入 - 正在卖出
|
|
111
|
+
* cost_price: 每股买入成本价
|
|
112
|
+
* </pre>
|
|
113
|
+
*/
|
|
114
|
+
string getAssetInfo() noexcept;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* 子类实现接口,执行实际买入操作
|
|
118
|
+
* @param datetime 策略指示时间
|
|
119
|
+
* @param market 市场标识
|
|
120
|
+
* @param code 证券代码
|
|
121
|
+
* @param price 买入价格
|
|
122
|
+
* @param num 买入数量
|
|
123
|
+
* @param stoploss 预期的止损价
|
|
124
|
+
* @param goalPrice 预期的目标价位
|
|
125
|
+
* @param from 系统部件来源
|
|
126
|
+
*/
|
|
127
|
+
virtual void _buy(Datetime datetime, const string& market, const string& code, price_t price,
|
|
128
|
+
double num, price_t stoploss, price_t goalPrice, SystemPart from) = 0;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 子类实现接口,执行实际卖出操作
|
|
132
|
+
* @param datetime 策略指示时间
|
|
133
|
+
* @param market 市场标识
|
|
134
|
+
* @param code 证券代码
|
|
135
|
+
* @param price 卖出价格
|
|
136
|
+
* @param num 卖出数量
|
|
137
|
+
* @param stoploss 新预期的止损价
|
|
138
|
+
* @param goalPrice 新预期的目标价位
|
|
139
|
+
* @param from 系统部件来源
|
|
140
|
+
*/
|
|
141
|
+
virtual void _sell(Datetime datetime, const string& market, const string& code, price_t price,
|
|
142
|
+
double num, price_t stoploss, price_t goalPrice, SystemPart from) = 0;
|
|
143
|
+
|
|
144
|
+
virtual string _getAssetInfo() {
|
|
145
|
+
return string();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
protected:
|
|
149
|
+
string m_name;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 客户程序应使用此类型进行实际操作
|
|
154
|
+
* @ingroup OrderBroker
|
|
155
|
+
*/
|
|
156
|
+
typedef shared_ptr<OrderBrokerBase> OrderBrokerPtr;
|
|
157
|
+
|
|
158
|
+
/** @ingroup OrderBroker */
|
|
159
|
+
HKU_API std::ostream& operator<<(std::ostream& os, const OrderBrokerBase&);
|
|
160
|
+
|
|
161
|
+
/** @ingroup OrderBroker */
|
|
162
|
+
HKU_API std::ostream& operator<<(std::ostream& os, const OrderBrokerPtr&);
|
|
163
|
+
|
|
164
|
+
inline const string& OrderBrokerBase::name() const {
|
|
165
|
+
return m_name;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
inline void OrderBrokerBase::name(const string& name) {
|
|
169
|
+
m_name = name;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
} /* namespace hku */
|
|
173
|
+
|
|
174
|
+
#if FMT_VERSION >= 90000
|
|
175
|
+
template <>
|
|
176
|
+
struct fmt::formatter<hku::OrderBrokerBase> : ostream_formatter {};
|
|
177
|
+
|
|
178
|
+
template <>
|
|
179
|
+
struct fmt::formatter<hku::OrderBrokerPtr> : ostream_formatter {};
|
|
180
|
+
#endif
|
|
181
|
+
|
|
182
|
+
#endif /* TRADE_MANAGE_ORDERBROKERBASE_H_ */
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Performance.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2013-4-23
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef PERFORMANCE_H_
|
|
10
|
+
#define PERFORMANCE_H_
|
|
11
|
+
|
|
12
|
+
#include <boost/function.hpp>
|
|
13
|
+
#include "TradeManager.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 简单绩效统计
|
|
19
|
+
* @ingroup Performance
|
|
20
|
+
*/
|
|
21
|
+
class HKU_API Performance {
|
|
22
|
+
public:
|
|
23
|
+
Performance();
|
|
24
|
+
virtual ~Performance();
|
|
25
|
+
|
|
26
|
+
Performance(const Performance& other) : m_result(other.m_result) {}
|
|
27
|
+
Performance(Performance&& other) : m_result(std::move(other.m_result)) {}
|
|
28
|
+
|
|
29
|
+
Performance& operator=(const Performance& other);
|
|
30
|
+
Performance& operator=(Performance&& other);
|
|
31
|
+
|
|
32
|
+
/** 是否为合法的统计项 */
|
|
33
|
+
static bool exist(const string& key);
|
|
34
|
+
|
|
35
|
+
/** 复位,清除已计算的结果 */
|
|
36
|
+
void reset();
|
|
37
|
+
|
|
38
|
+
/** 按指标名称获取指标值,必须在运行 statistics 或 report 之后生效 */
|
|
39
|
+
double get(const string& name) const;
|
|
40
|
+
|
|
41
|
+
/** 同 get */
|
|
42
|
+
double operator[](const string& name) const {
|
|
43
|
+
return get(name);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* 简单的文本统计报告,用于直接输出打印
|
|
48
|
+
* @param tm
|
|
49
|
+
* @param datetime 指定的截止时刻
|
|
50
|
+
* @return
|
|
51
|
+
*/
|
|
52
|
+
string report(const TradeManagerPtr& tm, const Datetime& datetime = Datetime::now());
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 根据交易记录,统计截至某一时刻的系统绩效, datetime必须大于等于lastDatetime,
|
|
56
|
+
* 以便用于计算当前市值
|
|
57
|
+
* @param tm 指定的交易管理实例
|
|
58
|
+
* @param datetime 统计截止时刻
|
|
59
|
+
*/
|
|
60
|
+
void statistics(const TradeManagerPtr& tm, const Datetime& datetime = Datetime::now());
|
|
61
|
+
|
|
62
|
+
/** 获取所有统计项名称,顺序与 values 相同 */
|
|
63
|
+
const StringList& names() const {
|
|
64
|
+
return ms_keys;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** 获取所有统计项值,顺序与 names 相同*/
|
|
68
|
+
PriceList values() const;
|
|
69
|
+
|
|
70
|
+
typedef std::map<string, double> map_type;
|
|
71
|
+
typedef map_type::iterator iterator;
|
|
72
|
+
typedef map_type::const_iterator const_iterator;
|
|
73
|
+
|
|
74
|
+
private:
|
|
75
|
+
map_type m_result;
|
|
76
|
+
static StringList ms_keys; // 保存统计项顺序, map/unordered_map都不能保持按插入顺序遍历
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
} /* namespace hku */
|
|
80
|
+
#endif /* PERFORMANCE_H_ */
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* PositionRecord.h
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2013-2-21
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef POSITIONRECORD_H_
|
|
10
|
+
#define POSITIONRECORD_H_
|
|
11
|
+
|
|
12
|
+
#include "../StockManager.h"
|
|
13
|
+
#include "../serialization/Stock_serialization.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 持仓记录
|
|
19
|
+
* @ingroup TradeManagerClass
|
|
20
|
+
*/
|
|
21
|
+
class HKU_API PositionRecord {
|
|
22
|
+
public:
|
|
23
|
+
PositionRecord();
|
|
24
|
+
PositionRecord(const Stock& stock, const Datetime& takeDatetime, const Datetime& cleanDatetime,
|
|
25
|
+
double number, price_t stoploss, price_t goalPrice, double totalNumber,
|
|
26
|
+
price_t buyMoney, price_t totalCost, price_t totalRisk, price_t sellMoney);
|
|
27
|
+
|
|
28
|
+
/** 仅用于python的__str__ */
|
|
29
|
+
string str() const;
|
|
30
|
+
|
|
31
|
+
Stock stock; ///< 交易对象
|
|
32
|
+
Datetime takeDatetime; ///< 初次建仓日期
|
|
33
|
+
Datetime cleanDatetime; ///< 平仓日期,当前持仓记录中为Null<Datetime>()
|
|
34
|
+
double number{0.0}; ///< 当前持仓数量
|
|
35
|
+
price_t stoploss{0.0}; ///< 当前止损价
|
|
36
|
+
price_t goalPrice{0.0}; ///< 当前的目标价格
|
|
37
|
+
double totalNumber{0.0}; ///< 累计持仓数量
|
|
38
|
+
price_t buyMoney{0.0}; ///< 累计买入资金
|
|
39
|
+
price_t totalCost{0.0}; ///< 累计交易总成本
|
|
40
|
+
price_t totalRisk{0.0}; ///< 累计交易风险 = 各次 (买入价格-止损)*买入数量, 不包含交易成本
|
|
41
|
+
price_t sellMoney{0.0}; ///< 累计卖出资金
|
|
42
|
+
|
|
43
|
+
//===================
|
|
44
|
+
// 序列化支持
|
|
45
|
+
//===================
|
|
46
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
47
|
+
private:
|
|
48
|
+
friend class boost::serialization::access;
|
|
49
|
+
template <class Archive>
|
|
50
|
+
void save(Archive& ar, const unsigned int version) const {
|
|
51
|
+
namespace bs = boost::serialization;
|
|
52
|
+
ar& BOOST_SERIALIZATION_NVP(stock);
|
|
53
|
+
uint64_t take = takeDatetime.number();
|
|
54
|
+
uint64_t clean = cleanDatetime.number();
|
|
55
|
+
ar& bs::make_nvp("takeDatetime", take);
|
|
56
|
+
ar& bs::make_nvp("cleanDatetime", clean);
|
|
57
|
+
ar& BOOST_SERIALIZATION_NVP(number);
|
|
58
|
+
ar& BOOST_SERIALIZATION_NVP(stoploss);
|
|
59
|
+
ar& BOOST_SERIALIZATION_NVP(goalPrice);
|
|
60
|
+
ar& BOOST_SERIALIZATION_NVP(totalNumber);
|
|
61
|
+
ar& BOOST_SERIALIZATION_NVP(buyMoney);
|
|
62
|
+
ar& BOOST_SERIALIZATION_NVP(totalCost);
|
|
63
|
+
ar& BOOST_SERIALIZATION_NVP(totalRisk);
|
|
64
|
+
ar& BOOST_SERIALIZATION_NVP(sellMoney);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
template <class Archive>
|
|
68
|
+
void load(Archive& ar, const unsigned int version) {
|
|
69
|
+
namespace bs = boost::serialization;
|
|
70
|
+
ar& BOOST_SERIALIZATION_NVP(stock);
|
|
71
|
+
uint64_t take, clean;
|
|
72
|
+
ar& bs::make_nvp("takeDatetime", take);
|
|
73
|
+
ar& bs::make_nvp("cleanDatetime", clean);
|
|
74
|
+
takeDatetime = Datetime(take);
|
|
75
|
+
cleanDatetime = Datetime(clean);
|
|
76
|
+
ar& BOOST_SERIALIZATION_NVP(number);
|
|
77
|
+
ar& BOOST_SERIALIZATION_NVP(stoploss);
|
|
78
|
+
ar& BOOST_SERIALIZATION_NVP(goalPrice);
|
|
79
|
+
ar& BOOST_SERIALIZATION_NVP(totalNumber);
|
|
80
|
+
ar& BOOST_SERIALIZATION_NVP(buyMoney);
|
|
81
|
+
ar& BOOST_SERIALIZATION_NVP(totalCost);
|
|
82
|
+
ar& BOOST_SERIALIZATION_NVP(totalRisk);
|
|
83
|
+
ar& BOOST_SERIALIZATION_NVP(sellMoney);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
BOOST_SERIALIZATION_SPLIT_MEMBER()
|
|
87
|
+
#endif /* HKU_SUPPORT_SERIALIZATION */
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/** @ingroup TradeManagerClass */
|
|
91
|
+
typedef vector<PositionRecord> PositionRecordList;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* 输出持仓记录信息
|
|
95
|
+
* @ingroup TradeManagerClass
|
|
96
|
+
*/
|
|
97
|
+
HKU_API std::ostream& operator<<(std::ostream&, const PositionRecord&);
|
|
98
|
+
|
|
99
|
+
bool HKU_API operator==(const PositionRecord& d1, const PositionRecord& d2);
|
|
100
|
+
|
|
101
|
+
} /* namespace hku */
|
|
102
|
+
|
|
103
|
+
#if FMT_VERSION >= 90000
|
|
104
|
+
template <>
|
|
105
|
+
struct fmt::formatter<hku::PositionRecord> : ostream_formatter {};
|
|
106
|
+
#endif
|
|
107
|
+
|
|
108
|
+
#endif /* POSITIONRECORD_H_ */
|