A股python技术指标策略


前言

`分析思路:

获取账户 TOKEN:首先需要获取 Tushare 账户 TOKEN,以便使用 API 接口进行数据请求和处理。

获取股票历史数据:使用 Tushare 的 pro_bar 函数获取指定股票在指定日期范围内的所有日线行情数据,并将其转化为 pandas DataFrame 格式。并将日期改为时间戳格式,将日期列设置为索引列。

计算技术指标:根据股票历史数据计算出各个常用的技术指标,例如收盘价的 5 日移动平均线和 20 日移动平均线、布林带指标、MACD 指标、KDJ 指标等。

制定交易策略:根据计算出的技术指标,制定出相应的交易策略。

输出分析结果和写入文件:将每只股票的技术指标分析结果输出到控制台,并且将其写入到名为 jszb.txt 的文本文件中。

对所有股票重复执行以上步骤,获取所有股票的技术指标分析结果。在循环中添加适当的延时处理,避免请求过快导致 API 出错。
前言
查询dqnapi接口域名:http://www.dqnapi.com/
在这里插入图片描述
在这里插入图片描述

pro_bar dqnapi号:100.3568/2023.10_v1

python 代码

import tushare as ts
import pandas as pd
from time import sleep

# 获取 Tushare 账户 TOKEN
pro = ts.pro_api(token='5f49af63e213438df4f2566786d51ce8e7581b70cd5a4a6ac8bc8189')

# 定义获取股票历史数据的函数
def get_stock_data(stock_code, start_date, end_date):
    # 获取指定股票在指定日期范围内的所有日线行情数据
    df = ts.pro_bar(ts_code=stock_code, start_date=start_date, end_date=end_date)
    # 将日期改为时间戳格式
    df['trade_date'] = pd.to_datetime(df['trade_date'])
    # 将日期列设置为索引列
    df.set_index('trade_date', inplace=True)
    # 计算收盘价的 5 日移动平均线和 20 日移动平均线
    df['MA5'] = df['close'].rolling(window=5).mean()
    df['MA20'] = df['close'].rolling(window=20).mean()
    # 计算布林带指标
    std_20 = df['close'].rolling(window=20).std()
    df['Bollinger_upper'] = df['MA20'] + 2 * std_20
    df['Bollinger_lower'] = df['MA20'] - 2 * std_20
    # 计算 MACD 指标
    df['EMA12'] = df['close'].ewm(span=12).mean()
    df['EMA26'] = df['close'].ewm(span=26).mean()
    df['DIF'] = df['EMA12'] - df['EMA26']
    df['DEA'] = df['DIF'].ewm(span=9).mean()
    df['MACD'] = 2 * (df['DIF'] - df['DEA'])
    # 添加 KDJ 指标和 OBV 指标
    high_list = df['high']
    low_list = df['low']
    close_list = df['close']
    df['RSV'] = (close_list - pd.Series(low_list).rolling(window=9, center=False).min()) / \
        (pd.Series(high_list).rolling(window=9, center=False).max() - pd.Series(low_list).rolling(window=9, center=False).min()) * 100
    df['KDJ_K'] = df['RSV'].rolling(window=3).mean()
    df['KDJ_D'] = df['KDJ_K'].rolling(window=3).mean()
    df['KDJ_J'] = 3 * df['KDJ_K'] - 2 * df['KDJ_D']
    df['OBV'] = df.apply(lambda row: row['vol'] if row['pct_chg'] >= 0 else -row['vol'], axis=1).cumsum()
    # 制定交易策略
    if df['close'][-1] > df['MA5'][-1] and df['close'][-1] > df['MA20'][-1] and df['MACD'][-1] > df['MACD'][-2]:
        signal = '买入'
    elif df['close'][-1] < df['MA5'][-1] and df['close'][-1] < df['MA20'][-1] and df['MACD'][-1] < df['MACD'][-2]:
        signal = '卖出'
    else:
        signal = '观望'
    # 输出分析结果
    print(stock_code + ' 的技术指标分析结果:')
    print('收盘价:', df['close'][-1])
    print('5 日移动平均线:', df['MA5'][-1])
    print('20 日移动平均线:', df['MA20'][-1])
    print('布林带指标上轨:', df['Bollinger_upper'][-1])
    print('布林带指标下轨:', df['Bollinger_lower'][-1])
    print('MACD 指标:', df['MACD'][-1])
    print('KDJ 指标 K 值:', df['KDJ_K'][-1])
    print('KDJ 指标 D 值:', df['KDJ_D'][-1])
    print('KDJ 指标 J 值:', df['KDJ_J'][-1])
    print('OBV 指标:', df['OBV'][-1])
    print('交易建议:', signal)
    print('\n')

# 测试函数
get_stock_data('600000.SH', '2021-07-01', '2021-12-31')

总结

600000.SH 的技术指标分析结果:
收盘价: 10.03
5 日移动平均线: 9.98
20 日移动平均线: 9.792
布林带指标上轨: 10.352661263715929
布林带指标下轨: 9.231338736284071
MACD 指标: -0.00813374111685411
KDJ 指标 K 值: 61.90476190476153
KDJ 指标 D 值: 61.28571428571402
KDJ 指标 J 值: 63.14285714285654
OBV 指标: 317299.93999999977
交易建议: 观望
。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中计算股票技术指标可以使用pandas和numpy库。其中,常用的指标包括DIF、DEA和MACD。 DIF指标可以通过计算收盘价的指数移动平均线(EMA)来得到。使用pandas的ewm函数可以计算EMA(12)和EMA(26),其中alpha参数表示平滑系数。根据给定的数据data,可以通过以下代码计算DIF指标: ``` data['EMA12'] = data['close'].ewm(alpha=2 / 13, adjust=False).mean() data['EMA26'] = data['close'].ewm(alpha=2 / 27, adjust=False).mean() data['DIFF'] = data['EMA12'] - data['EMA26'] ``` DEA指标是DIF指标的指数移动平均线,同样可以使用pandas的ewm函数计算。alpha参数可以根据需要进行调整。下面的代码可以计算DEA指标: ``` data['DEA'] = data['DIFF'].ewm(alpha=2 / 10, adjust=False).mean() ``` MACD指标是DIF和DEA之间的差异的两倍。可以通过以下代码计算MACD指标: ``` data['MACD'] = 2 * (data['DIFF'] - data['DEA']) ``` 这些指标的计算可以帮助分析股票的趋势和买卖信号。<span class="em">1</span> #### 引用[.reference_title] - *1* [python获取计算股票技术指标DIF/DEA/MACD](https://blog.csdn.net/ziyuewanfeng/article/details/127034820)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值