• akshare量化股票市场情绪指标ARBR


    # https://zhuanlan.zhihu.com/p/61488013/
    
    # 先引入后面可能用到的包(package)
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import akshare as ak
    import talib as ta
    
    '''人气指标(AR)和意愿指标(BR)
    AR指标是通过比较某个周期内开盘价与最高、最低价,来反映市场买卖人气。
    计算公式为:N日AR=(N日内(H-O)之和)/(N日内(O-L)之和)*100。
    BR指标是通过比较一段周期内收盘价在该周期价格波动中的地位,来反映市场买卖意愿程度。
    计算公式为:N日BR=(N日内(H-YC)之和)/N日内(YC-L)之和)*100。
    其中,O 为当日开盘价,H 为当日最高价,L 为当日最低价,YC 为前一交易日的收盘价,N 为设定的时间参数,一般原始参数日设定为 26 日,计算周期可以根据自己的经验或回测结果进行修正。
    
    双方的分界线是 100,100 以上是多方优势,100 以下是空方优势。 
    买入信号:
    BR通常运行在AR上方,一旦BR跌破AR并在AR之下运行时,表明市场开始筑底,视为买进信号;
    BR<40,AR<60: 空方力量较强,但随时可能反转上涨,考虑买进。
    
    卖出信号:
    BR>400,AR>180,多方力量极强,但随时可能反转下跌,考虑卖出;
    BR快速上升,AR并未上升而是小幅下降或横盘,视为卖出信号。
    
    背离信号:
    AR、BR指标的曲线走势与股价K线图上的走势正好相反。
    
    顶背离:
    当股价K线图上的股票走势一峰比一峰高,股价一直向上涨,而AR、BR指标图上的走势却一峰比一峰低,说明出现顶背离,股价短期内将高位反转,是比较强烈的卖出信号。
    
    底背离:
    当股价K线图上的股票走势一底比一底低,股价一直向下跌,而AR、BR指标图上的走势却一底比一底高,说明出现底背离,股价短期内将低位反转,是比较强烈的买入信号。
    '''
    
    # 正常显示画图时出现的中文和负号
    from pylab import mpl
    
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    
    # 引入TA-Lib库
    import talib as ta
    from datetime import datetime, timedelta
    
    index2 = {'上证综指': '000001', '深证成指': '399001',
             '沪深300': '000300', '创业板指': '399006',
             '上证50': '000016', '中证500': '000905',
             '中小板指': '399005', '上证180': '000010'}
    index={'上证综指': '000001'}
    n = 250
    tineperiod=26
    for code in index.values():
        t = datetime.now()
        t0 = t - timedelta(n)
        start = t0.strftime('%Y%m%d')
        end = t.strftime('%Y%m%d')
        index_zh_a_hist_df = ak.index_zh_a_hist(symbol=code, period="daily", start_date=start, end_date=end)
        # print(index_zh_a_hist_df)
        index_zh_a_hist_df.index = pd.to_datetime(index_zh_a_hist_df['日期'])
        df = index_zh_a_hist_df.sort_index()
        df['HO'] = df['最高'] - df['开盘']
        df['OL'] = df['开盘'] - df['最低']
        df['HCY'] = df['最高'] - df['收盘'].shift(1)
        df['CYL'] = df['收盘'].shift(1) - df['最低']
        # 计算AR、BR指标
        df['AR'] = ta.SUM(df.HO, timeperiod=tineperiod) / ta.SUM(df.OL, timeperiod=tineperiod) * 100
        df['BR'] = ta.SUM(df.HCY, timeperiod=tineperiod) / ta.SUM(df.CYL, timeperiod=tineperiod) * 100
        # print(df['AR'].values[tineperiod-1:])
        # print(df['BR'].values[tineperiod-1:])
        for i in df['AR'].values[tineperiod-1:]:
            for j in df['BR'].values[tineperiod-1:]:
                if i<=100 and j<=100:
                    print('空方优势')
                    if 60>i and i>j and j<40:
                        print('随时可能反转上涨,考虑买进')
                elif i>=100 and j>=100:
                    print('多方优势')
                    if 180 < i and i < j and j > 400:
                        print('可能反转下跌,考虑卖出')
        result= df[['收盘', 'AR', 'BR']].dropna()
        result['收盘'].plot(color='g', figsize=(14, 5))
        plt.xlabel('')
        plt.title(code + '价格走势', fontsize=15)
        df[['AR', 'BR']].plot(figsize=(14, 5))
        plt.xlabel('')
        plt.show()
    
  • 相关阅读:
    三国杀三字经
    window.open参数表
    捕获FormRequest安全错误的类
    SqlServer之Convert 函数应用格式化日期
    数据库区分大小写的问题
    时间字符串的比较
    char码值对应列表大全
    web.config 连接字符串 加密解密,代码方式
    关于app_offline.htm的用法
    关闭窗口的时候弹出确认对话框
  • 原文地址:https://www.cnblogs.com/xingnie/p/16123257.html
Copyright © 2020-2023  润新知