예제 #1
0
    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)
예제 #2
0
#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) + ' - ' +
예제 #3
0
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):