Python实现股票行情接收V013

来源:互联网 发布:python自动化开发基础 编辑:程序博客网 时间:2024/06/09 18:50

最近做了一些调整和功能的增加,主要体现在如下方面:

1、解析新浪行情的所有数据:

class QuoteData:    def __init__(self):        self.id = ''        self.rawLine = ''        #sorted with sina interface        self.name = ''        self.openPrice = ''        self.preClose = ''        self.lastPrice = ''        self.highPrice = ''        self.lowPrice = ''        self.buyPrice = ''        self.sellPrice = ''        self.tradeValume = ''        self.tradeTurnover = ''        self.buy1Volume = ''        self.buy1Price = ''        self.buy2Volume = ''        self.buy2Price = ''        self.buy3Volume = ''        self.buy3Price = ''        self.buy4Volume = ''        self.buy4Price = ''        self.buy5Volume = ''        self.buy5Price = ''        self.sell1Volume = ''        self.sell1Price = ''        self.sell2Volume = ''        self.sell2Price = ''        self.sell3Volume = ''        self.sell3Price = ''        self.sell4Volume = ''        self.sell4Price = ''        self.sell5Volume = ''        self.sell5Price = ''        self.date = ''        self.time = ''

2、实现一个新的Infomer,用于将指定的股票行情保存到文件,保存格式为scv,

class QuoteSaveToCSV(QuoteListener):    def __init__(self, stock):        QuoteListener.__init__(self, 'Saver')        self.stockid = stock        self.filename = stock + time.strftime('%Y%m%d.csv',time.localtime(time.time()))          self.outfile = open(self.filename, 'a+')        self.outfile.write(QuoteData.csvHead())        self.outfile.close()    def OnRecvQuote(self, quoteData):        if cmp(self.stockid, quoteData.id) == 0 :            self.outfile = open(self.filename, 'a+')            self.outfile.write(quoteData.toCSVString())            self.outfile.close()

3、增加根据行情价格涨幅和跌幅做声音提醒,行情涨幅可以是多个等级

class QuoteDiffValuesInformer(QuoteInformer):    def __init__(self, stock, lowDiffValues, highDiffVAlues, cmpPrice = '0.0' ):        QuoteInformer.__init__(self, stock, string.atof(cmpPrice))        self.lowDiffValues = lowDiffValues        self.highDiffVAlues = highDiffVAlues        print self.lowDiffValues        print self.highDiffVAlues                 def DoDifference(self, newPrice, lowPrice, highPrice):        diffv = newPrice - self.cmpPrice        level = self.ComputeLevel(diffv)        self.playSound(level)                def ComputeLevel(self, diffPrice):        l = 0        if diffPrice < 0:            for lv in self.lowDiffValues:                if diffPrice > lv:                    return l                l -= 1        else:            for lv in self.highDiffVAlues:                if diffPrice < lv:                    return l                l += 1        return l

4、代码就别贴太多了,说明一下程序入口是怎么使用的吧:

def runNoThread(stockids):    s = QuoteSourceSina(stockids)    #s = QuoteSourceQtimg(stockids)    #s.addListener(QuotePrinter())    #s.addListener(QuoteDifferenceValueInformer('510050', '0.0', '-0.008', '0.005'))    #将510050的行情信息存储到文件,每天一只股票一个文件,    #可以使用excel文件打开,方便查看,也很方便用python读取做相关的研究处理(不过目前还不清楚如何研究)    s.addListener(QuoteSaveToCSV('510050'))    #监听股票行情,第二个参数是跌幅列表,第三个参数是涨幅列表,    #没跨越一个区间将会播放声音提醒,第四个参数0表示基于昨天的闭市价格做比较,可以指定价格做比较    s.addListener(QuoteDiffValuesInformer('510050', [-0.009,-0.019,-0.029], [0.009, 0.019, 0.029], '0.0'))    try:        while True:            s.queryStock()            sleep(3)    except KeyboardInterrupt, e:        print 'StockQuote stop'if __name__ == '__main__':    runNoThread('sh600006,sh510050')

5、已经将代码上传至github,欢迎大家下载。

 https://github.com/jianyou08/PythonStockMd




0 0