码农技术炒股之路——选股策略样例

        有了以前抓取的数据,咱们即可以利用这些数据进行股票分析。(转载请指明出于breaksoftware的csdn博客)python

        为了便于计算,我决定引入numpy库git

pip install numpy -i http://pypi.douban.com/simple

        其实这篇文章并不能告诉你们一个恰到好处且有用的样例。由于以前我分析过,同花顺等分析软件公式存在不少弊端,并不能知足咱们复杂的需求。而我目前也没有一个很是准确的模型能够保证盈利。github

        就举一个简单的例子。只是一种假设:若是30日均线比5日均线高,则不在咱们考虑范围以内。app

        首先咱们获取股票的一个周期内的信息fetch

def _get_average_info(self, share_id, table_name, period = 0):
        stock_conn_manager_obj = stock_conn_manager()
        conn_name = stock_conn_manager_obj.get_conn_name(share_id)
        periods = [5, 10, 20, 30, 60, 120]
        types = ["close_ma", "volume_ma"]
        columns = ["time", "today_close", "today_high", "today_low", "today_open", "yesterday_close", "pchg", "turnover_rate", "volume", "turnover"]
        for type_item in types:
            for period_item in periods:
                column_name = "%s%d" % (type_item, period_item)
                columns.append(column_name)

        extend_str = "order by time desc"
        if period > 0:
            extend_str = "%s limit %d" % (extend_str, period)

        data= fetch_data.get_data(fetch_data.select_db(conn_name, table_name, columns, {}, extend=extend_str))
        infos = []
        for data_item in data:
            info = {}
            for index in range(len(columns)):
                    info[columns[index]] = data_item[index]
            infos.insert(0, info)
        return infos

        而后咱们获取当前的均线信息.net

today_close_ma5_info = self._get_history_data(data, index, 0, "close_ma5")
        today_close_ma10_info = self._get_history_data(data, index, 0, "close_ma10")
        today_close_ma20_info = self._get_history_data(data, index, 0, "close_ma20")
        today_close_ma30_info = self._get_history_data(data, index, 0, "close_ma30")
        today_close_ma60_info = self._get_history_data(data, index, 0, "close_ma60")

        today_close_ma5 = today_close_ma5_info[1]
        today_close_ma10 = today_close_ma10_info[1]
        today_close_ma20 = today_close_ma20_info[1]
        today_close_ma30 = today_close_ma30_info[1]
        today_close_ma60 = today_close_ma60_info[1]

        而后设置咱们筛选条件code

if today_close_ma30 > today_close_ma20 and today_close_ma30 > today_close_ma10 and today_close_ma30 > today_close_ma5:
            return (False, "today(%d) close ma30 is bigger than ma20 ma10 ma5" % index)

        这样咱们就把不符合规则的数据过滤掉了。blog

        固然不否定这个例子举得并不恰当,由于需求简单因此同花顺公式也能完成。ip

        可是咱们有了全部数据后,咱们就能够作不少事情。包括同花顺所不具备的“模型回测”功能。get

        这个项目是去年写的。我让它运行了一个多月,发现系统仍是很是稳定的。后来因为种种缘由,没有及时把相关说明给补上。

        为了补上这些博文,我还将系统从新看了一下。虽然不少地方还不完善,可是通常非特别要求的生产环境仍是能够放心使用的。

        最后附上Git地址供你们把玩:https://github.com/f304646673/scheduler_frame.git。