def test_local_data(self): old_source = locd.source if old_source == 'sqlite': return logger.info('***** 数据测试开始 *****') set_config({ 'source': 'csv' }) target = locd.get_data('BB.TEST-1.Minute') fname = os.path.join(os.getcwd(), 'data', '1MINUTE', 'TEST', 'CC.csv') source = pd.read_csv(fname, parse_dates='datetime', index_col='datetime') self.assertFalse(source.equals(target), '本地数据接口负测试失败!') fname = os.path.join(os.getcwd(), 'data', '1MINUTE', 'TEST', 'BB.csv') source = pd.read_csv(fname, parse_dates='datetime', index_col='datetime') self.assertTrue(source.equals(target), '本地数据接口正测试失败!') logger.info('-- 本地数据接口测试成功 --') logger.info('***** 数据测试结束 *****\n') set_config({ 'source': old_source })
from quantdigger import locd, set_config from quantdigger.datasource import import_data def import_contracts(): """ 从文件导入合约到数据库""" df = pd.read_csv('./work/contracts.txt') df['key'] = df['code'] + '.' + df['exchange'] return df print("import contracts info..") contracts = import_contracts() set_config({'source': 'csv'}) locd.import_contracts(contracts) print("import bars..") fpaths = [] for path, dirs, files in os.walk('./work'): for file in files: filepath = path + os.sep + file if filepath.endswith(".csv") or filepath.endswith(".CSV"): fpaths.append(filepath) import_data(fpaths, locd) set_config({'source': 'sqlite'}) locd.import_contracts(contracts) print("import bars..") fpaths = []
1] > ctx.ma100[1]: ctx.buy(ctx.close, 1) elif ctx.pos() > 0 and ctx.ma50[2] > ctx.ma100[2] and \ ctx.ma50[1] < ctx.ma100[1]: ctx.sell(ctx.close, ctx.pos()) return def on_exit(self, ctx): return if __name__ == '__main__': import timeit start = timeit.default_timer() set_config({'source': 'csv'}) set_symbols(['BB.SHFE-1.Day']) profile = add_strategy( [DemoStrategy('A1'), DemoStrategy2('A2')], { 'capital': 50000.0, 'ratio': [0.5, 0.5] }) run() stop = timeit.default_timer() print("运行耗时: %d秒" % ((stop - start))) # 绘制k线,交易信号线 from quantdigger.digger import finance, plotting s = 0 # 绘制策略A1, 策略A2, 组合的资金曲线 curve0 = finance.create_equity_curve(profile.all_holdings(0))
# 无日期指定的期货合约 code = row['code'][0:-4] if code not in codes: t = (code+'.'+row['exchangeId'], code, row['exchangeId'], code, code, row['long_margin_ratio'], row['short_margin_ratio'], row['price_tick'], row['volume_multiple']) contracts.append(t) codes.add(code) contracts = zip(*contracts) rst = { 'key': contracts[0], 'code': contracts[1], 'exchange': contracts[2], 'name': contracts[3], 'spell': contracts[4], 'long_margin_ratio': contracts[5], 'short_margin_ratio': contracts[6], 'price_tick': contracts[7], 'volume_multiple': contracts[8], } return rst print("import contracts..") contracts = import_contracts() set_config({ 'data_path': '../data', 'source': 'csv' }) locd.import_contracts(contracts) contracts = import_contracts(True) set_config({ 'data_path': '../data', 'source': 'sqlite' }) locd.import_contracts(contracts)
# -*- coding: utf-8 -*- from quantdigger import locd, set_config from quantdigger.datasource import import_tdx_stock set_config({'data_path': '../data'}) import_tdx_stock('../stock', locd)
if ctx.pos() == 0 and ctx.ma50[2] < ctx.ma100[2] and ctx.ma50[1] > ctx.ma100[1]: ctx.buy(ctx.close, 1) elif ctx.pos() > 0 and ctx.ma50[2] > ctx.ma100[2] and \ ctx.ma50[1] < ctx.ma100[1]: ctx.sell(ctx.close, ctx.pos()) return def on_exit(self, ctx): return if __name__ == '__main__': import timeit start = timeit.default_timer() set_config({'source': 'csv'}) set_symbols(['BB.SHFE-1.Day']) profile = add_strategy([DemoStrategy('A1'), DemoStrategy2('A2')], {'capital': 50000.0, 'ratio': [0.5, 0.5]}) run() stop = timeit.default_timer() print("运行耗时: %d秒" % ((stop - start))) # 绘制k线,交易信号线 from quantdigger.digger import finance, plotting s = 0 # 绘制策略A1, 策略A2, 组合的资金曲线 curve0 = finance.create_equity_curve(profile.all_holdings(0)) curve1 = finance.create_equity_curve(profile.all_holdings(1)) curve = finance.create_equity_curve(profile.all_holdings()) plotting.plot_strategy(profile.data(), profile.technicals(0),
# -*- coding: utf-8 -*- from quantdigger import locd, set_config from quantdigger.datasource import import_tdx_stock set_config({ 'data_path': '../data' }) import_tdx_stock('../stock', locd)