美文网首页股票
行情预测系统(3)爬虫的追根朔源

行情预测系统(3)爬虫的追根朔源

作者: prophet__ | 来源:发表于2020-04-07 23:18 被阅读0次

我这两天一直在看一些github上的交易系统相关项目,里面一般都有包含回测的部分。我仔细地看了一圈关于构建金融交易系统的信息获取部分,有一个项目QUANTAXIS是值得推荐的,它囊括了很多的信息获取模块,同时它也是码云和开源中国评选的百大项目之一。但是这个项目比较庞大,不太适合新手就上手看。

https://github.com/LightingFx/hs300_stock_predict
还有一个比较简单的示例,是使用tushare的,他也构建了一个LSTM神经网络进行一个简单的预测,但是它把获取数据写成了一个文件,这样看起来比较清楚一点。

tushare确实是现在比较流行使用的一个量化数据库,但是它从原来的tushare变成了tushare.pro之后,有一些增加的功能需要积分才能开权限,就没有那么方便了,而且上面的数据其实并不是很全。

我从QUANTAXIS里,找到了一个很全的数据抓取模块,它从十几个数据源里抓取了数据再进行分级的分析。

作为一个自动化的系统,数据肯定是自动获取,自动分析的了,但是市面上大部分的数据其实都是不太全的,每一个地方的api也不太一样,最好的方法其实就是使用上面这个开源软件。

如果是我个人使用的话,因为我主要是需要黄金跟白银还有数字货币这块的数据,通达信的接口和币安的接口就可以满足我的需求了。

通达信的接口

通达信使用的库叫做pytdx,这是它的官方文档可以去搜一下。

划重点!!这里的所有数据都是免费的!!!

pytdx里有两种行情可以获取,一种是沪深的股票,只要输入市场(深圳是0 上海是1),加上股票的代码就可以获取。

from pytdx.hq import TdxHq_API
def get_hushen_market_quotations(stock_id):
    # 深圳是0 上海是1
    if (stock_id[0] == '0'):
        stock_market = 0
    else:
        stock_market = 1
    print(stock_market)
    start_num = 0
    all_data = pd.DataFrame()
    api = TdxHq_API()
    if api.connect('119.147.212.81', 7709):
        # ... same codes...
        while True:
            data = api.to_df(api.get_security_bars(9, stock_market, stock_id, start_num, 800))  # 返回DataFrame
            all_data = all_data.append(data,ignore_index=True,sort=True)
            start_num += 800
            print(data)
            if len(data) == 0:
                break
        api.disconnect()
        all_data.sort_values(ascending=0, by=['datetime'], inplace=True)
        all_data.set_index(keys='datetime',inplace=True)
        all_data.to_csv(stock_id+'.csv')
        print(all_data)

上面这个就是获取沪深行情的代码了,直接调用这个函数,输入股票代码就可以了。

除了股票的行情之外,通达信还提供一些额外的行情(ex_hq)

这里面使用到的函数比较多,首先通过一个api.get_markets()查一下这个行情可以包括哪些市场,然后再通过api.get_instrument_quote_list(market=6,category=12)来查询对应市场的具体品种,这里有一个api.to_df可以用来转换成dataframe这样更直观。
这里有个坑,就是文档里面那个market的标号已经是过时的了,可以重新通过get_market获取,这是暂时最新的。

下面贴一下示例代码,这个代码里包含了链接端口+容错的操作,可以看一下。

def get_exhq_market_quotations():
    ex_api = TdxExHq_API(auto_retry=True, raise_exception=False)
    while True:
        try:
            is_tdx_ex_connect = ex_api.connect('106.14.95.149', 7727)
        except Exception as e:
            print('time out to connect to pytdx')
            print(e)
            sleep(3)
            continue
        if is_tdx_ex_connect is not False:  # 失败了返回False,成功了返回地址
            print('connect to pytdx extend api successful')
            # df = ex_api.to_df(ex_api.get_markets())
            df = ex_api.to_df(ex_api.get_instrument_quote_list(30,3))
            # df = ex_api.to_df(ex_api.get_instrument_info(0,1000))
            print(df)
            break
        else:
            sleep(3)
            continue
        pass

我们来看一下通过get_instrument_quote_list获取的数据,这是上期所的所有品种,我们拉到黄金这里,正常的就是黄金期货的行情,下面的AUL8代表队是期货主连,AUL9代表的是黄金指数,其他品种的行情也都是这样的。

获取k线数据就使用get_instrument_bars这个函数来获取行情就可以了,下面是获取的结果。

AUL8的k线历史数据

这样就可以通过通达信的接口来获取基本上所有的数据了(除了数字货币)。

数字货币通过ccxt获取,方法也非常的简单,直接去git上查一下就好了,这里就不再多讲了。

结语

到这里的话,所有数据的获取基本上就都可以在线实时更新和分析了,接下来就是要建立一个储存和配置系统了。

相关文章

网友评论

    本文标题:行情预测系统(3)爬虫的追根朔源

    本文链接:https://www.haomeiwen.com/subject/mmemphtx.html