python +baostock +talib 计算移动 平均 ma

代码在这里

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Jun 20 14:12:58 2025

@author: lg
"""
import baostock as bs
import pandas as pd
import talib
import numpy as np

import talib
# import yfinance as yf  # 用于获取股票数据
import matplotlib.pyplot as plt

def get_data(code ,start,end):
    #### 登陆系统 ####

    # 显示登陆返回信息
    # print('login respond error_code:'+lg.error_code)
    # print('login respond  error_msg:'+lg.error_msg)
    
    #### 获取沪深A股历史K线数据 ####
    # 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
    # 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
    # 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
    rs = bs.query_history_k_data_plus(code,
        "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
        start_date=start, end_date=end,
        frequency="d", adjustflag="3")
    # print('query_history_k_data_plus respond error_code:'+rs.error_code)
    # print('query_history_k_data_plus respond  error_msg:'+rs.error_msg)
    
    #### 打印结果集 ####
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)
    
    #### 结果集输出到csv文件 ####   
    # result.to_csv("D:\\history_A_stock_k_data.csv", index=False)
    # print(result)

    #### 登出系统 ####
    
    
    return result


def turn_df_float(df):
    
    df1=df[['open', 'high', 'low', 'close', 'preclose', 'volume',
           'amount', 'adjustflag', 'turn', 'tradestatus', 'pctChg', 'isST']]
    
    df2=df1.astype(float)
    
    return df2


code_list= ['sh.600992',
 'sh.600993',
 'sh.600995',
 'sh.600996',
 'sh.600997',
 'sh.600998',
 'sh.600999',
 'sh.601000',
 'sh.601001',
 'sh.601002',
 'sh.601003',
 'sh.601005']



start='2021-01-01'

end='2025-05-21'




data0= this_data=get_data('sh.601002',start,end)

data=turn_df_float(data0)

close = data['close'].values
high = data['high'].values
low = data['low'].values
volume = data['volume'].values

# 简单移动平均线(SMA)
sma_5 = talib.SMA(close, timeperiod=5)
sma_20 = talib.SMA(close, timeperiod=20)

# 指数移动平均线(EMA)
ema_12 = talib.EMA(close, timeperiod=12)
ema_26 = talib.EMA(close, timeperiod=26)

# 绘制均线与价格对比
plt.figure(figsize=(12, 6))
plt.plot(data.index, close, label='Close Price')
plt.plot(data.index, sma_5, label='5-day SMA', color='red')
plt.plot(data.index, sma_20, label='20-day SMA', color='green')
plt.legend()
plt.title('AAPL Price with Moving Averages')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值