在本篇博文中,我们将介绍强化学习环境类SopEnv的具体实现。
SopEnv类的基类为gym.Env类,这样做的目的是为了与当前主流的强化学习系统兼容,我们需要重写该类的四个方法:
- reset:重置系统为初始状态;
- _next_observation:获取并返回环境状态;
- _take_action:执行Agent所选择的行动;
- step:最重要的方法,在该方法中执行如下操作:
- 执行Agent选择的行动;
- 获取当前状态;
- 生成当前奖励信号;
除了上述方法之外,该类还有一个重要的方法startup,在该方法中进入系统主循环。
SopEnv代码如下所示:
import numpy as np
import gym
from gym import spaces
class SopEnv(gym.Env):
def __init__(self):
self.refl = ''
def startup(self, args={}):
self.reset()
num = 0
obs, reward, done, info = self._next_observation(), 0, False, {}
while True:
if num > 10:
break
print('由Agent选择行动')
action = {}
obs, reward, done, info = self.step(action)
num += 1
def reset(self):
print('重置环境到初始状态')
def _next_observation(self):
print('返回环境状态...')
return {}
def step(self, action):
self._take_action(action)
obs = self._next_observation()
reward = 0.0
done = False
return obs, reward, done, {}
def _take_action(self, action):
print('执行所选行动,生成订单,调用broker执行订单')
其运行结果如下所示:
重置环境到初始状态
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
由Agent选择行动
执行所选行动,生成订单,调用broker执行订单
返回环境状态...
在本节中,我们只是创建了一个强化学习环境类,并启动了环境主循环。
在下一节博文中,我们将讨论通过akshare接口,获取50ETF期权和50ETF本身的日行情数据,将其中通过主循环,依次显示出来。