Пример #1
0
    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")
Пример #2
0
    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)
Пример #3
0
    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
Пример #4
0
    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)
Пример #5
0
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)
Пример #6
0
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