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
Exemple #4
0
    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
Exemple #5
0
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