def __init__(self, user_name = '', password = '', core = 'local', type = 'HistoryTrading', initial_time='2018-01-01', end_date = datetime.datetime.today(), initial_money=100000): ''' 测试引擎总接口,包括本地测试内核和海知平台测试内核。 接口中需要根据不同的引擎内核进行相应的操作分流 注: 海知平台内核只提供交易必须的接口,回测模块本身不设置开始和结束时间,启动资金默认为1000000 :param core:回测引擎内核,可以选择本地内核或者海知平台回测内核 :param type: 实盘测试或者是历史回测(仅海知平台内核支持历史回测) ''' #用户名和用户登录密码初始化 if user_name and password: self._user_name = user_name self._password = password else: raise (ValueError,'请输入用户名和密码!') # 初始化各个模块 self._StateModule = StateModule.StateModule(initial_time=initial_time, initial_money=initial_money) self._DataModule = DataModule.DataModule(self._StateModule) #初始化回测引擎核心组件 if core == 'local': # 初始化结束日期 if isinstance(end_date, str): self._end_date = datetime.datetime.strptime(end_date, '%Y-%m-%d') elif isinstance(end_date, datetime.datetime): self._end_date = end_date self._TradeModule = TradeModule(self._StateModule,self._DataModule) self._core = LocalEngine(StateModule = self._StateModule, DataModule = self._DataModule, TradeModule = self._TradeModule) elif core == 'HaiZhi': self._core = HaiZhiTestEngine(user_id = self._user_name, password= self._password,type = type) if type =='HistoryTrading': self._core.current_time = initial_time self._core.del_stratagy(user_name) self._core.create_stratagy(user_name) self._core.set_stratagy(user_name) #初始化结束日期 if isinstance(end_date,str): self._end_date = datetime.datetime.strptime(end_date,'%Y-%m-%d') elif isinstance(end_date,datetime.datetime): self._end_date = end_date elif type =='RealTimeTrading': initial_time = datetime.datetime.today().strftime('%Y-%m-%d') #初始化context self._context = Context(self._StateModule,self._DataModule)
#GetBackData.py #Modifled 2018/5/24 import sys sys.path.append('../module') import CryptWatchModule import DataModule import TimeModule DataDir = './tradedata' filename = 'Before_20180524_000000' CryWat = CryptWatchModule.CryptWatchModule() DataMod = DataModule.DataModule(str(DataDir) + '/' + str(filename)) end_time = TimeModule.GetUtime_j(2018, 5, 24, 0, 0, 0) start_time = end_time - 60 * 60 end_flag = False count = 0 while (not end_flag): ohlc_list = CryWat.GetOHLC(end_time, start_time, 60) ohlc_list.reverse() if (len(ohlc_list) != 0): if (count != 0): del ohlc_list[0] DataMod.AddOHLC(ohlc_list) print( TimeModule.GetTime_j(end_time) + ' - ' +
import datetime import time import CryptWatchModule import DataModule import TimeModule import GraphModule import TwitterModule #====Param==== DataDir = '../tradedata' PicDir = '../pic' dt_now = datetime.datetime.now() filename = str(dt_now.year) + str(dt_now.month).zfill(2) + str( dt_now.day).zfill(2) DataMod = DataModule.DataModule(DataDir, filename) DataDay = int(dt_now.day) DataMonth = dt_now.month CryWat = CryptWatchModule.CryptWatchModule() #sec alpha = 10 * 60 #min delta = 60 #resume_back[hour] resume_back = 4 #sleep min s_delta = 1 #======== #====Resume==== if (DataMod.Find_Flag):