Esempio n. 1
0
    def writeNotification(self, content):
        """快速发出通知日志事件"""
        log = VtLogData()
        log.logContent = content
        event = vn_event(type_=EVENT_NOTIFICATION)
        event.dict_['data'] = log
        self.eventEngine.put(event)

        # 发出邮件
        if globalSetting.get('activate_email', False):
            try:
                sendmail(subject=u'{0} Notification'.format('_'.join(
                    self.connected_gw_names)),
                         msgcontent=content)
            except Exception as ex:
                print(
                    u'vtEngine.writeNotification sendmail Exception:{}'.format(
                        str(ex)),
                    file=sys.stderr)
                print(u'{}'.format(traceback.format_exc()), file=sys.stderr)

        # 发出微信
        if globalSetting.get('activate_wx_ft', False):
            try:
                from huafu.util.util_wx_ft import sendWxMsg
                sendWxMsg(text=content)
            except Exception as ex:
                print(u'vtEngine.writeNotification sendWxMsg Exception:{}'.
                      format(str(ex)),
                      file=sys.stderr)
                print(u'{}'.format(traceback.format_exc()), file=sys.stderr)
Esempio n. 2
0
 def initRqData(self):
     """初始化RQData客户端"""
     # 检查是否填写了RQData配置
     username = globalSetting.get('rqUsername', None)
     password = globalSetting.get('rqPassword', None)
     if not username or not password:
         return
     
     # 加载RQData
     try:
         import rqdatac as rq
     except ImportError:
         return
     
     # 登录RQData
     self.rq = rq
     self.rq.init(username, password)
     
     # 获取本日可交易合约代码
     try:
         df = self.rq.all_instruments(type='Future', date=datetime.now())
         for ix, row in df.iterrows():
             self.rqSymbolSet.add(row['order_book_id'])
     except RuntimeError:
         pass
Esempio n. 3
0
    def initRqData(self):
        """初始化RQData客户端"""
        # 检查是否填写了RQData配置
        username = globalSetting.get('rqUsername', None)
        password = globalSetting.get('rqPassword', None)
        if not username or not password:
            return

        # 加载RQData
        try:
            import rqdatac as rq
        except ImportError:
            return

        # 登录RQData
        self.rq = rq
        self.rq.init(username, password)

        # 获取本日可交易合约代码
        try:
            df = self.rq.all_instruments(type='Future', date=datetime.now())
            for ix, row in df.iterrows():
                self.rqSymbolSet.add(row['order_book_id'])
        except RuntimeError:
            pass
Esempio n. 4
0
    def writeCritical(self, content):
        """快速发出严重错误日志事件"""

        log = VtLogData()
        log.logContent = content
        event = vn_event(type_=EVENT_CRITICAL)
        event.dict_['data'] = log
        self.eventEngine.put(event)

        print('{}'.format(datetime.now()), file=sys.stderr)
        print(content, file=sys.stderr)

        # 写入本地log日志
        if self.logger:
            self.logger.critical(content)
        else:
            self.createLogger()

        # 发出邮件
        if globalSetting.get('activate_email',False):
            # 发出邮件
            try:
                sendmail(subject=u'{0} Critical'.format('_'.join(self.connected_gw_names)), msgcontent=content)
            except Exception as ex:
                print(u'vtEngine.writeCritical sendmail Exception:{}'.format(str(ex)), file=sys.stderr)
                print(u'{}'.format(traceback.format_exc()), file=sys.stderr)

        # 发出微信
        if globalSetting.get('activate_wx_ft',False):
            try:
                from huafu.util.util_wx_ft import sendWxMsg
                sendWxMsg(text=content)
            except Exception as ex:
                print(u'vtEngine.writeCritical sendWxMsg Exception:{}'.format(str(ex)), file=sys.stderr)
                print(u'{}'.format(traceback.format_exc()), file=sys.stderr)
Esempio n. 5
0
def _create_notifier():
    ding = globalSetting.get("dingding", None)
    mail = globalSetting.get('mailAccount', None) and globalSetting.get('mailPass', None) \
        and globalSetting.get('mailServer', None) and globalSetting.get('mailPort', None)
    if ding:
        return MultiprocessEmailHelper(notify_class=DingSender)
    elif mail:
        return MultiprocessEmailHelper(notify_class=MailSender)
    return LoggingNotifier()
Esempio n. 6
0
    def initLogEngine(self):
        """初始化日志引擎"""
        if not globalSetting["logActive"]:
            return

        # 创建引擎
        self.logEngine = LogEngine()

        # 设置日志级别
        levelDict = {
            "debug": LogEngine.LEVEL_DEBUG,
            "info": LogEngine.LEVEL_INFO,
            "warn": LogEngine.LEVEL_WARN,
            "error": LogEngine.LEVEL_ERROR,
            "critical": LogEngine.LEVEL_CRITICAL,
        }
        level = levelDict.get(globalSetting["logLevel"],
                              LogEngine.LEVEL_CRITICAL)
        self.logEngine.setLogLevel(level)
        stream_setting = globalSetting.get("streamLevel", "info")
        streamLevel = levelDict.get(stream_setting, LogEngine.LEVEL_CRITICAL)
        self.logEngine.setStreamLevel(streamLevel)

        # 设置输出
        if globalSetting['logConsole']:
            self.logEngine.addConsoleHandler()

        if globalSetting['logFile']:
            self.logEngine.addFileHandler()

        # 注册事件监听
        self.registerLogEvent(EVENT_LOG)
Esempio n. 7
0
    def get_contracts(self):
        """获取所有合约信息"""
        d = {}
        for k,v in self.setting.items():
            contract = VtContractData()
            contract.gatewayName = v.get('gateway_name',None)
            if contract.gatewayName is None and globalSetting.get('gateway_name',None) is not None:
                contract.gatewayName = globalSetting.get('gateway_name')
            contract.symbol = k
            contract.exchange = v.get('exchange',None)
            contract.vtSymbol = contract.symbol
            contract.name = v.get('name',contract.symbol)
            contract.size = v.get('size',100)

            contract.priceTick = v.get('minDiff',0.01)  # 最小跳动
            contract.strikePrice = v.get('strike_price',None)
            contract.underlyingSymbol = v.get('underlying_symbol')
            contract.longMarginRatio = v.get('margin_rate',0.1)
            contract.shortMarginRatio = v.get('margin_rate',0.1)
            contract.productClass = v.get('product_class',None)
            d[contract.vtSymbol] = contract

        return d
Esempio n. 8
0
    def writeError(self, content):
        """快速发出错误日志事件"""
        log = VtErrorData()
        log.errorMsg = content
        event = vn_event(type_=EVENT_ERROR)
        event.dict_['data'] = log
        self.eventEngine.put(event)

        # 写入本地log日志
        if self.logger is not None:
            self.logger.error(content)
        else:
            self.createLogger()

        # 发出邮件
        if globalSetting.get('activate_email', False):
            try:
                sendmail(subject=u'{0} Error'.format('_'.join(
                    self.connected_gw_names)),
                         msgcontent=content)
            except Exception as ex:
                print(u'vtEngine.writeError sendmail Exception:{}'.format(
                    str(ex)),
                      file=sys.stderr)
                print(u'{}'.format(traceback.format_exc()), file=sys.stderr)

        # 发出微信
        if globalSetting.get('activate_wx_ft', False):
            try:
                from huafu.util.util_wx_ft import sendWxMsg
                sendWxMsg(text=content)
            except Exception as ex:
                print(u'vtEngine.writeError sendWxMsg Exception:{}'.format(
                    str(ex)),
                      file=sys.stderr)
                print(u'{}'.format(traceback.format_exc()), file=sys.stderr)
Esempio n. 9
0
    def init_client(self):
        fileName = globalSetting.get('gateway_name', '') + '_connect.json'
        filePath = getJsonPath(fileName, __file__)
        try:
            with open(filePath, 'r') as f:
                # 解析json文件
                setting = json.load(f)
                apiKey = setting.get('accessKey',None)
                secretKey = setting.get('secretKey',None)

                if apiKey is not None and secretKey is not None:
                    self.client = Client(apiKey, secretKey)

        except IOError:
            self.strategy.writeCtaError(u'BINANCE读取连接配置{}出错,请检查'.format(filePath))
            return
Esempio n. 10
0
    def init_client(self):
        fileName = globalSetting.get('gateway_name', '') + '_connect.json'
        filePath = getJsonPath(fileName, __file__)
        try:
            with open(filePath, 'r') as f:
                # 解析json文件
                setting = json.load(f)
                apiKey = setting.get('accessKey', None)
                secretKey = setting.get('secretKey', None)

                if apiKey is not None and secretKey is not None:
                    self.client = Client(apiKey, secretKey)

        except IOError:
            self.strategy.writeCtaError(
                u'BINANCE读取连接配置{}出错,请检查'.format(filePath))
            return
Esempio n. 11
0
# encoding: UTF-8
print('load vnpy/languange')
# 默认设置
from .chinese import text, constant

# 是否要使用英文
from vnpy.trader.vtGlobal import globalSetting
if globalSetting.get('language', None) == 'english':
    from vnpy.trader.language.english import text, constant
Esempio n. 12
0
 def __init__(self):
     self.token = globalSetting.get("dingding", "")
 def __init__(self):
     self.token = globalSetting.get(
         "dingding",
         "5cc1fc681a060c3fbd4804d27d4b0659ad2268295050909aa263ea3467cec845")