Exemple #1
0
def showStockChart(stockcode):

    stockcode = stock.normalizeStockCode(stockcode)
    kdata = stock.getStockDayDataQianFuQuan(stockcode)
    if (not kdata):
        utils.output('股票数据不存在', 'red')
        return False

    if (stockcode[:3] != 'sh0'):
        weightdata = stock.getStockWeightData(stockcode)
        if (not weightdata):
            utils.output('复权数据不存在', 'red')
            return False
        #print(weightdata)

    #set data
    globals.mainwin.chart.kdata = kdata
    globals.mainwin.chart.stockcode = stockcode
    globals.mainwin.scrollbar.setMinimum(0)
    ktotalcount = len(kdata)
    globals.mainwin.scrollbar.setMaximum(ktotalcount)
    globals.mainwin.scrollbar.setValue(ktotalcount)
    globals.mainwin.scrollbar.setSingleStep(1)
    if (stockcode[:3] != 'sh0'):
        globals.mainwin.chart.weightdata = weightdata

    #draw
    globals.viewportclear = False
    utils.update()
def showStockChart(stockcode):
    
    stockcode = stock.normalizeStockCode(stockcode)
    kdata = stock.getStockDayDataQianFuQuan(stockcode)
    if(not kdata):
        utils.output('股票数据不存在', 'red')
        return False

    if(stockcode[:3] != 'sh0'):
        weightdata = stock.getStockWeightData(stockcode)
        if(not weightdata):
            utils.output('复权数据不存在', 'red')
            return False
        #print(weightdata)

    #set data
    globals.mainwin.chart.kdata = kdata
    globals.mainwin.chart.stockcode = stockcode
    globals.mainwin.scrollbar.setMinimum(0)
    ktotalcount = len(kdata)
    globals.mainwin.scrollbar.setMaximum(ktotalcount)
    globals.mainwin.scrollbar.setValue(ktotalcount)
    globals.mainwin.scrollbar.setSingleStep(1)
    if(stockcode[:3] != 'sh0'):
        globals.mainwin.chart.weightdata = weightdata

    #draw
    globals.viewportclear = False
    utils.update()
Exemple #3
0
    def saveAllItems(self):
        watchlist = []
        filename = globals.datapath + '/watchlist.dat'
        for i in range(0, 50):
            item0 = self.tbWatchList.item(i, 0)
            item1 = self.tbWatchList.item(i, 1)
            item2 = self.tbWatchList.item(i, 2)
            d0 = d1 = d2 = ''
            if(item0):
                d0 = item0.data(Qt.DisplayRole)
            if(d0 and item1):
                d1 = item1.data(Qt.DisplayRole)
            if(item2):
                d2 = item2.data(Qt.DisplayRole)

            scode = stock.normalizeStockCode(d0)
            sname = stock.getStockName(scode)
            if(sname):
                watchlist.append([d0, d1, d2])

        #write to file begin
        try:
            f = open(filename, 'wb')
        except IOError:
            exc_type, exc_value = sys.exc_info()[:2]
            errmsg = '{}: {}'.format(exc_type.__name__, exc_value)
            output(errmsg, 'red')
            return False
        
        pickle.dump(watchlist, f)
        f.close() 
Exemple #4
0
    def handleCellChanged(self, row, column):
        if(column == 0):
            item0 =  self.tbWatchList.item(row, 0)
            stockcode = item0.data(Qt.DisplayRole)
            if(stockcode):
                norcode = stock.normalizeStockCode(stockcode)
                stockname = stock.getStockName(norcode)
                if(norcode):
                    if(norcode != stockcode):
                        item0 = QTableWidgetItem(norcode)
                        self.tbWatchList.setItem(row, 0, item0)
                    
                    if(stockname):
                        item1 = QTableWidgetItem(stockname)
                    else:
                        item1 = QTableWidgetItem('')

                    item1.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled)
                    self.tbWatchList.setItem(row, 1, item1) 

            self.saveAllItems()

        if(column == 2):
            item2 =  self.tbWatchList.item(row, 2)
            if(item2 and item2.data(Qt.DisplayRole)):
                self.saveAllItems()
Exemple #5
0
def run(subcmd, params):
    chart = globals.mainwin.chart
    stocklist = stock.getStockList()

    if(subcmd == 'di'):
        filterResults = []
        di = indicators.di.Di()

        utils.output('开始di条件过滤')
        prefixstr = 'filter di条件过滤:'
        totalstock = len(stocklist)
        cnt = 0
        start_time = datetime.datetime.now()
        for stockcode in stocklist:
            cnt +=1
            stockcode = stock.normalizeStockCode(stockcode)
            end_time = datetime.datetime.now()
            diffStr = '{}'.format(end_time - start_time)
            outstr = '{} {}/{} 当前代码:{} 符合条件:{} ({})'.format(prefixstr, cnt, totalstock, stockcode, len(filterResults), diffStr)
            utils.overwrite(outstr, prefixstr)
            stockdata = stock.getStockDayDataQianFuQuan(stockcode)
            stockdata = stockdata[-500:]
            didata = di.calculateData(stockdata)
            QCoreApplication.processEvents()
            if(didata[-1] and didata[-1].get('tip')):
                filterResults.append({'code':stockcode, 'date':didata[-1]['date']})

        
        dataArr = []

        for row in filterResults:
            scode = row['code']
            sdate = row['date']
            row=[]
            row.append(scode)
            row.append(stock.getStockName(scode))
            row.append(sdate)
            dataArr.append(row)
    
        #write to file begin
        filename = globals.datapath + '/lastFilterResult.dat'
        try:
            f = open(filename, 'wb')
        except IOError:
            exc_type, exc_value = sys.exc_info()[:2]
            errmsg = '{}: {}'.format(exc_type.__name__, exc_value)
            output(errmsg, 'red')
            return False
        
        pickle.dump(dataArr, f)
        f.close() 
        #write to file end
        
        tablemodel = stockfilterresultdlg.FilterResultModel(dataArr, None)
        tbResults = globals.mainwin.stockfilterresultdlg.tbResults
        tbResults.setModel(tablemodel)
        globals.mainwin.windowStockFilterResult()
Exemple #6
0
def run(subcmd, params):

    if (subcmd == 'shanghai_a_count'):
        return _getShanghaiACount()

    if (subcmd == 'hq'):
        if (len(params) != 1):
            utils.output('请给出股票代码', 'red')
            utils.output(subCommands['hq'])
            return

        stock_code = stock.normalizeStockCode(params[0])
        if (not stock_code):
            utils.output('股票代码错误', 'red')
            utils.output(subCommands['hq'])
            return

        return _getHq(stock_code)
Exemple #7
0
def run(subcmd, params):

    if(subcmd == 'shanghai_a_count'):
        return _getShanghaiACount()


    if(subcmd == 'hq'):
        if(len(params) != 1):
            utils.output('请给出股票代码', 'red')
            utils.output(subCommands['hq'])
            return
        
        stock_code = stock.normalizeStockCode(params[0])
        if(not stock_code):
            utils.output('股票代码错误', 'red')
            utils.output(subCommands['hq'])
            return
        
        return _getHq(stock_code)
Exemple #8
0
def run(subcmd, params):
    chart = globals.mainwin.chart
    stocklist = stock.getStockList()

    if (subcmd == 'di'):
        filterResults = []
        di = indicators.di.Di()

        utils.output('开始di条件过滤')
        prefixstr = 'filter di条件过滤:'
        totalstock = len(stocklist)
        cnt = 0
        start_time = datetime.datetime.now()
        for stockcode in stocklist:
            cnt += 1
            stockcode = stock.normalizeStockCode(stockcode)
            end_time = datetime.datetime.now()
            diffStr = '{}'.format(end_time - start_time)
            outstr = '{} {}/{} 当前代码:{} 符合条件:{} ({})'.format(
                prefixstr, cnt, totalstock, stockcode, len(filterResults),
                diffStr)
            utils.overwrite(outstr, prefixstr)
            stockdata = stock.getStockDayDataQianFuQuan(stockcode)
            stockdata = stockdata[-500:]
            didata = di.calculateData(stockdata)
            QCoreApplication.processEvents()
            if (didata[-1] and didata[-1].get('tip')):
                filterResults.append({
                    'code': stockcode,
                    'date': didata[-1]['date']
                })

        dataArr = []

        for row in filterResults:
            scode = row['code']
            sdate = row['date']
            row = []
            row.append(scode)
            row.append(stock.getStockName(scode))
            row.append(sdate)
            dataArr.append(row)

        #write to file begin
        filename = globals.datapath + '/lastFilterResult.dat'
        try:
            f = open(filename, 'wb')
        except IOError:
            exc_type, exc_value = sys.exc_info()[:2]
            errmsg = '{}: {}'.format(exc_type.__name__, exc_value)
            output(errmsg, 'red')
            return False

        pickle.dump(dataArr, f)
        f.close()
        #write to file end

        tablemodel = stockfilterresultdlg.FilterResultModel(dataArr, None)
        tbResults = globals.mainwin.stockfilterresultdlg.tbResults
        tbResults.setModel(tablemodel)
        globals.mainwin.windowStockFilterResult()