-
Notifications
You must be signed in to change notification settings - Fork 556
/
hku_config.py
202 lines (167 loc) · 6.5 KB
/
hku_config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#!/usr/bin/python
# -*- coding: utf8 -*-
# cp936
#===============================================================================
# 作者:fasiondog
# 历史:1)20100220, Added by fasiondog
#===============================================================================
import os
import sys
import shutil
usr_dir = os.path.expanduser('~')
hku_dir = usr_dir + '/.hikyuu'
if not os.path.lexists(hku_dir):
os.mkdir(hku_dir)
def ask_question(question, default_anwser='N'):
flag = False
x = ''
while not flag:
x = input(question)
if x == '':
x = default_anwser
flag = True if (x=='' or x=='Y' or x=='y' or x=='N' or x=='n') else False
return False if (x=='' or x=='N' or x=='n') else True
data_config_file = hku_dir + '/data_dir.ini'
if os.path.exists(data_config_file):
os.remove(data_config_file);
default_dir = "c:\stock" if sys.platform == "win32" else usr_dir + "/stock"
data_directory = input("\n请输入股票数据存放路径(默认" + default_dir + "):")
if data_directory == '':
data_directory = default_dir
with open(data_config_file, 'w', encoding = 'utf-8') as conf:
conf.writelines(['[data_dir]\n', 'data_dir=' + data_directory])
import_config = """
;db - 指定基础信息数据库
;sql - 当指定的基础信息数据库不存在时,使用该指定的脚本创建数据库
[database]
db = {dir}/stock.db
sql = {dir}/createdb.sql
; ☆☆☆ 注:权息信息目前指支持钱龙数据格式
;sh、sz分别指定上证、深圳的权息数据所在目录
[weight]
sh = {dir}/weight/shase/weight
sz = {dir}/weight/sznse/weight
;sh = D:\LON\QLDATA\history\SHASE\weight
;sz = D:\LON\QLDATA\history\SZNSE\weight
;指定K线数据源,格式为 “类型, 根目录”(类型仅能为 dzh 或 tdx,即大智慧、通达信)
;可多个数据源同时导入,防止信息遗漏
[from]
1 = tdx, {tdx}
;2 = dzh, d:\DZH5
;指定K线导入的目标文件
;选项“all”代表不管基础信息库中是否存在该股票,都将其K线导入
;如果选择all选择为true,将会导入很多不需要的K线数据,一般仅用于备份数据或将来使用
;all默认为false,如目前数据库仅配置导入A股、B股、基金,而不导入国债
[dest]
;all = True
sh_day = {dir}/sh_day.h5
sz_day = {dir}/sz_day.h5
sh_5min = {dir}/sh_5min.h5
sz_5min = {dir}/sz_5min.h5
sh_1min = {dir}/sh_1min.h5
sz_1min = {dir}/sz_1min.h5
"""
hikyuu_config = """
[hikyuu]
tmpdir = {dir}/tmp
logger = {dir}/logger.properties
[block]
type = qianlong
dir = {dir}/block
指数板块 = zsbk.ini
行业板块 = hybk.ini
地域板块 = dybk.ini
概念板块 = gnbk.ini
self = self.ini
[preload]
day = 1
week = 0
month = 0
quarter = 0
halfyear = 0
year = 0
[baseinfo]
type = sqlite3
db = {dir}/stock.db
[kdata]
;type = tdx
;dir = D:\\TdxW_HuaTai\\vipdoc
type = hdf5
sh_day = {dir}/sh_day.h5
sh_min = {dir}/sh_1min.h5
sh_min5 = {dir}/sh_5min.h5
sz_day = {dir}/sz_day.h5
sz_min = {dir}/sz_1min.h5
sz_min5 = {dir}/sz_5min.h5
"""
tdx_default_dir = "c:\TdxW_HuaTai" if sys.platform == "win32" else usr_dir + "/.wine/driver/c/Tdx_HuaTai"
tdx_input_str = "请输入通达信安装路径(默认从" + tdx_default_dir + "):"
if not os.path.lexists(data_directory):
shutil.copytree('config', data_directory)
os.remove(data_directory + '/__init__.py')
if sys.platform == 'win32':
filename = data_directory + '/hikyuu_win.ini'
else:
filename = data_directory + '/hikyuu_linux.ini'
with open(filename, 'w', encoding = 'utf-8') as f:
f.write(hikyuu_config.format(dir=data_directory))
tdx_dir = input(tdx_input_str)
if tdx_dir == '':
tdx_dir = tdx_default_dir
with open(data_directory + '/importdata.ini', 'w', encoding = 'utf-8') as f:
f.write(import_config.format(dir=data_directory, tdx=tdx_dir))
os.mkdir(data_directory + '/tmp')
else:
if os.path.lexists(data_directory + '/block'):
pass
x = ask_question("block目录已存在是否覆盖?(Y/[N]):")
if x:
shutil.rmtree(data_directory + '/block')
shutil.copytree('config/block', data_directory + '/block')
os.remove(data_directory + '/block/__init__.py')
else:
shutil.copytree('config/block', data_directory + '/block')
os.remove(data_directory + '/block/__init__.py')
if os.path.exists(data_directory + '/logger.properties'):
pass
x = ask_question("logger.properties文件已存在是否覆盖?(Y/[N]):")
if x:
os.remove(data_directory + '/logger.properties')
shutil.copy('config/logger.properties', data_directory + '/logger.properties')
else:
shutil.copy('config/logger.properties', data_directory + '/logger.properties')
if os.path.exists(data_directory + '/importdata.ini'):
x = ask_question("importdata.ini文件已存在是否覆盖?(Y/[N]):")
if x:
os.remove(data_directory + '/importdata.ini')
tdx_dir = input(tdx_input_str)
if tdx_dir == '':
tdx_dir = tdx_default_dir
with open(data_directory + '/importdata.ini', 'w', encoding = 'utf-8') as f:
f.write(import_config.format(dir=data_directory, tdx=tdx_dir))
else:
tdx_dir = input(tdx_input_str)
if tdx_dir == '':
tdx_dir = tdx_default_dir
with open(data_directory + '/importdata.ini', 'w', encoding = 'utf-8') as f:
f.write(import_config.format(dir=data_directory, tdx=tdx_dir))
if os.path.exists(data_directory + '/createdb.sql'):
os.remove(data_directory + '/createdb.sql')
shutil.copy('config/createdb.sql', data_directory + '/createdb.sql')
if sys.platform == 'win32':
hikyuu_ini = '/hikyuu_win.ini'
else:
hikyuu_ini = '/hikyuu_linux.ini'
filename = data_directory + hikyuu_ini
if os.path.exists(data_directory + hikyuu_ini):
x = ask_question(hikyuu_ini[1:] + "文件已存在是否覆盖?(Y/[N]):")
if x:
os.remove(filename)
with open(data_directory + hikyuu_ini, 'w', encoding = 'utf-8') as f:
f.write(hikyuu_config.format(dir=data_directory))
else:
with open(data_directory + hikyuu_ini, 'w', encoding = 'utf-8') as f:
f.write(hikyuu_config.format(dir=data_directory))
if not os.path.lexists(data_directory + '/tmp'):
os.mkdir(data_directory + '/tmp')
#print(import_config.format(dir=data_directory))