hikyuu 2.1.4__cp38-none-win_amd64.whl → 2.1.5__cp38-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/cpp/core38.pyd CHANGED
Binary file
hikyuu/cpp/hikyuu.dll CHANGED
Binary file
hikyuu/cpp/sqlite3.dll CHANGED
Binary file
@@ -0,0 +1,5 @@
1
+ DELETE FROM `hku_base`.`stkweight`;
2
+ UPDATE `hku_base`.`coderuletype` SET `codepre`=51 WHERE `codepre`=510 AND `marketid`=1;
3
+ UPDATE `hku_base`.`coderuletype` SET `codepre`=50 WHERE `codepre`=500 AND `marketid`=1;
4
+ UPDATE `hku_base`.`coderuletype` SET `codepre`=20 WHERE `codepre`=200 AND `marketid`=2;
5
+ UPDATE `hku_base`.`version` set `version` = 22;
@@ -0,0 +1,7 @@
1
+ BEGIN TRANSACTION;
2
+ DELETE FROM `stkWeight`;
3
+ UPDATE `coderuletype` SET `codepre`=51 WHERE `codepre`=510 AND `marketid`=1;
4
+ UPDATE `coderuletype` SET `codepre`=50 WHERE `codepre`=500 AND `marketid`=1;
5
+ UPDATE `coderuletype` SET `codepre`=20 WHERE `codepre`=200 AND `marketid`=2;
6
+ UPDATE `version` set `version` = 23;
7
+ COMMIT;
@@ -73,7 +73,7 @@ def request_data(api, stklist, parse_one_result):
73
73
 
74
74
 
75
75
  @hku_catch(ret=([], []))
76
- def get_spot(stocklist, ip, port, batch_func=None):
76
+ def inner_get_spot(stocklist, ip, port, batch_func=None):
77
77
  api = TdxHq_API()
78
78
  hku_check(api.connect(ip, port), 'Failed connect tdx ({}:{})!'.format(ip, port))
79
79
 
@@ -107,7 +107,7 @@ def get_spot(stocklist, ip, port, batch_func=None):
107
107
 
108
108
 
109
109
  @spend_time
110
- def get_spot2(stocklist, ip, port, batch_func=None):
110
+ def get_spot(stocklist, ip, port, batch_func=None):
111
111
  hosts = search_best_tdx()
112
112
  hosts_cnt = len(hosts)
113
113
  num = len(stocklist) // hosts_cnt
@@ -123,7 +123,7 @@ def get_spot2(stocklist, ip, port, batch_func=None):
123
123
  break
124
124
 
125
125
  def do_inner(param):
126
- ret = get_spot(param[0], param[1], param[2], param[3])
126
+ ret = inner_get_spot(param[0], param[1], param[2], param[3])
127
127
  return ret
128
128
 
129
129
  with futures.ThreadPoolExecutor() as executor:
hikyuu/gui/start_qmt.py CHANGED
@@ -2,15 +2,15 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
 
5
- from hikyuu.fetcher.stock.zh_stock_a_qmt import parse_one_result_qmt
5
+ from hikyuu.fetcher.stock.zh_stock_a_qmt import parse_one_result_qmt, get_spot
6
6
  from hikyuu.gui.spot_server import release_nng_senders, start_send_spot, end_send_spot, send_spot
7
7
 
8
8
 
9
9
  def callback(datas):
10
10
  records = []
11
11
  for stock_code, data in datas.items():
12
- # print(stock_code, data)
13
12
  records.append(parse_one_result_qmt(stock_code, data))
13
+ # print(len(records))
14
14
 
15
15
  if records:
16
16
  start_send_spot()
@@ -19,18 +19,104 @@ def callback(datas):
19
19
 
20
20
 
21
21
  if __name__ == "__main__":
22
- from hikyuu.interactive import *
23
- from xtquant import xtdata
22
+ import os
23
+ import configparser
24
+
25
+ from hikyuu.data.hku_config_template import generate_default_config
26
+ from hikyuu import *
27
+
28
+ config_file = os.path.expanduser('~') + "/.hikyuu/hikyuu.ini"
29
+ if not os.path.exists(config_file):
30
+ # 创建默认配置
31
+ hku_info("创建默认配置文件")
32
+ generate_default_config()
33
+
34
+ ini = configparser.ConfigParser()
35
+ ini.read(config_file, encoding='utf-8')
36
+ hku_param = Parameter()
37
+ hku_param["tmpdir"] = ini.get('hikyuu', 'tmpdir')
38
+ hku_param["datadir"] = ini.get('hikyuu', 'datadir')
39
+ if ini.has_option('hikyuu', 'quotation_server'):
40
+ hku_param["quotation_server"] = ini['hikyuu']['quotation_server']
41
+
42
+ # 不加载历史财务信息及权息数据
43
+ hku_param["load_history_finance"] = False
44
+ hku_param["load_stock_weight"] = False
45
+
46
+ base_param = Parameter()
47
+ base_info_config = ini.options('baseinfo')
48
+ for p in base_info_config:
49
+ base_param[p] = ini.get('baseinfo', p)
50
+
51
+ block_param = Parameter()
52
+ block_config = ini.options('block')
53
+ for p in block_config:
54
+ block_param[p] = ini.get('block', p)
55
+
56
+ # 不使用配置文件中的预加载参数
57
+ preload_param = Parameter()
58
+ if p in Query.get_all_ktype():
59
+ preload_param[p] = False
24
60
 
25
- code_list = [f'{s.code}.{s.market}' for s in sm if s.valid]
26
- # code_list = ['000001.SZ']
61
+ kdata_param = Parameter()
62
+ kdata_config = ini.options('kdata')
63
+ for p in kdata_config:
64
+ if p == "convert":
65
+ kdata_param[p] = ini.getboolean('kdata', p)
66
+ continue
67
+ kdata_param[p] = ini.get('kdata', p)
27
68
 
69
+ context = StrategyContext(["all"])
70
+ context.ktype_list = ["day"]
71
+
72
+ sm.init(base_param, block_param, kdata_param, preload_param, hku_param, context)
73
+
74
+ # 后续希望每次先主动获取一次全部的tick, 这里需要等待所有数据加载完毕,以便保证全部证券收到第一次tick通知
75
+ hku_info("waiting all data loaded ...")
76
+ while not sm.data_ready:
77
+ import time
78
+ time.sleep(100)
79
+
80
+ stk_list = [s for s in sm if s.valid and s.type in (
81
+ constant.STOCKTYPE_A, constant.STOCKTYPE_INDEX, constant.STOCKTYPE_ETF,
82
+ constant.STOCKTYPE_GEM, constant.STOCKTYPE_START, constant.STOCKTYPE_A_BJ)]
83
+
84
+ hku_info("start xtquant")
85
+ code_list = [f'{s.code}.{s.market}' for s in stk_list]
86
+ from xtquant import xtdata
28
87
  xtdata.subscribe_whole_quote(code_list, callback)
29
88
 
30
- try:
31
- xtdata.run()
32
- except Exception as e:
33
- hku_error(e)
34
- finally:
35
- # 退出释放资源
36
- release_nng_senders()
89
+ # 每日 9:30 时,主动读取行情一次,以便 hikyuu 生成当日首个分钟线
90
+ while True:
91
+ try:
92
+ today = Datetime.today()
93
+ if today.day_of_week() not in (0, 6) and not sm.is_holiday(today):
94
+ hku_info("get full tick ...")
95
+ start_send_spot()
96
+ records = get_spot(stk_list, None, None, send_spot)
97
+ end_send_spot()
98
+ now = Datetime.now()
99
+ today_open = today + TimeDelta(0, 9, 30)
100
+ if now < today_open:
101
+ delta = today_open - Datetime.now()
102
+ else:
103
+ delta = today_open + Days(1) - Datetime.now()
104
+ hku_info(f"start timer: {delta}s")
105
+ time.sleep(delta.total_seconds())
106
+ except KeyboardInterrupt:
107
+ print("Ctrl-C 终止")
108
+ break
109
+ except Exception as e:
110
+ hku_error(e)
111
+ time.sleep(10)
112
+
113
+ release_nng_senders()
114
+
115
+ # try:
116
+ # xtdata.run()
117
+ # except Exception as e:
118
+ # hku_error(e)
119
+ # finally:
120
+ # # 退出释放资源
121
+ # release_nng_senders()
122
+ # exit(0)
@@ -27,13 +27,7 @@ namespace hku {
27
27
  * @param a 动态系数
28
28
  * @ingroup Indicator
29
29
  */
30
- Indicator DMA(const Indicator& ind1, const Indicator& a);
31
-
32
- inline Indicator DMA(const Indicator& ind1, const Indicator& a) {
33
- Indicator dma = a * ind1 + (1 - a) * REF(ind1, 1);
34
- dma.name("DMA");
35
- return dma;
36
- }
30
+ Indicator HKU_API DMA(const Indicator& x, const Indicator& a);
37
31
 
38
32
  } // namespace hku
39
33
 
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Copyright (c) 2024 hikyuu.org
3
+ *
4
+ * Created on: 2024-09-09
5
+ * Author: fasiondog
6
+ */
7
+
8
+ #pragma once
9
+
10
+ #include "../Indicator.h"
11
+
12
+ namespace hku {
13
+
14
+ /*
15
+ * 动态移动平均
16
+ * 用法:DMA(X,A),求X的动态移动平均。
17
+ * 算法:若Y=DMA(X,A) 则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值。
18
+ * 例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价
19
+ */
20
+ class IDma : public IndicatorImp {
21
+ public:
22
+ IDma();
23
+ explicit IDma(const Indicator& ref_a);
24
+ virtual ~IDma();
25
+
26
+ virtual void _checkParam(const string& name) const override;
27
+ virtual void _calculate(const Indicator& data) override;
28
+ virtual IndicatorImpPtr _clone() override;
29
+
30
+ private:
31
+ Indicator m_ref_a;
32
+
33
+ //============================================
34
+ // 序列化支持
35
+ //============================================
36
+ #if HKU_SUPPORT_SERIALIZATION
37
+ private:
38
+ friend class boost::serialization::access;
39
+ template <class Archive>
40
+ void serialize(Archive& ar, const unsigned int version) {
41
+ ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(IndicatorImp);
42
+ ar& BOOST_SERIALIZATION_NVP(m_ref_a);
43
+ }
44
+ #endif
45
+ };
46
+
47
+ }
@@ -12,13 +12,13 @@
12
12
  #define HKU_VERSION_H
13
13
 
14
14
  // clang-format off
15
- #define HKU_VERSION "2.1.4"
15
+ #define HKU_VERSION "2.1.5"
16
16
  #define HKU_VERSION_MAJOR 2
17
17
  #define HKU_VERSION_MINOR 1
18
- #define HKU_VERSION_ALTER 4
19
- #define HKU_VERSION_BUILD 202409041753
18
+ #define HKU_VERSION_ALTER 5
19
+ #define HKU_VERSION_BUILD 202409110742
20
20
  #define HKU_VERSION_MODE "RELEASE"
21
- #define HKU_VERSION_GIT "2.1.4 release.9013b86e (RELEASE)"
21
+ #define HKU_VERSION_GIT "2.1.5 release.6f6597d9 (RELEASE)"
22
22
  // clang-format on
23
23
 
24
24
  #endif /* HKU_VERSION_H */
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hikyuu
3
- Version: 2.1.4
3
+ Version: 2.1.5
4
4
  Summary: Hikyuu Quant Framework for System Trading Analysis and backtester
5
5
  Home-page: http://hikyuu.org/
6
6
  Author: fasiondog
@@ -23,8 +23,8 @@ hikyuu/cpp/boost_date_time-mt.dll,sha256=7LN0Yx0k8NmnMICaHiU5NDGtdUnxL8i3WH4CoM3
23
23
  hikyuu/cpp/boost_serialization-mt.dll,sha256=Cri8ElVb5vbEgeSPEBU9gIs_2d2sDEs8DFraTlNwE0I,218112
24
24
  hikyuu/cpp/boost_wserialization-mt.dll,sha256=AtPBMT3u3PhlvtgAf6YzWT_vLrOCPEI1MRwEmPKspS0,156672
25
25
  hikyuu/cpp/concrt140.dll,sha256=eCkQsj-KZexHf4hve8vcZxAzVK8mO9MMDcyrv7xQa6E,317320
26
- hikyuu/cpp/core38.pyd,sha256=vm3gXQI6ABm3sIiy4_4JXu29EjYYQuDJ4lzighXhSJQ,3406848
27
- hikyuu/cpp/hikyuu.dll,sha256=z7FSaBAvYruXQOJ3eadQb-SIpFq_sGL-cAOvwS7jqsA,6879744
26
+ hikyuu/cpp/core38.pyd,sha256=ILgpKfAuB7LejZuPeMwg2PNtwMlkUvSDyddbHjUjZ-s,3409408
27
+ hikyuu/cpp/hikyuu.dll,sha256=WHV8XpbFBSPFxoys215ATEDI0m-4gmZdgFHrYCaR17o,6902784
28
28
  hikyuu/cpp/hku_hdf5.dll,sha256=WhPTtLT9eAaOcLthBLArv_ps-A5xiTXrYAwXHsbKeDI,3434496
29
29
  hikyuu/cpp/hku_hdf5_cpp.dll,sha256=KL7R_MmydRnNi6X1vrkCOPJ6x027J8IEb6vCbTrV60E,301056
30
30
  hikyuu/cpp/hku_hdf5_hl.dll,sha256=bPgCUWb9eppYXjqL846IiLeWiB9QvRF_syGHTlqpImI,119808
@@ -37,7 +37,7 @@ hikyuu/cpp/msvcp140_1.dll,sha256=fVIjj_Wnr29KXiKbGnRlog_BfitAHaXakhWjBzvyOMI,255
37
37
  hikyuu/cpp/msvcp140_2.dll,sha256=7iKzQDJoy6w_KA8aSaf6KFwNAdpgH2kU1v5qrEMGjvo,187312
38
38
  hikyuu/cpp/msvcp140_atomic_wait.dll,sha256=qUuIolfmRRSn4Zu-xSI5Hyg4rJMH1ZetstPq-I-FTeM,57224
39
39
  hikyuu/cpp/msvcp140_codecvt_ids.dll,sha256=FPlDVH0f2xJQWe6537FGWXr5bKrD6pkCV4WV6bDHH7Q,21392
40
- hikyuu/cpp/sqlite3.dll,sha256=xtur6ZRK9ZI7u5xdUDAyRIT5vjeJyqSnGH5mPhMIJhg,1088512
40
+ hikyuu/cpp/sqlite3.dll,sha256=Iq2f3q2JynIh_Zo-_beStzaPorrLXtqNOMD9abPnV98,1088512
41
41
  hikyuu/cpp/vcruntime140.dll,sha256=1mw7Rwkc6z-NPMFlpD0oWukZIRoMD8t0SR7ldNjUZPg,98736
42
42
  hikyuu/cpp/vcruntime140_1.dll,sha256=F1gIWmFSe0J8Q4DwyXbSmovuiJ8qxIDDVqPxZkM79w4,38304
43
43
  hikyuu/data/__init__.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
@@ -83,6 +83,7 @@ hikyuu/data/mysql_upgrade/0018.sql,sha256=yF0pDriOb6ZEaNIWNe0dp4IsC2S1xQZaSJX9Wn
83
83
  hikyuu/data/mysql_upgrade/0019.sql,sha256=KBi-U4t_rLXav5D6lrLFFWsIkl5C-fbtvYrCT4Bk8-E,554
84
84
  hikyuu/data/mysql_upgrade/0020.sql,sha256=ZIK37BUA7toyexC9vk3bYwXrxu4Aml7FKVWrMiaP5a4,314
85
85
  hikyuu/data/mysql_upgrade/0021.sql,sha256=UEP9E3WmMtuAUpCTbnXL37JgXnD5mIMyuIb4rs6Qj7A,314
86
+ hikyuu/data/mysql_upgrade/0022.sql,sha256=WK_uJ68SjrN4Q4b2p8nfsBDO2jqL8EbmtHbvbhqxfr0,351
86
87
  hikyuu/data/mysql_upgrade/__init__.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
87
88
  hikyuu/data/mysql_upgrade/createdb.sql,sha256=IK-x2zK7ttd7cieZ27ZzUUsDAi_oYctZ4W-HAMHhUd8,8380
88
89
  hikyuu/data/sqlite_mem_sql/__init__.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
@@ -109,6 +110,7 @@ hikyuu/data/sqlite_upgrade/0019.sql,sha256=Ft22sQ__94T9cvZDiR1gqqRE5sTtix8rKCL8w
109
110
  hikyuu/data/sqlite_upgrade/0020.sql,sha256=zQTtVjb6x742w4fDcqqqLgfNQRh5qhyPFWjGE5OOIlk,143
110
111
  hikyuu/data/sqlite_upgrade/0021.sql,sha256=qUxJBE1PzmxQI61HB_pRGlPTI8wYb0Mn7JeMwToFYEs,299
111
112
  hikyuu/data/sqlite_upgrade/0022.sql,sha256=tkG3NaGYGuzHcMup7G8MolcvwCLA-8-1bTckiqUONQg,299
113
+ hikyuu/data/sqlite_upgrade/0023.sql,sha256=HsHGP2F2BP1_y-jcpKYXZWdwehu9SJq9G-Ni8NGxH2c,325
112
114
  hikyuu/data/sqlite_upgrade/__init__.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
113
115
  hikyuu/data/sqlite_upgrade/createdb.sql,sha256=XXlJ9E2JK7RpsAS-hJZG9gUhT09itZVC5FUhqqrJ3l4,5552
114
116
  hikyuu/data_driver/__init__.py,sha256=mc_vrQqcvM1k8v8yotk4oTcyjsIrBFY66PhIlN2ccD4,2315
@@ -156,7 +158,7 @@ hikyuu/fetcher/proxy/zhima.py,sha256=jag4Y1D2rj7UjqmQHeUgnnr-I_CqQKNYUOjBXTuUVW8
156
158
  hikyuu/fetcher/stock/__init__.py,sha256=iMNvK8LArpRoNU0w3ef7SKslAgjMnI83n8aO0bu9H5A,121
157
159
  hikyuu/fetcher/stock/zh_block_em.py,sha256=O98NeQzWpE5MC2oezBWvrEeNGRHxF2ZtT5q0BR8KLKA,4327
158
160
  hikyuu/fetcher/stock/zh_stock_a_huatai.py,sha256=Lg4Pp1kOxR-6niX27lwEBJu4oEltDSALzsgiYmEUm2Q,1991
159
- hikyuu/fetcher/stock/zh_stock_a_pytdx.py,sha256=l1o-G9EueDyzz8NkTfyyWydmZZBkGJYiQgMxGvbcbt4,5304
161
+ hikyuu/fetcher/stock/zh_stock_a_pytdx.py,sha256=JaPPsgD0IMdFeq0sVNODDCsR0d_3h1madgxdCKUDuHI,5315
160
162
  hikyuu/fetcher/stock/zh_stock_a_qmt.py,sha256=rAhBouwzoLNSBOQoU119fnIyVIGQLOkG0bJCl6SN9yo,2135
161
163
  hikyuu/fetcher/stock/zh_stock_a_sina_qq.py,sha256=qpvlNNrbHaQDHFGSZVXlLqvIcjd7HpLH04BEaKK9fyk,9341
162
164
  hikyuu/flat/Spot.py,sha256=dEzyxegOv_RRN0N0DH-xxeNMFOe66XBcORqYVFie5dU,13842
@@ -168,7 +170,7 @@ hikyuu/gui/hikyuu.ico,sha256=C3PmufT23qdCyE0FfIkofUIwT-zyhCgjwLH6HMclqPk,9662
168
170
  hikyuu/gui/importdata.py,sha256=ceNoyh0q4mYuaAuTpxakn8zJaOy0aalnB8-16zES0Ak,6073
169
171
  hikyuu/gui/spot_server.py,sha256=nEDnZyCc79d9hcDuNYQ532GPVwLNVX9W8FTizqdbP-M,12105
170
172
  hikyuu/gui/start_huatai_insight.py,sha256=AsP6UlLWErXHx8TnxS82uBIw6XXfSkItiVTzTrzwulQ,22833
171
- hikyuu/gui/start_qmt.py,sha256=_HeHnpTIBGcMq0UXhlr2sumz_rullC4PdurcJtpFO8k,925
173
+ hikyuu/gui/start_qmt.py,sha256=B8gfeD6UPJRt3kuWdMftO6M31aa5goqHUO_JENhcHqE,4147
172
174
  hikyuu/gui/data/CollectSpotThread.py,sha256=TpckaMvm58hnPOXjDdGa7WznaMfEpcNo9g9axGXOgLo,1758
173
175
  hikyuu/gui/data/CollectToMemThread.py,sha256=xgBn5Nno6oLCqlbie6wTtcyMPmMTRoclz2-E1UZGUcQ,5153
174
176
  hikyuu/gui/data/CollectToMySQLThread.py,sha256=Xmj5igTSw8R9ZfaVH87zXESeLJKxaw7SlZmXcTIGK-U,7387
@@ -211,7 +213,7 @@ hikyuu/include/hikyuu/config.h,sha256=coJ3wAfuxysJy-rqWJUBHFBsALuRhrwpcUkqb5JrYu
211
213
  hikyuu/include/hikyuu/debug.h,sha256=r54YJUkujUt5D9Xj11fpIw9c93kZsqU3ykljXBsqxo0,843
212
214
  hikyuu/include/hikyuu/doc.h,sha256=M5Va0lgJSlORIkMvUhmV480V0XcxwyyL3wu_fCMcVI4,6967
213
215
  hikyuu/include/hikyuu/hikyuu.h,sha256=D4n8yy8BLhRyceGCzAIbrTCoyvEOGa0NtygcQW6accI,1583
214
- hikyuu/include/hikyuu/version.h,sha256=Jr81jFoEInhKe34EHxIcy7ohL5n1qMbW00vWerHdFl0,508
216
+ hikyuu/include/hikyuu/version.h,sha256=p_0OEqZKzSRyhT3Am2XmHr9ppHIwgEezkbW1JgUuuhk,508
215
217
  hikyuu/include/hikyuu/analysis/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
216
218
  hikyuu/include/hikyuu/analysis/analysis_sys.h,sha256=gPnCrNP9Qt2g9JH04F9Y9Q1XzpwPtg4ibAvPJ9pIlbs,1709
217
219
  hikyuu/include/hikyuu/analysis/combinate.h,sha256=--OhYTVLQ8bUNgl47V0uNO0IjSULxu7bXhYWbjNY4Ig,4196
@@ -300,7 +302,7 @@ hikyuu/include/hikyuu/indicator/crt/CVAL.h,sha256=mT3hjr2EsVOoIVqQADaRazyTFHcvcW
300
302
  hikyuu/include/hikyuu/indicator/crt/DECLINE.h,sha256=EsebsSLBZekLATyhnWQwPvKuoLDvHgP_SS3LTkcVk4M,993
301
303
  hikyuu/include/hikyuu/indicator/crt/DEVSQ.h,sha256=q8MpjLJHTaFAQ76zpJbkuHYz_9b-emjdhINRA8Z-mPA,825
302
304
  hikyuu/include/hikyuu/indicator/crt/DIFF.h,sha256=IufKG5P1n1lv7lsm3-2iqAS3m_7WZLX-nAHZSk5O6f0,484
303
- hikyuu/include/hikyuu/indicator/crt/DMA.h,sha256=AEQ21bpxJoX_eU-XwzgjM4-2VZ63S9A448JmW_C3okg,886
305
+ hikyuu/include/hikyuu/indicator/crt/DMA.h,sha256=_EeQ8s9ZyS3GBB3Gn0ufvXcgCFrFD7w9sR_12jf2MlI,724
304
306
  hikyuu/include/hikyuu/indicator/crt/DOWNNDAY.h,sha256=jvhbgyQdeImKJdrUzKQ695qutJ2e9ENlxBON2Q12jPY,954
305
307
  hikyuu/include/hikyuu/indicator/crt/DROPNA.h,sha256=fe7k1hwTJ9SXuXBkvNDzyRBERUd5P2K0TfeAUfQvfks,516
306
308
  hikyuu/include/hikyuu/indicator/crt/EMA.h,sha256=rHnUqGMZjhkNM513SQc-dSjibRcEAe2TWFLQvgKt1rM,969
@@ -397,6 +399,7 @@ hikyuu/include/hikyuu/indicator/imp/ICval.h,sha256=JaHv8EoWgnCKr6yYZH_WIU2X0fnEd
397
399
  hikyuu/include/hikyuu/indicator/imp/IDecline.h,sha256=KVUQufD79Id7SHyTzeNzTvOo-B63RO2J6T6AR2-Zg2Y,566
398
400
  hikyuu/include/hikyuu/indicator/imp/IDevsq.h,sha256=kU3r3v9en06TsI-CxN0XKQIUS7z55_O21aLxlR7De_w,576
399
401
  hikyuu/include/hikyuu/indicator/imp/IDiff.h,sha256=zWS2DY3wcTapTusQEdxFSN-zAo3OLFlGCYYpiODQ7cg,446
402
+ hikyuu/include/hikyuu/indicator/imp/IDma.h,sha256=AnRw_hS7-Z8vQDsk-jgux-QVrnZ-_AKQqUPR0PaU7jg,1187
400
403
  hikyuu/include/hikyuu/indicator/imp/IDropna.h,sha256=6SO1lzfEdvG29L_OylD16_mlq9Ls2ybEYYoQfvaTv0c,493
401
404
  hikyuu/include/hikyuu/indicator/imp/IEma.h,sha256=mY3i3YfTUO_KmVegmU1ImJDmAfxb91XMLjrih7Fu9jY,572
402
405
  hikyuu/include/hikyuu/indicator/imp/IEvery.h,sha256=Usu4UuGXZIZAWNGVBbBlw0qNiwnji6mqQmF7Zerx8bA,646
@@ -785,9 +788,9 @@ hikyuu/util/notebook.py,sha256=zToRjn0gqrs11SC6CK3IvJUWcerBMID_byxSn255BWk,1159
785
788
  hikyuu/util/singleton.py,sha256=ADnNpIUK63Q7iqkVv9XVptAPHg3iPlPGv1eYCPXjn34,793
786
789
  hikyuu/util/slice.py,sha256=ZPvGFc7MO3USnAS4ADMnjJaPqTRFV0nXY_ssgfysxJ4,1759
787
790
  hikyuu/util/timeout.py,sha256=n1KdeXfXgh6fJKdrxmmL5PU6zIkeuVp1LKMwll8okDo,3031
788
- hikyuu-2.1.4.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
789
- hikyuu-2.1.4.dist-info/METADATA,sha256=rERGii6uTmWjf_5bt4QTfX1yy7QuanQk8bUNcCYFhJk,7760
790
- hikyuu-2.1.4.dist-info/WHEEL,sha256=mX3xZdJ00TXAWs7scdbAcxJ6dLW6xuvFxQI7UdfqmYc,99
791
- hikyuu-2.1.4.dist-info/entry_points.txt,sha256=YSbsDH-RPGc57mPTWqwHT9VO_3aaWtXSytQbVzJX2I0,97
792
- hikyuu-2.1.4.dist-info/top_level.txt,sha256=lRZUoOesNQRMIhUqwFzRZ-UnmwM6wQaMSjBRFuSbRDY,3862
793
- hikyuu-2.1.4.dist-info/RECORD,,
791
+ hikyuu-2.1.5.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
792
+ hikyuu-2.1.5.dist-info/METADATA,sha256=uTMAsRkdRyH5LL-K-e0CKu0au-cxiDlK1_JjEtr3DLw,7760
793
+ hikyuu-2.1.5.dist-info/WHEEL,sha256=mX3xZdJ00TXAWs7scdbAcxJ6dLW6xuvFxQI7UdfqmYc,99
794
+ hikyuu-2.1.5.dist-info/entry_points.txt,sha256=YSbsDH-RPGc57mPTWqwHT9VO_3aaWtXSytQbVzJX2I0,97
795
+ hikyuu-2.1.5.dist-info/top_level.txt,sha256=lRZUoOesNQRMIhUqwFzRZ-UnmwM6wQaMSjBRFuSbRDY,3862
796
+ hikyuu-2.1.5.dist-info/RECORD,,
File without changes