def initMenu(self): """初始化菜单""" # 创建菜单 menubar = self.menuBar() # 设计为只显示存在的接口 gatewayDetails = self.mainEngine.getAllGatewayDetails() sysMenu = menubar.addMenu(vtText.SYSTEM) for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_FUTURES: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_EQUITY: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_INTERNATIONAL: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_BTC: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_DATA: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() sysMenu.addAction(self.createAction(vtText.CONNECT_DATABASE, self.mainEngine.dbConnect, loadIconPath('database.ico'))) sysMenu.addSeparator() sysMenu.addAction(self.createAction(vtText.EXIT, self.close, loadIconPath('exit.ico'))) # 功能应用 appMenu = menubar.addMenu(vtText.APPLICATION) for appDetail in self.appDetailList: # 如果没有应用界面,则不添加菜单按钮 if not appDetail['appWidget']: continue function = self.createOpenAppFunction(appDetail) action = self.createAction(appDetail['appDisplayName'], function, loadIconPath(appDetail['appIco'])) appMenu.addAction(action) # 帮助 helpMenu = menubar.addMenu(vtText.HELP) helpMenu.addAction(self.createAction(vtText.CONTRACT_SEARCH, self.openContract, loadIconPath('contract.ico'))) helpMenu.addAction(self.createAction(vtText.EDIT_SETTING, self.openSettingEditor, loadIconPath('editor.ico'))) helpMenu.addSeparator() helpMenu.addAction(self.createAction(vtText.RESTORE, self.restoreWindow, loadIconPath('restore.ico'))) helpMenu.addAction(self.createAction(vtText.ABOUT, self.openAbout, loadIconPath('about.ico'))) helpMenu.addSeparator() helpMenu.addAction(self.createAction(vtText.TEST, self.test, loadIconPath('test.ico')))
def initMenu(self): """初始化菜单""" # 创建菜单 menubar = self.menuBar() # 设计为只显示存在的接口 gatewayDetails = self.mainEngine.getAllGatewayDetails() sysMenu = menubar.addMenu(vtText.SYSTEM) for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_FUTURES: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_EQUITY: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_INTERNATIONAL: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_BTC: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_DATA: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) sysMenu.addSeparator() sysMenu.addAction(self.createAction(vtText.CONNECT_DATABASE, self.mainEngine.dbConnect, loadIconPath('database.ico'))) sysMenu.addSeparator() sysMenu.addAction(self.createAction(vtText.EXIT, self.close, loadIconPath('exit.ico'))) # 功能应用 appMenu = menubar.addMenu(vtText.APPLICATION) for appDetail in self.appDetailList: # 如果没有应用界面,则不添加菜单按钮 if not appDetail['appWidget']: continue function = self.createOpenAppFunction(appDetail) action = self.createAction(appDetail['appDisplayName'], function, loadIconPath(appDetail['appIco'])) appMenu.addAction(action) # 帮助 helpMenu = menubar.addMenu(vtText.HELP) helpMenu.addAction(self.createAction(vtText.CONTRACT_SEARCH, self.openContract, loadIconPath('contract.ico'))) helpMenu.addAction(self.createAction(vtText.EDIT_SETTING, self.openSettingEditor, loadIconPath('editor.ico'))) helpMenu.addSeparator() helpMenu.addAction(self.createAction(vtText.RESTORE, self.restoreWindow, loadIconPath('restore.ico'))) helpMenu.addAction(self.createAction(vtText.ABOUT, self.openAbout, loadIconPath('about.ico'))) helpMenu.addSeparator() helpMenu.addAction(self.createAction(vtText.TEST, self.test, loadIconPath('test.ico')))
def initMenu(self): """初始化菜单""" # 创建菜单 menubar = self.menuBar() # 帮助 helpMenu = menubar.addMenu(vtText.HELP) # helpMenu.addAction(self.createAction(vtText.CONTRACT_SEARCH, self.openContract, loadIconPath('contract.ico'))) # helpMenu.addAction(self.createAction(vtText.EDIT_SETTING, self.openSettingEditor, loadIconPath('editor.ico'))) helpMenu.addSeparator() helpMenu.addAction( self.createAction(vtText.RESTORE, self.restoreWindow, loadIconPath('restore.ico'))) helpMenu.addAction( self.createAction(vtText.ABOUT, self.openAbout, loadIconPath('about.ico')))
def createQApp(): """创建PyQt应用对象""" # 创建Qt应用对象 qApp = QtWidgets.QApplication([]) # 设置Qt的皮肤 if globalSetting['darkStyle']: try: import qdarkstyle qApp.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) except: print "Unexpected error:", sys.exc_info()[0] # 设置Windows底部任务栏图标 if 'Windows' in platform.uname(): import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID( 'vn.trader') # 设置Qt字体 qApp.setFont(BASIC_FONT) # 设置Qt图标 qApp.setWindowIcon(QtGui.QIcon(loadIconPath('vnpy.ico'))) # 返回创建好的QApp对象 return qApp
def display_multi_grid(): qApp = createQApp() qApp.setWindowIcon(QtGui.QIcon(loadIconPath('dashboard.ico'))) w = GridKline() w.showMaximized() sys.exit(qApp.exec_())
def createQApp(): """创建PyQt应用对象""" # 创建Qt应用对象 qApp = QtWidgets.QApplication([]) # 设置Qt的皮肤 if globalSetting['darkStyle']: try: import qdarkstyle qApp.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) except : print("Unexpected error when import darkStyle:", sys.exc_info()[0]) # 设置Windows底部任务栏图标 if 'Windows' in platform.uname(): import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID('vn.trader') # 设置Qt字体 qApp.setFont(BASIC_FONT) # 设置Qt图标 qApp.setWindowIcon(QtGui.QIcon(loadIconPath('vnpy.ico'))) # 返回创建好的QApp对象 return qApp
def display_multi_grid(): qApp = createQApp() qApp.setWindowIcon(QtGui.QIcon(loadIconPath('dashboard.ico'))) w = GridKline() w.showMaximized() sys.exit(qApp.exec_())
def addConnectAction(self, menu, gatewayName, displayName=''): """增加连接功能""" if gatewayName not in self.gatewayNameList: return def connect(): self.mainEngine.ws_connect(gatewayName) if not displayName: displayName = gatewayName actionName = vtText.CONNECT + displayName connectAction = self.createAction(actionName, connect, loadIconPath('connect.ico')) menu.addAction(connectAction)
def addConnectAction(self, menu, gatewayName, displayName=''): """增加连接功能""" if gatewayName not in self.gatewayNameList: return def connect(): self.mainEngine.connect(gatewayName) if not displayName: displayName = gatewayName actionName = vtText.CONNECT + displayName connectAction = self.createAction(actionName, connect, loadIconPath('connect.ico')) menu.addAction(connectAction)
def display_multi_window(): qApp = createQApp() qApp.setWindowIcon(QtGui.QIcon(loadIconPath('dashboard.ico'))) settings = [] collections = ['RB99_5', 'RB99_10'] for collection in collections: s = { 'kline_name': collection, 'mongo': { 'host': 'localhost', 'port': 27017, 'db': 'Renko_Db', 'collection': collection, 'is_live': True } } settings.append(s) w = MultiKlineWindow(parent=None, settings=settings) w.showMaximized() sys.exit(qApp.exec_())
def addConnectAction(self, menu, gatewayName, displayName=''): """增加连接功能""" if gatewayName not in self.gatewayNameList: return def connect(): try: r = self.mainEngine.connect(gatewayName) except: print("Unexpected error:", sys.exc_info()[0]) traceback.print_exc() if r: self.connectGatewayDict[gatewayName] = gatewayName self.connected = True if not displayName: displayName = gatewayName actionName = vtText.CONNECT + displayName connectAction = self.createAction(actionName, connect, loadIconPath('connect.ico')) menu.addAction(connectAction)
def addConnectAction(self, menu, gatewayName, displayName=''): """增加连接功能""" if gatewayName not in self.gatewayNameList: return def connect(): try: r = self.mainEngine.connect(gatewayName) except: print( "Unexpected error:", sys.exc_info()[0]) traceback.print_exc() if r: self.connectGatewayDict[gatewayName] = gatewayName self.connected = True if not displayName: displayName = gatewayName actionName = vtText.CONNECT + displayName connectAction = self.createAction(actionName, connect, loadIconPath('connect.ico')) menu.addAction(connectAction)
def initMenu(self): """初始化菜单""" autoDisconnetAction = QtWidgets.QAction(u'自动断开重连', self) autoDisconnetAction.triggered.connect(self.setAutoDisconnect) # 创建菜单 menubar = self.menuBar() # 系统 sysMenu = menubar.addMenu(vtText.SYSTEM) # 系统,连接的接口清单 gatewayDetails = self.mainEngine.getAllGatewayDetails() gatewayDetails = sorted(gatewayDetails, key=lambda gw: gw['gatewayName']) has_gw = False # 期货类接口 for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_FUTURES: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_EQUITY: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_INTERNATIONAL: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_BTC: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False # 系统=》自动重连, 接口连接后,断开时,自动重连 sysMenu.addSeparator() sysMenu.addAction(autoDisconnetAction) # 系统=》连接数据库 sysMenu.addSeparator() sysMenu.addAction( self.createAction(vtText.CONNECT_DATABASE, self.mainEngine.dbConnect, loadIconPath('database.ico'))) # 系统=》退出菜单 sysMenu.addSeparator() sysMenu.addAction( self.createAction(vtText.EXIT, self.close, loadIconPath('exit.ico'))) # 功能应用 appMenu = menubar.addMenu(vtText.APPLICATION) for appDetail in self.appDetailList: function = self.createOpenAppFunction(appDetail) action = self.createAction(appDetail['appDisplayName'], function, loadIconPath(appDetail['appIco'])) appMenu.addAction(action) # 算法相关 #algoMenu = menubar.addMenu(u'算法') #algoMenu.addAction(ctaAction) spreadAction = self.createAction(u'网格套利', self.openSpread) appMenu.addAction(spreadAction) #appMenu.addAction(kChart) # 帮助 helpMenu = menubar.addMenu(vtText.HELP) helpMenu.addAction( self.createAction(vtText.CONTRACT_SEARCH, self.openContract, loadIconPath('contract.ico'))) helpMenu.addAction( self.createAction(vtText.EDIT_SETTING, self.openSettingEditor, loadIconPath('editor.ico'))) helpMenu.addSeparator() helpMenu.addAction( self.createAction(vtText.RESTORE, self.restoreWindow, loadIconPath('restore.ico'))) helpMenu.addAction( self.createAction(vtText.ABOUT, self.openAbout, loadIconPath('about.ico'))) helpMenu.addSeparator() helpMenu.addAction( self.createAction(vtText.TEST, self.test, loadIconPath('test.ico')))
def display_multi_grid(): qApp = createQApp() qApp.setWindowIcon(QtGui.QIcon(loadIconPath('dashboard.ico'))) w = GridKline() w.showMaximized() sys.exit(qApp.exec_()) if __name__ == '__main__': # ## 界面设置 qApp = createQApp() qApp.setWindowIcon(QtGui.QIcon(loadIconPath('dashboard.ico'))) # # K线界面 try: ui = KLineWidget(display_vol=False, display_sub=True) ui.show() ui.KLtitle.setText('btc()', size='20pt') ui.add_indicator(indicator='ema34', is_main=True) ui.add_indicator(indicator='ema55', is_main=True) ui.add_indicator(indicator='ema120', is_main=True) ui.add_indicator(indicator='sk', is_main=False) ui.add_indicator(indicator='sd', is_main=False) # 这里加载基础K线 df = pd.read_csv('logs/SDemo_btc_usdt_M5.csv') if 'openInterest' not in df.columns:
from vnpy.trader.vtGlobal import globalSetting from vnpy.trader.vtFunction import loadIconPath # 创建Qt应用对象 qApp = QtGui.QApplication([]) # 设置Qt的皮肤 if globalSetting['darkStyle']: try: import qdarkstyle qApp.setStyleSheet(qdarkstyle.load_stylesheet(pyside=False)) except ImportError: pass # 设置Windows底部任务栏图标 if 'Windows' in platform.uname(): import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID('vn.trader') # 设置Qt字体 try: family = globalSetting['fontFamily'] size = globalSetting['fontSize'] BASIC_FONT = QtGui.QFont(family, size) except: BASIC_FONT = QtGui.QFont(u'微软雅黑', 12) qApp.setFont(BASIC_FONT) # 设置Qt图标 qApp.setWindowIcon(QtGui.QIcon(loadIconPath('vnpy.ico')))
def initMenu(self): """初始化菜单""" autoDisconnetAction = QtWidgets.QAction(u'自动断开重连', self) autoDisconnetAction.triggered.connect(self.setAutoDisconnect) # 创建菜单 menubar = self.menuBar() # 系统 sysMenu = menubar.addMenu(vtText.SYSTEM) # 系统,连接的接口清单 gatewayDetails = self.mainEngine.getAllGatewayDetails() has_gw = False # 期货类接口 for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_FUTURES: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_EQUITY: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_INTERNATIONAL: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False for d in gatewayDetails: if d['gatewayType'] == GATEWAYTYPE_BTC: self.addConnectAction(sysMenu, d['gatewayName'], d['gatewayDisplayName']) has_gw = True if has_gw: sysMenu.addSeparator() has_gw = False # 系统=》自动重连, 接口连接后,断开时,自动重连 sysMenu.addSeparator() sysMenu.addAction(autoDisconnetAction) # 系统=》连接数据库 sysMenu.addSeparator() sysMenu.addAction( self.createAction(vtText.CONNECT_DATABASE, self.mainEngine.dbConnect, loadIconPath('database.ico'))) # 系统=》退出菜单 sysMenu.addSeparator() sysMenu.addAction(self.createAction(vtText.EXIT, self.close, loadIconPath('exit.ico'))) # 功能应用 appMenu = menubar.addMenu(vtText.APPLICATION) for appDetail in self.appDetailList: function = self.createOpenAppFunction(appDetail) action = self.createAction(appDetail['appDisplayName'], function, loadIconPath(appDetail['appIco'])) appMenu.addAction(action) # 算法相关 #algoMenu = menubar.addMenu(u'算法') #algoMenu.addAction(ctaAction) spreadAction = self.createAction(u'网格套利',self.openSpread) appMenu.addAction(spreadAction) #appMenu.addAction(kChart) # 帮助 helpMenu = menubar.addMenu(vtText.HELP) helpMenu.addAction( self.createAction(vtText.CONTRACT_SEARCH, self.openContract, loadIconPath('contract.ico'))) helpMenu.addAction( self.createAction(vtText.EDIT_SETTING, self.openSettingEditor, loadIconPath('editor.ico'))) helpMenu.addSeparator() helpMenu.addAction(self.createAction(vtText.RESTORE, self.restoreWindow, loadIconPath('restore.ico'))) helpMenu.addAction(self.createAction(vtText.ABOUT, self.openAbout, loadIconPath('about.ico'))) helpMenu.addSeparator() helpMenu.addAction(self.createAction(vtText.TEST, self.test, loadIconPath('test.ico')))