Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
import wx
import wx.lib.plot as plot
import os
import types
import csv
wx.SetDefaultPyEncoding("iso-8859-15")
pfad="C:\\boerse\\"
dateiname='AIX.DE'
listenname='tecdax'
class Fenster(wx.Frame):
def __init__(
self, parent = None, id = -1, title = "CHART", size = wx.Size(500, 500)
):
wx.Frame.__init__(self, parent, id, title, size = size)
panel = wx.Panel(self)
vbox_main = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(vbox_main)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox_main.Add(vbox, 1, wx.ALL | wx.EXPAND, 5)
self.client = plot.PlotCanvas(panel)
vbox.Add(self.client, 1, wx.EXPAND | wx.ALL, 5)
"""
# Einlesen der daten ("," ist bei csv der Default-Delimiter)
content = csv.reader(open("%s%s\\%s.csv"%(pfad,listenname,dateiname), 'r'))
# In der ersten Zeile stehen die Spaltennamen, die speichern wir uns
keys = content.next()
data = []
for line in content:
data.append(dict(zip(keys, line)))
"""
data=[{'Volume': '528700', 'Adj Close': '8.81', 'High': '8.93', 'Low': '8.68', 'Date': '2008-02-29', 'Close': '8.81', 'Open': '8.84'},
{'Volume': '747500', 'Adj Close': '8.96', 'High': '9.01', 'Low': '8.62', 'Date': '2008-02-28', 'Close': '8.96', 'Open': '8.94'},
{'Volume': '611800', 'Adj Close': '9.03', 'High': '9.32', 'Low': '8.82', 'Date': '2008-02-27', 'Close': '9.03', 'Open': '9.29'},
{'Volume': '515900', 'Adj Close': '9.23', 'High': '9.33', 'Low': '9.07', 'Date': '2008-02-26', 'Close': '9.23', 'Open': '9.07'},
{'Volume': '624100', 'Adj Close': '9.03', 'High': '9.05', 'Low': '8.83', 'Date': '2008-02-25', 'Close': '9.03', 'Open': '8.94'},
]
cord_open=()
cord_low=()
cord_high=()
cord_close=()
linien_key={'Open':cord_open,'Low':cord_low,'High':cord_high,'Close':cord_close}
i=0
liste=[]
tmp=()
for keys in data:
tmp=(i,round(float(data[i]['Open']),2))
liste.append(tmp)
i=i+1
cord_open=tuple(liste)
i=0
liste=[]
tmp=()
for keys in data:
tmp=(i,round(float(data[i]['Low']),2))
liste.append(tmp)
i=i+1
cord_low=tuple(liste)
i=0
liste=[]
tmp=()
for keys in data:
tmp=(i,round(float(data[i]['High']),2))
liste.append(tmp)
i=i+1
cord_high=tuple(liste)
i=0
liste=[]
tmp=()
for keys in data:
tmp=(i,round(float(data[i]['Close']),2))
liste.append(tmp)
i=i+1
cord_close=tuple(liste)
lines = (
plot.PolyLine(
cord_open, colour = "green", legend = u" Open", width = 1
),
plot.PolyLine(
cord_low, colour = "blue", legend = u" Low", width = 1
),
plot.PolyLine(
cord_high, colour = "cyan", legend = u" High", width = 1
),
plot.PolyLine(
cord_close, colour = "red", legend = u" Close", width = 1
),
)
graphics = plot.PlotGraphics(
objects = lines, title = u"CHART %s"%dateiname, xLabel = u"Zeit",
yLabel = u"KURS"
)
self.client.SetFont(wx.Font(10,wx.SWISS,wx.NORMAL,wx.NORMAL))
self.client.SetFontSizeAxis(10)
self.client.SetFontSizeLegend(7)
self.client.SetEnableLegend(True)
self.client.SetXSpec('auto')
self.client.SetYSpec('auto')
self.client.SetEnableGrid(True)
##Activate Labels
self.client.SetEnablePointLabel(True)
self.client.Draw(graphics)
##show Statusbar for Mouse Position
self.CreateStatusBar(1)
##Functions from plot.py
def DrawPointLabel(self, dc, mDataDict):
dc.SetPen(wx.Pen(wx.BLACK))
dc.SetBrush(wx.Brush( wx.BLACK, wx.SOLID ) )
sx, sy = mDataDict["scaledXY"] #scaled x,y of closest point
dc.DrawRectangle( sx-5,sy-5, 10, 10) #10by10 square centered on point
px,py = mDataDict["pointXY"]
cNum = mDataDict["curveNum"]
pntIn = mDataDict["pIndex"]
legend = mDataDict["legend"]
#make a string to display
s = "Crv# %i, '%s', Pt. (%.2f,%.2f), PtInd %i" %(cNum, legend, px, py, pntIn)
dc.DrawText(s, sx , sy+1)
def main():
app = wx.PySimpleApp()
f = Fenster()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()