用户从键盘上输入股票30天的收盘价,程序计算并显示滑动平均价(每行显示五天滑动平均价)。说明:当天的滑动平均价为前五天收盘价的平均值,前四天的滑动平均价按当天收盘价计算。
时间: 2023-06-04 17:02:28 浏览: 61
这是一个编程问题,我可以回答。以下是一个可能的解法(使用Python语言):
```python
prices = [] # 存储股票30天的收盘价
for i in range(30):
price = float(input("请输入第%d天的收盘价:" % (i+1)))
prices.append(price)
averages = [] # 存储每天的滑动平均价
for i in range(30):
if i < 4:
average = sum(prices[:i+1]) / (i+1)
else:
average = sum(prices[i-4:i+1]) / 5
averages.append(average)
for i in range(30):
if i % 5 == 0:
print() # 每5天换行
print("%.2f" % averages[i], end='\t')
```
注意,以上代码只是一种解法,可能还有其他更好的方法。如果您有更好的解法,欢迎分享。
相关问题
使用tushare获取某只股票数据,计算半年内每日120日平均线,并计算半年内每日收盘价小于每日120平均线的概率,效率最高代码
以下是使用Tushare库和Pandas库实现的代码,可以计算半年内每日120日平均线,并计算半年内每日收盘价小于每日120平均线的概率:
```python
import tushare as ts
import pandas as pd
import numpy as np
# 获取股票数据
code = '股票代码'
start_date = '半年前日期'
end_date = '截止日期'
df = ts.get_k_data(code, start=start_date, end=end_date)
# 计算120日平均线
ma_120 = df['close'].rolling(window=120).mean()
# 计算收盘价小于120日平均线的概率
below_ma_120 = (df['close'] < ma_120).sum() / len(df)
print('收盘价小于120日平均线的概率为:{:.2%}'.format(below_ma_120))
```
代码说明:
1. 首先使用Tushare库获取指定股票在半年内的历史数据,其中`code`为股票代码,`start_date`为半年前的日期,`end_date`为截止日期。
2. 然后使用Pandas库中的rolling函数计算每日120日平均线,即在`df['close']`中计算滑动窗口大小为120的平均值,得到一个新的序列`ma_120`。
3. 最后计算收盘价小于120日平均线的概率,即统计`df['close']`中小于`ma_120`的元素个数,并除以序列的长度,得到一个概率值。
用Pandas读取MySQL数据库中某只股票100天的日交易数据,将查询结果返回DataFrame里的数据,直接保存到Excel文件,并绘制日收盘价格走势、5天移动平均线、10天移动平均线。
首先需要安装pandas和mysql-connector-python包。
读取MySQL数据库中某只股票100天的日交易数据可以使用如下代码:
```python
import pandas as pd
import mysql.connector
# 建立数据库连接
conn = mysql.connector.connect(host='localhost', port=3306, user='root', password='password', database='stock')
# 从数据库中读取数据
sql = "SELECT * FROM stock_data WHERE stock_code='000001' ORDER BY trade_date DESC LIMIT 100"
df = pd.read_sql(sql, con=conn)
# 关闭数据库连接
conn.close()
```
这里假设数据库名为`stock`,表名为`stock_data`,股票代码为`000001`,并且数据库用户名为`root`,密码为`password`。`LIMIT 100`表示读取最近的100天的数据,`ORDER BY trade_date DESC`表示按照交易日期倒序排列。
接下来将查询结果返回DataFrame里的数据,并直接保存到Excel文件:
```python
# 将查询结果保存到Excel文件
df.to_excel('stock_data.xlsx', index=False)
```
其中`index=False`表示不保存行索引。
最后绘制日收盘价格走势、5天移动平均线、10天移动平均线:
```python
import matplotlib.pyplot as plt
# 绘制日收盘价格走势
plt.plot(df['trade_date'], df['close'], label='Close')
# 计算5天移动平均线和10天移动平均线
df['ma5'] = df['close'].rolling(5).mean()
df['ma10'] = df['close'].rolling(10).mean()
# 绘制5天移动平均线和10天移动平均线
plt.plot(df['trade_date'], df['ma5'], label='MA5')
plt.plot(df['trade_date'], df['ma10'], label='MA10')
# 设置图例和标题
plt.legend()
plt.title('Stock Data')
# 显示图形
plt.show()
```
其中`rolling`函数可以计算滑动窗口下的平均值,这里分别计算了5天移动平均线和10天移动平均线。最后使用`plt`模块绘制图形,包括日收盘价格走势、5天移动平均线和10天移动平均线,并设置图例和标题,最后调用`show()`方法显示图形。