Example #1
0
def runServer():
    """运行服务器"""

    try:
        log_file_name = os.path.abspath(
            os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logs',
                         u'noUiMain.log'))
    except Exception as ex:
        print(u'Use local dict:{0}'.format(os.getcwd()))
        log_file_name = os.path.abspath(
            os.path.join(os.getcwd(), 'logs', u'noUiMain.log'))

    setup_logger(filename=log_file_name, debug=False)

    # Req/Publish端口
    try:
        zmqAddressDict = globalSetting['ZMQ']
        zmqAddress = zmqAddressDict[AUTO_CONNCET_GW]
        reqAddress = zmqAddress['ReqAddress']
        pubAddress = zmqAddress['PubAddress']
    except:
        reqAddress = 'tcp://*:2014'
        pubAddress = 'tcp://*:2016'

    # 创建并启动服务器
    server = VtServer(reqAddress, pubAddress)
    server.start()

    printLog('-' * 50)
    printLog(u'Request端口:{0}'.format(reqAddress))
    printLog(u'Publish端口:{0}'.format(pubAddress))
    printLog(u'Trader服务器已启动')
Example #2
0
    def createLogger(self, strategy_name=None):
        """
        创建日志记录
        :return:
        """
        currentFolder = os.path.abspath(os.path.join(os.getcwd(), 'logs'))
        if os.path.isdir(currentFolder):
            # 如果工作目录下,存在data子目录,就使用data子目录
            path = currentFolder
        else:
            # 否则,使用缺省保存目录 vnpy/trader/app/ctaStrategy/data
            path = os.path.abspath(
                os.path.join(os.path.dirname(__file__), '..', '..', 'logs'))

        if strategy_name is None:
            filename = os.path.abspath(os.path.join(path, 'AlgoEngine'))

            print(u'create logger:{}'.format(filename))
            self.logger = setup_logger(filename=filename,
                                       name='AlgoEngine',
                                       debug=True)
        else:
            filename = os.path.abspath(os.path.join(path, str(strategy_name)))
            print(u'create logger:{}'.format(filename))
            self.strategy_loggers[strategy_name] = setup_logger(
                filename=filename, name=str(strategy_name), debug=True)
Example #3
0
def runServer():
    """运行服务器"""

    try:
        log_file_name = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                                 'logs', u'noUiMain.log'))
    except Exception as ex:
        print( u'Use local dict:{0}'.format(os.getcwd()))
        log_file_name = os.path.abspath(os.path.join(os.getcwd(), 'logs', u'noUiMain.log'))

    setup_logger(filename=log_file_name, debug=False)

    # Req/Publish端口
    try:
        zmqAddressDict = globalSetting['ZMQ']
        zmqAddress = zmqAddressDict[AUTO_CONNCET_GW]
        reqAddress = zmqAddress['ReqAddress']
        pubAddress = zmqAddress['PubAddress']
    except:
        reqAddress = 'tcp://*:2014'
        pubAddress = 'tcp://*:2016'

    # 创建并启动服务器
    server = VtServer(reqAddress, pubAddress)
    server.start()

    printLog('-' * 50)
    printLog(u'Request端口:{0}'.format(reqAddress))
    printLog(u'Publish端口:{0}'.format(pubAddress))
    printLog(u'Trader服务器已启动')
Example #4
0
def main():
    """主程序入口"""

    logger = setup_logger(filename='logs/vnpy.log', debug=False)

    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine2()

    # 初始化主引擎和主窗口对象
    mainEngine = MainEngine(ee)

    mainEngine.logger = logger

    # 添加Gatway
    for gw_name in init_gateway_names['CTP']:
        print('add {0}'.format(gw_name))
        mainEngine.addGateway(ctpGateway, gw_name)

    # 添加应用
    mainEngine.addApp(ctaStrategy)
    mainEngine.addApp(riskManager)
    mainEngine.addApp(spreadTrading)

    mainWindow = MainWindow(mainEngine, ee)
    mainWindow.showMaximized()
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
Example #5
0
def main():
    """主程序入口"""

    logger = setup_logger(filename='logs/vnpy.log', debug=False)

    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine2()

    # 初始化主引擎和主窗口对象
    mainEngine = MainEngine(ee)

    mainEngine.logger = logger

    # 添加Gatway
    for gw_name in init_gateway_names['CTP']:
        print('add {0}'.format(gw_name))
        mainEngine.addGateway(ctpGateway, gw_name)

    # 添加应用
    mainEngine.addApp(ctaStrategy)
    mainEngine.addApp(riskManager)
    mainEngine.addApp(spreadTrading)

    mainWindow = MainWindow(mainEngine, ee)
    mainWindow.showMaximized()
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
Example #6
0
def main():
    """主程序入口"""

    logger = setup_logger(filename='logs/vnpy', debug=True)

    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine2()

    # 初始化主引擎和主窗口对象
    mainEngine = MainEngine(ee)

    mainEngine.logger = logger

    # 添加Gatway
    for gw_name in init_gateway_names.keys():
        for gw_conf in init_gateway_names[gw_name]:
            print('add {}'.format(gw_conf))
            mainEngine.addGateway(gateway_model_dict[gw_name], gw_conf)
            # 自动连接
            # mainEngine.connect(gw_conf)

    # 添加应用
    mainEngine.addApp(ctaStrategy)
    #mainEngine.addApp(riskManager)
    mainEngine.addApp(spreadTrading)

    mainWindow = MainWindow(mainEngine, ee)
    mainWindow.showMaximized()
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
Example #7
0
def runChildProcess():
    """子进程运行函数"""
    print('-' * 20)

    # 创建日志引擎
    le = setup_logger(filename='logs/vnpy.log', debug=False)
    # le.setLogLevel(le.LEVEL_INFO)
    # le.addConsoleHandler()
    le.info(u'启动行情记录运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processErrorEvent)
    le.info(u'注册日志事件监听')

    me.connect('CTP')
    le.info(u'连接CTP接口')

    while True:
        sleep(1)
Example #8
0
    def createLogger(self):
        """
        创建日志记录
        :return: 
        """
        currentFolder = os.path.abspath(os.path.join(os.getcwd(), 'logs'))
        if os.path.isdir(currentFolder):
            # 如果工作目录下,存在data子目录,就使用data子目录
            path = currentFolder
        else:
            # 否则,使用缺省保存目录 vnpy/trader/app/ctaStrategy/data
            path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'logs'))

        filename = os.path.abspath(os.path.join(path, 'Gateway'))

        print(u'create logger:{}'.format(filename))
        self.logger = setup_logger(filename=filename, name='vtGateway', debug=True)
Example #9
0
    def createLogger(self):
        """
        创建日志记录
        :return: 
        """
        currentFolder = os.path.abspath(os.path.join(os.getcwd(), 'logs'))
        if os.path.isdir(currentFolder):
            # 如果工作目录下,存在data子目录,就使用data子目录
            path = currentFolder
        else:
            # 否则,使用缺省保存目录 vnpy/trader/app/ctaStrategy/data
            path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'logs'))

        filename = os.path.abspath(os.path.join(path, 'Gateway'))

        print(u'create logger:{}'.format(filename))
        self.logger = setup_logger(filename=filename, name='vtGateway', debug=True)
Example #10
0
def runParentProcess():
    """父进程运行函数"""
    # 创建日志引擎
    le = setup_logger(filename='logs/vnpy.log', debug=False)
    le.info(u'启动行情记录守护父进程')

    DAY_START = time(8, 57)  # 日盘启动和停止时间
    DAY_END = time(15, 18)
    NIGHT_START = time(20, 57)  # 夜盘启动和停止时间
    NIGHT_END = time(2, 33)

    p = None  # 子进程句柄

    while True:
        currentTime = datetime.now().time()
        recording = False

        # 判断当前处于的时间段
        if ((currentTime >= DAY_START and currentTime <= DAY_END)
                or (currentTime >= NIGHT_START) or (currentTime <= NIGHT_END)):
            recording = True

        # 过滤周末时间段:周六全天,周五夜盘,周日日盘
        if ((datetime.today().weekday() == 6) or
            (datetime.today().weekday() == 5 and currentTime > NIGHT_END) or
            (datetime.today().weekday() == 0 and currentTime < DAY_START)):
            recording = False

        # 记录时间则需要启动子进程
        if recording and p is None:
            le.info(u'启动子进程')
            p = multiprocessing.Process(target=runChildProcess)
            p.start()
            le.info(u'子进程启动成功')

        # 非记录时间则退出子进程
        if not recording and p is not None:
            le.info(u'关闭子进程')
            p.terminate()
            p.join()
            p = None
            le.info(u'子进程关闭成功')

        sleep(5)
        pass


# 从csv文件进行回测
if __name__ == '__main__':
    # 提供直接双击回测的功能
    # 导入PyQt4的包是为了保证matplotlib使用PyQt4而不是PySide,防止初始化出错
    from vnpy.trader.app.ctaStrategy.ctaBacktesting import *
    from vnpy.trader.setup_logger import setup_logger

    cta_engine_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
    log_file_name = os.path.abspath(os.path.join(cta_engine_path, 'TestLogs',
                                                  '{0}_{1}.log'.format(OneStep1MAStrategy.className,
                                                                       datetime.now().strftime('%m%d_%H%M'))))
    setup_logger(
         filename=log_file_name,
         debug=False)

    # 创建回测引擎
    engine = BacktestingEngine()
    # 设置引擎的回测模式为bar
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20180101')

    # 设置回测用的数据结束日期
    engine.setEndDate('20180131')

    engine.setDatabase(dbName='VnTrader_1Min_Db',symbol='XBTUSD.Bitmex')
Example #12
0
# 加载底层接口
from vnpy.trader.gateway import ctpGateway
# 初始化的接口模块,以及其指定的名称,CTP是模块,value,是该模块下的多个连接配置文件,如 CTP_JR_connect.json
init_gateway_names = {
    'CTP': ['CTP', 'CTP_Prod', 'CTP_Post', 'CTP_EBF', 'CTP_JR', 'CTP_JR2']
}

# 文件路径名
path = os.path.abspath(os.path.dirname(__file__))
ICON_FILENAME = 'vnpy.ico'
ICON_FILENAME = os.path.join(path, ICON_FILENAME)

from vnpy.trader.setup_logger import setup_logger

setup_logger(filename='logs/vnpy_{0}.log'.format(
    datetime.now().strftime('%m%d_%H%M')),
             debug=False)


# ----------------------------------------------------------------------
def main():
    """主程序入口"""
    # 重载sys模块,设置默认字符串编码方式为utf8
    reload(sys)
    sys.setdefaultencoding('utf8')
    """
    # 设置Windows底部任务栏图标
    if 'Windows' in platform.uname():
        ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID('vn.trader')  

    # 初始化Qt应用对象