def init_ui(self): # 设置编码格式为utf-8 self.setUtf8(True) # 设置以'\n'换行 self.setEolMode(self.SC_EOL_LF) # 设置自动换行 self.setWrapMode(self.WrapWord) # 设置默认字体 self.setFont(self.font) # 设置tab键功能 self.setTabWidth(4) # Tab等于4个空格 self.setIndentationsUseTabs(True) # 行首缩进采用Tab键,反向缩进是Shift+Tab self.setIndentationWidth(4) # 行首缩进宽度为4个空格 self.setIndentationGuides(True) # 显示虚线垂直线的方式来指示缩进 self.setAutoIndent(True) # 插入新行时,自动缩进将光标推送到与前一个相同的缩进级别 # 设置光标 self.setCaretWidth(2) # 光标宽度(以像素为单位),0表示不显示光标 self.setCaretForegroundColor(QtGui.QColor("#ff0000ff")) # 设置光标前景色 self.setCaretLineVisible(True) # 设置是否使用光标所在行背景色 self.setCaretLineBackgroundColor(QtGui.QColor('#FFCFCF')) # 光标所在行的底色 # 设置页边,有3种Margin:0-行号; 1-改动标识; 2-代码折叠 self.setMarginsFont(self.font) # 行号字体 self.setMarginLineNumbers(0, True) # 设置标号为0的页边显示行号 self.setMarginWidth(0, '000') # 行号宽度 # self.setMarginBackgroundColor() # 设置页边背景颜色,这个api不会用 # 设置自动补全 # self.setAutoCompletionSource(Qsci.QsciScintilla.AcsAll) # 对于所有Ascii码补全 # self.setAutoCompletionCaseSensitivity(False) # 取消自动补全大小写敏感 # self.setAutoCompletionThreshold(1) # 输入1个字符,就出现自动补全提示 # # 设置窗口大小 # self.setFixedSize(1024, 760) # 设置文档窗口的标题 self.setWindowTitle("MyEditor")
def highlightCurrentLine(self): extraSelections = [] if not self.isReadOnly(): selection = QtWidgets.QTextEdit.ExtraSelection() lineColor = QtGui.QColor(Qt.yellow).lighter(160) selection.format.setBackground(lineColor) selection.format.setProperty(QtGui.QTextFormat.FullWidthSelection, True) selection.cursor = self.textCursor() selection.cursor.clearSelection() extraSelections.append(selection) self.setExtraSelections(extraSelections)
EVENT_TIMER ) from vnpy.trader.constant import Direction, Offset, OrderType, Interval, Status,Exchange from vnpy.trader.constant import Interval, Exchange from vnpy.chart.manager import BarManager from vnpy.chart.base import ( GREY_COLOR, WHITE_COLOR, CURSOR_COLOR, BLACK_COLOR, to_int, NORMAL_FONT ) from vnpy.chart.axis import DatetimeAxis from vnpy.chart.item import ChartItem from vnpy.trader.database import database_manager from vnpy.trader.jqdata import readCTP from PyQt5.QtCore import QTimer COLOR_LONG = QtGui.QColor("red") COLOR_SHORT = QtGui.QColor("green") COLOR_BID = QtGui.QColor(255, 174, 201) COLOR_ASK = QtGui.QColor(160, 255, 160) COLOR_BLACK = QtGui.QColor("black") from vnpy.trader.jqdata import jqdata_client # @Time : 2019-09-17 # @Author : 龙文浩 # 绘制k线图 class KLineMonitor(pg.PlotWidget): MIN_BAR_COUNT = 100
def update_trades(self, trades: list): """""" trade_pairs = generate_trade_pairs(trades) candle_plot = self.chart.get_plot("candle") scatter_data = [] y_adjustment = self.price_range * 0.001 for d in trade_pairs: open_ix = self.dt_ix_map[d["open_dt"]] close_ix = self.dt_ix_map[d["close_dt"]] open_price = d["open_price"] close_price = d["close_price"] # Trade Line x = [open_ix, close_ix] y = [open_price, close_price] if d["direction"] == Direction.LONG and close_price >= open_price: color = "r" elif d["direction"] == Direction.SHORT and close_price <= open_price: color = "r" else: color = "g" pen = pg.mkPen(color, width=1.5, style=QtCore.Qt.DashLine) item = pg.PlotCurveItem(x, y, pen=pen) self.items.append(item) candle_plot.addItem(item) # Trade Scatter open_bar = self.ix_bar_map[open_ix] close_bar = self.ix_bar_map[close_ix] if d["direction"] == Direction.LONG: scatter_color = "yellow" open_symbol = "t1" close_symbol = "t" open_side = 1 close_side = -1 open_y = open_bar.low_price close_y = close_bar.high_price else: scatter_color = "magenta" open_symbol = "t" close_symbol = "t1" open_side = -1 close_side = 1 open_y = open_bar.high_price close_y = close_bar.low_price pen = pg.mkPen(QtGui.QColor(scatter_color)) brush = pg.mkBrush(QtGui.QColor(scatter_color)) size = 10 open_scatter = { "pos": (open_ix, open_y - open_side * y_adjustment), "size": size, "pen": pen, "brush": brush, "symbol": open_symbol } close_scatter = { "pos": (close_ix, close_y - close_side * y_adjustment), "size": size, "pen": pen, "brush": brush, "symbol": close_symbol } scatter_data.append(open_scatter) scatter_data.append(close_scatter) # Trade text volume = d["volume"] text_color = QtGui.QColor(scatter_color) open_text = pg.TextItem(f"[{volume}]", color=text_color, anchor=(0.5, 0.5)) close_text = pg.TextItem(f"[{volume}]", color=text_color, anchor=(0.5, 0.5)) open_text.setPos(open_ix, open_y - open_side * y_adjustment * 3) close_text.setPos(close_ix, close_y - close_side * y_adjustment * 3) self.items.append(open_text) self.items.append(close_text) candle_plot.addItem(open_text) candle_plot.addItem(close_text) trade_scatter = pg.ScatterPlotItem(scatter_data) self.items.append(trade_scatter) candle_plot.addItem(trade_scatter)
from typing import List, Dict, Set, Union from copy import copy from collections import defaultdict from vnpy.event import Event from vnpy.trader.ui import QtWidgets, QtCore, QtGui from vnpy.trader.ui.widget import COLOR_BID, COLOR_ASK, COLOR_BLACK from vnpy.trader.event import ( EVENT_TICK, EVENT_TRADE, EVENT_POSITION, EVENT_TIMER ) from vnpy.trader.utility import round_to from ..engine import OptionEngine from ..base import UnderlyingData, OptionData, ChainData, PortfolioData COLOR_WHITE = QtGui.QColor("white") COLOR_POS = QtGui.QColor("yellow") COLOR_GREEKS = QtGui.QColor("cyan") class MonitorCell(QtWidgets.QTableWidgetItem): """""" def __init__(self, text: str = "", vt_symbol: str = ""): """""" super().__init__(text) self.vt_symbol = vt_symbol self.setTextAlignment(QtCore.Qt.AlignCenter)
from typing import Dict, Tuple, Union from vnpy.trader.object import TradeData from vnpy.event.engine import Event from vnpy.trader.ui import QtWidgets, QtCore, QtGui from vnpy.trader.engine import MainEngine, EventEngine from vnpy.trader.ui.widget import (BaseCell, EnumCell, DirectionCell, TimeCell) from ..base import ContractResult, PortfolioResult from ..engine import (APP_NAME, EVENT_PM_CONTRACT, EVENT_PM_PORTFOLIO, EVENT_TRADE, PortfolioEngine) RED_COLOR = QtGui.QColor("red") GREEN_COLOR = QtGui.QColor("green") WHITE_COLOR = QtGui.QColor("white") class PortfolioManager(QtWidgets.QWidget): """""" signal_contract = QtCore.pyqtSignal(Event) signal_portfolio = QtCore.pyqtSignal(Event) signal_trade = QtCore.pyqtSignal(Event) def __init__(self, main_engine: MainEngine, event_engine: EventEngine) -> None: """""" super().__init__() self.main_engine = main_engine self.event_engine = event_engine