py获取前端的参数_股票实时行情获取及特征计算

291bcd28bd748ad76d8386c384625b79.png

这篇文章介绍一下实时行情的获取。对于一个中线策略,如果能够获取到实时行情然后尾盘买入,我觉得这个策略成功率盈利能力都会更高一些(比开盘买入好吧)。因此我花了点时间研究了下实时行情获取及计算实时特征。

首先可以利用easyquotation包获取实时行情,包的github地址:

https://github.com/shidenggui/easyquotation​github.com

安装方法:

  1. 利用pip安装:pip install easyquotation
  2. 源码安装:直接把github源码下下来,然后终端运行python setup.py install。我是源码安装的,然后windows安装可能会报错,需要把setup.py第一行的”utf8”改成”utf-8”,如下图。

4fe38a82033b6c94dc74354d720c975a.png

实时行情获取:

实时行情是从新浪或腾讯接口获取的,腾讯的数据会全一些,推荐用腾讯接口。

quotation = easyquotation.use('tencent') # 新浪 ['sina'] 腾讯 ['tencent', 'qq']
tmp_dict = quotation.market_snapshot(prefix=True) # prefix 参数指定返回的行情字典中的股票代码 key 是否带 sz/sh 前缀

运行完上述代码,tmp_dict是一个字典(包含所有股票数据,延时应该1秒不到),数据格式如下图:

3e44210f8a69cc057800ab57241f22c6.png

每天在14.50左右获取所有股票的数据,然后计算我们模型的特征。14.50的交易价格可以近似为当日收盘价,成交量的话可以乘以1.05当做当日成交量。其他一些特征可以自己考虑如何近似。

下面放一个计算20日收盘价均线的代码给大家参考:(整个代码可以不到1分钟就能提取完,如果特征太多的话会慢一些,可以把需要的历史数据提前保存在一起减少读取数据时间)

def handle_history(base_path, tmp_dict):

    company_info = pd.read_csv(os.path.join(base_path, 'company_info.csv'), encoding='gbk')
    company_info['is_ST'] = company_info['name'].apply(JudgeST)
    col = ['trade_date', 'ts_code', 'open', 'high', 'low', 'close',
           'change', 'pct_chg', 'vol', 'amount', 'turnover_rate', 'volume_ratio']
    df_list = []
    features = []
    ts_codes = []
    for tmp_name in tqdm(company_info['ts_code']):
        file_path = os.path.join(base_path, 'OldData', tmp_name + '_NormalData.csv')
        df = pd.read_csv(file_path)
        df = df.sort_values('trade_date', ascending=True).reset_index(drop=True)
        
        try:
            if 'SH' in tmp_name:
                stock_info = tmp_dict['sh' + tmp_name[:6]]
            elif 'SZ' in tmp_name:
                stock_info = tmp_dict['sz' + tmp_name[:6]]
            else:
                print(tmp_name)
        except:
            # 可能有一些停牌企业
            continue
            
        feature = get_feature(stock_info, df)
        features.append(feature)
        ts_codes.append(tmp_name)
        # break
    
return features, ts_codes

def get_feature(stock_info, df):
    """
    stock_info:字典形式输入
    df:股票历史信息 dataframe
    """
    feature = []
    
    # 计算20日收盘价 ma
    tmp_list = list(df.iloc[-19:]['close'])
    tmp_list.append(stock_info['now'])
    feature.append(np.mean(tmp_list))
    return feature

以下是每日涨跌停数量的统计:(测了下,和tushare提供的数据差别有点大,暂时还没时间找到原因)

# 涨跌停统计
def count_limit(tmp_dict):
    up = 0
    down = 0
    for tmp_keys in tqdm(tmp_dict.keys()):
        stock_info = tmp_dict[tmp_keys]
        if 'ST' in stock_info['name']:
            if stock_info['now'] >= round(stock_info['close'] * 1.05, 2):
                up += 1
            elif stock_info['now'] <= round(stock_info['close'] * 0.95, 2):
                down += 1
        else:
            if stock_info['now'] >= round(stock_info['close'] * 1.1, 2):
                up += 1
            elif stock_info['now'] <= round(stock_info['close'] * 0.9, 2):
                down += 1            
    return up, down

完整代码github:

https://github.com/wbbhcb/stock_market/blob/master/get_realtime_feature.py​github.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值