def get_present_price(self, stockid): stock = stock_data() i = 0 while i < self.repeat_num: try: url = "http://hq.sinajs.cn/list=%s" % (stockid) data = urllib.urlopen(url).read() m = re.match(r'.*="(.*)"', data) data = m.group(1) ary = data.strip().split(",") stock.date = ary[30] stock.open_price = float(ary[1]) stock.high_price = float(ary[4]) stock.close_price = float(ary[3]) stock.low_price = float(ary[5]) stock.volumn = int(ary[8]) break except Exception, ex: print ex.__str__() time.sleep(self.wait_gap) i = i + 1 if i == self.repeat_num: return None
def get_his_day_k(self, stockid, begindate, enddate): result = stock_dataset() result.name = stockid i = 0 while i < self.repeat_num: try: url = "http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?symbol=%s&begin_date=%s&end_date=%s" % (stockid, begindate, enddate) data = urllib.urlopen(url).read() tree = etree.HTML(data) contents = tree.xpath("//control/content") for content in contents: stock = stock_data() stock.date = content.xpath("./@d")[0] stock.open_price = float(content.xpath("./@o")[0]) stock.high_price = float(content.xpath("./@h")[0]) stock.close_price = float(content.xpath("./@c")[0]) stock.low_price = float(content.xpath("./@l")[0]) stock.volumn = int(content.xpath("./@v")[0]) result.data.append(stock) break except Exception, ex: print ex.__str__() time.sleep(self.wait_gap) i = i + 1 if i == self.repeat_num: return None
def get_his_hour_k(self, stockid): result = stock_dataset() result.name = stockid i = 0 while i < self.repeat_num: try: url = "http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=%s&scale=60&ma=no&datalen=1023" % (stockid) data = urllib.urlopen(url).read() data = data[2:-2] ary = data.split("},{") print len(ary) for item in ary: stock = stock_data() m = re.match(r'.*day:"(.*?)"', item) stock.date = m.group(1) m = re.match(r'.*open:"(.*?)"', item) stock.open_price = float(m.group(1)) m = re.match(r'.*high:"(.*?)"', item) stock.high_price = float(m.group(1)) m = re.match(r'.*close:"(.*?)"', item) stock.close_price = float(m.group(1)) m = re.match(r'.*low:"(.*?)"', item) stock.low_price = float(m.group(1)) m = re.match(r'.*volume:"(.*?)"', item) stock.volumn = int(m.group(1)) result.data.append(stock) break except Exception, ex: print ex.__str__() time.sleep(self.wait_gap) i = i + 1 if i == self.repeat_num: return None
def monitor(self, code): data_set = stock_dataset() data_set.load_from_file(code, "../data/" + code) #把今天的数据加入到data_set里 fetcher = stock_fetcher() net = fetcher.get_present_price(code).close_price stock = stock_data() stock.close_price = net # today = datetime.now() - timedelta(days = 2) #周末测试时使用 today = datetime.now() today = today.strftime("%Y-%m-%d") stock.date = today data_set.data.append(stock) turtle_plan3 = turtle() result = turtle_plan3.get_trading_plan3(data_set, today) result["code"] = code f = open("../result/turtle3_result", "r+") line = f.readline() f.close() if line.startswith("#"): result["share"] = 0 result["cost"] = 0 return result arr = line.strip().split("|") result["share"] = arr[5] result["cost"] = arr[6] # if(result["choise"] == 4): #buy # result["share"] = round((money * (1 - DEAL_RATE) / result["close_price"]), 3) # result["money"] = round(money * (1 - DEAL_RATE), 3) # result["profit"] = profit # self.append_result_to_file(filename, result, delim) # elif(result["choise"] == 2): #sell # result["share"] = share # result["money"] = round(result["close_price"] * share * (1 - DEAL_RATE), 3) # result["profit"] = result["money"] - money # self.append_result_to_file(filename, result, delim) return result
class fund_fetcher(object): def __init__(self): return def get_his_day_k(self, fundid, begindate, enddate): raw_result = [] try: begindate_str = datetime.strptime(begindate, "%Y%m%d").strftime("%Y-%m-%d") enddate_str = datetime.strptime(enddate, "%Y%m%d").strftime("%Y-%m-%d") url = "http://fund.eastmoney.com/f10/F10DataApi.aspx?type=lsjz&code=%s&page=1&per=5000&sdate=%s&edate=%s&rt=0.7955276783627965"\ % (fundid, begindate_str, enddate_str) data = urllib.urlopen(url).read() m = re.match(r'.*content:"(.*)"', data) html_data = m.group(1) tree = etree.HTML(html_data) contents = tree.xpath("//tbody/tr") for content in contents: try: tmp = {} date = content.xpath("./td/text()")[0] close_price = float(content.xpath("./td/text()")[1]) acc_close_price = float(content.xpath("./td/text()")[2]) rise_rate = float( content.xpath("./td/text()")[3][:-1]) / 100 buy_status = content.xpath("./td/text()")[4] sell_status = content.xpath("./td/text()")[5] #meta = content.xpath("./td/text()")[6] tmp["date"] = date tmp["close_price"] = close_price tmp["acc_close_price"] = acc_close_price tmp["rise_rate"] = rise_rate tmp["buy_status"] = buy_status tmp["sell_status"] = sell_status #tmp["meta"] = meta raw_result.append(tmp) except Exception, ex: continue except Exception, ex: print ex.__str__() return None raw_result.reverse() for i in range(len(raw_result)): if i != 0: raw_result[i]["acc_close_price"] = raw_result[ i - 1]["acc_close_price"] * (1 + raw_result[i]["rise_rate"]) dataset = stock_dataset() dataset.name = fundid for item in raw_result: stock = stock_data() stock.date = item["date"] stock.close_price = item["acc_close_price"] dataset.data.append(stock) return dataset