Source code for cointrader.chart
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import io
import pandas
import datetime
from stockstats import StockDataFrame
[docs]def chart2csv(chart):
out = []
header = "date,amount,close,high,low,open,volume"
out.append(header)
for cs in chart:
out.append("{},{},{},{},{},{},{}".format(cs["date"],
"", cs["close"], cs["high"],
cs["low"], cs["open"], cs["volume"]))
return u"\n".join(out)
[docs]def search_chartdata_by_date(data, dt, le=True):
ts = (dt - datetime.datetime(1970, 1, 1)).total_seconds()
chart_item = data[0]
for d in data:
if d["date"] <= ts:
chart_item = d
else:
break
return chart_item
[docs]class Chart(object):
"""Docstring for Chart. """
def __init__(self, data, start, end):
"""TODO: to be defined1.
:data: TODO
"""
self._data = data
self._start = start
self._end = end
self._stock = StockDataFrame.retype(pandas.read_csv(io.StringIO(chart2csv(data))))
@property
def data(self):
return self._data
[docs] def get_first_point(self):
return search_chartdata_by_date(self.data, self._start)
[docs] def get_last_point(self):
return search_chartdata_by_date(self.data, self._end)
[docs] def values(self, which="close"):
return [(v["date"], v[which]) for v in self._data]
[docs] def macdh(self):
macdh = self._stock.get("macdh")
return macdh.tolist()
[docs] def sma(self, window=10):
sma = self._stock.get("close_{}_sma".format(window))
return sma.tolist()