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)
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
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)
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()
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)
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
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)
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
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
# 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
def __init__(self): self.token = globalSetting.get("dingding", "")
def __init__(self): self.token = globalSetting.get( "dingding", "5cc1fc681a060c3fbd4804d27d4b0659ad2268295050909aa263ea3467cec845")