用户从键盘上输入股票30天的收盘价,程序计算并显示滑动平均价(每行显示五天滑动平均价)。说明:当天的滑动平均价为前五天收盘价的平均值,前四天的滑动平均价按当天收盘价计算。
时间: 2023-06-04 09:02:28 浏览: 194
这是一个编程问题,我可以回答。以下是一个可能的解法(使用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')
```
注意,以上代码只是一种解法,可能还有其他更好的方法。如果您有更好的解法,欢迎分享。
相关问题
1.建一个Python 脚本,脚本命名为“专业班级+姓名.py”,例如:“经济2201刘好.py"。 2.编写函数,读取某只股票文件“stock.csv”,实现获取股票文件收盘价“close”数据的功能,并输出收盘价的个数。 3.编写2个函数,使用循环结构分别实现收盘价最大值和平均值的计算。 4.获取股票文件日期“trade date”的数据,并将“日期”作为“键”,“收盘 价”作为“值”存储为一个stock 字典类型。 5.计算stock字典收盘价的最高值,并输出最高值的日期。 6.编写函数,实现滑动算数平均值的计算,并分别计算滑动窗口大小为5、10和20 的滑动算数平均值。7.编写函数,将滑动窗口大小为5、10和20的滑动算数平均值分别写入不同的文件
好的,以下是 Python 代码实现:
```python
import csv
# 获取股票收盘价数据并输出个数
def get_close_price():
with open('stock.csv', 'r') as f:
reader = csv.DictReader(f)
close_prices = []
for row in reader:
close_prices.append(float(row['close']))
print(f"收盘价数据个数为:{len(close_prices)}")
return close_prices
# 计算收盘价的最大值
def max_close_price():
close_prices = get_close_price()
max_price = close_prices[0]
for price in close_prices:
if price > max_price:
max_price = price
print(f"最大收盘价为:{max_price}")
# 计算收盘价的平均值
def avg_close_price():
close_prices = get_close_price()
sum_price = 0
for price in close_prices:
sum_price += price
avg_price = sum_price / len(close_prices)
print(f"平均收盘价为:{avg_price}")
# 获取股票日期和收盘价数据并存储为字典类型
def get_stock_dict():
with open('stock.csv', 'r') as f:
reader = csv.DictReader(f)
stock_dict = {}
for row in reader:
stock_dict[row['trade_date']] = float(row['close'])
return stock_dict
# 计算收盘价的最高值及其对应的日期
def max_close_price_date():
stock_dict = get_stock_dict()
max_price = max(stock_dict.values())
for date, price in stock_dict.items():
if price == max_price:
print(f"最高收盘价日期为:{date}")
break
# 计算滑动算数平均值并写入文件
def sliding_average(window_size):
close_prices = get_close_price()
with open(f'sliding_average_{window_size}.txt', 'w') as f:
for i in range(len(close_prices)-window_size+1):
avg_price = sum(close_prices[i:i+window_size]) / window_size
f.write(f"滑动窗口为{window_size}的平均收盘价为:{avg_price:.2f}\n")
# 测试
if __name__ == '__main__':
max_close_price()
avg_close_price()
max_close_price_date()
sliding_average(5)
sliding_average(10)
sliding_average(20)
```
注意:由于我没有训练过 ChitGPT,代码可能存在语法错误,请以代码的思路为准。
使用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`的元素个数,并除以序列的长度,得到一个概率值。
阅读全文