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

2019-01-16 17:00:47 浏览数 (1)

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

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

代码语言:javascript复制
pip install numpy -i http://pypi.douban.com/simple

        其实这篇文章并不能告诉大家一个恰到好处且有用的样例。因为之前我分析过,同花顺等分析软件公式存在很多弊端,并不能满足我们复杂的需求。而我目前也没有一个非常准确的模型可以保证盈利。

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

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

代码语言:javascript复制
    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

        然后我们获取当前的均线信息

代码语言:javascript复制
        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]

        然后设置我们筛选条件

代码语言:javascript复制
        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)

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

        当然不否认这个例子举得并不恰当,因为需求简单所以同花顺公式也能完成。

        但是我们有了所有数据后,我们就可以做很多事情。包括同花顺所不具有的“模型回测”功能。

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

        为了补上这些博文,我还将系统重新看了一下。虽然很多地方还不完善,但是一般非特别要求的生产环境还是可以放心使用的。

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

0 人点赞