def _get_xy(self, code, starti, endi, dates): ysl = [] xsl = [] labelsl = [] (indexes, dates, open, high, low, close, volume) = self.data[code] dl = indexes.keys() dl.sort() x = dl[starti:endi+1] x = df.strl2datel(x) normal_lines = self.normal_lines[code] if self.base_lines.has_key(code): base_lines = self.base_lines[code] if self.trend_lines.has_key(code): trend_lines = self.trend_lines[code] pnf_joints = self.pnf_joints[code] pnf_indexes = self.pnf_indexes[code] for k in normal_lines.keys(): ysl.append(normal_lines[k][starti:endi+1]) labelsl.append(k) xsl.append(x) pnf_starti = -1 pnf_endi = -1 j=0 for i in pnf_indexes: if i >= starti and pnf_starti < 0: pnf_starti = j if i > endi and pnf_endi < 0: pnf_endi = j-1 break if i < 0: pnf_endi = j-1 break j += 1 ysl.append(pnf_joints[pnf_starti:pnf_endi]) pnf_indexes = pnf_indexes[pnf_starti:pnf_endi] pnf_dates = self._indexl2datel(pnf_indexes, dl) xsl.append(pnf_dates) labelsl.append("pnf") ysl.append(close[starti:endi+1]) xsl.append(x) labelsl.append("close") return xsl, ysl, labelsl
def _indexl2datel(self, indexl, datel): datestrl = [] for i in indexl: datestrl.append(datel[i]) return df.strl2datel(datestrl)