hikyuu2/hikyuu/hku_config.py

203 lines
6.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python
# -*- coding: utf8 -*-
# cp936
#===============================================================================
# 作者fasiondog
# 历史120100220, 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
;
;shsz分别指定上证
[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线导入的目标文件
;allK线导入
;all选择为trueK线数据使
;all默认为falseA股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))