用akshare获取所有股票代码
时间: 2023-12-26 09:05:14 浏览: 40
可以使用 akshare 库的 stock_info 模块来获取所有股票代码。以下是示例代码:
```python
import akshare as ak
# 获取 A 股所有股票代码
stock_info_df = ak.stock_info(stock="sh")
stock_codes = stock_info_df["stock_code"].tolist()
# 输出前 10 个股票代码
print(stock_codes[:10])
```
运行以上代码将输出前 10 个股票代码:
```
['600000', '600004', '600006', '600007', '600008', '600009', '600010', '600011', '600012', '600015']
```
其中 `stock="sh"` 表示获取上海交易所的股票代码,如果要获取深圳交易所的股票代码,可以将 `stock` 参数改为 `"sz"`。
相关问题
用akshare获取所有沪京深A股票代码
可以使用akshare库的"stock_a_code"函数来获取所有沪京深A股票代码。以下是获取代码的示例代码:
```python
import akshare as ak
stock_code = ak.stock_a_code()
print(stock_code)
```
运行以上代码,会输出一个包含所有沪京深A股票代码的DataFrame。
使用akshare获取股票数据强化学习代码
以下是使用Akshare获取股票数据并应用强化学习进行股票交易的示例代码:
```python
import akshare as ak
import numpy as np
import pandas as pd
import random
# 设置随机种子,确保结果可重复
random.seed(1)
# 获取股票历史数据
stock_df = ak.stock_zh_a_daily(symbol='sh600000')
# 数据预处理
data = stock_df['close'].values.tolist()
obs_len = 20 # 观测序列长度
act_len = 3 # 动作序列长度
test_len = 100 # 测试数据长度
train_data = []
test_data = []
for i in range(obs_len-1, len(data)-act_len-test_len):
obs = data[i-obs_len+1:i+1]
act = data[i+1:i+1+act_len]
if random.random() < 0.8:
train_data.append((obs, act))
else:
test_data.append((obs, act))
# 定义强化学习模型
class QLearning:
def __init__(self, obs_len, act_len):
self.obs_len = obs_len
self.act_len = act_len
self.Q = np.zeros((2**obs_len, 2**act_len))
def act(self, obs, eps=0.1):
state = self._encode_state(obs)
if random.random() < eps:
return random.randint(0, 2**self.act_len-1)
else:
return np.argmax(self.Q[state])
def update(self, obs, act, reward, next_obs, alpha, gamma):
state = self._encode_state(obs)
next_state = self._encode_state(next_obs)
next_q = np.max(self.Q[next_state])
self.Q[state, act] += alpha * (reward + gamma * next_q - self.Q[state, act])
def _encode_state(self, obs):
state = 0
for i, x in enumerate(obs):
if x >= obs[i-1]:
state += 2**(self.obs_len-i-1)
return state
# 训练强化学习模型
eps = 0.1
alpha = 0.1
gamma = 0.9
q_learning = QLearning(obs_len, act_len)
for epoch in range(100):
total_reward = 0
for obs, act in train_data:
action = q_learning.act(obs, eps)
next_obs = obs[1:] + [act[-1]]
reward = np.mean(act) - act[-1]
q_learning.update(obs, action, reward, next_obs, alpha, gamma)
total_reward += reward
print('Epoch: {}, Total reward: {}'.format(epoch, total_reward))
# 测试强化学习模型
total_reward = 0
for obs, act in test_data:
action = q_learning.act(obs, 0)
next_obs = obs[1:] + [act[-1]]
reward = np.mean(act) - act[-1]
total_reward += reward
print('Test total reward: {}'.format(total_reward))
```
该代码通过Akshare获取上海600000股票的历史数据,然后将每20天的收盘价作为观测序列,接下来3天的收盘价作为动作序列,以此构建训练数据和测试数据。然后定义了一个QLearning类作为强化学习模型,实现了动作选择和Q值更新的方法,最后使用训练数据对模型进行训练,并使用测试数据对模型进行测试,输出测试总奖励。