AnyTrading - 学習済みモデルの作成(改善版)

今回は、新しい学習済みモデルを作成していきます。

過去にも何回か学習済みモデルを作成してきましたが、今回は少しコードを改良します。

具体的には、パラメータを1か所に集めます。

今後このパラメータを変えて学習済みモデルを作成して検証し、またパラメータを変えて検証を行う・・・そして十分な投資成績の学習済みモデルが作成できればいいなと思っています。

学習済みモデルの作成

学習済みモデルを作成するコードは下記の通りになります。

42行目から45行目で学習済みモデルを作るためのパラメータを指定しています。

パラメータの内容は、コメントしていますのでご参照下さい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import os, gym
import datetime
import gym_anytrading
import matplotlib.pyplot as plt
from gym_anytrading.envs import TradingEnv, ForexEnv, StocksEnv, Actions, Positions
from gym_anytrading.datasets import FOREX_EURUSD_1H_ASK, STOCKS_GOOGL
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2
from stable_baselines import ACKTR
from stable_baselines.bench import Monitor
from stable_baselines.common import set_global_seeds

def simulation(i, prm):
# ログフォルダの生成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)

idx1 = prm['start_idx']
idx2 = prm['end_idx']

# 環境の生成
env = gym.make('forex-v0', frame_bound=(idx1, idx2), window_size=prm['window_size'])
env = Monitor(env, log_dir, allow_early_resets=True)

# シードの指定
env.seed(0)
set_global_seeds(0)

# ベクトル化環境の生成
env = DummyVecEnv([lambda: env])

# モデルの生成
model = PPO2('MlpPolicy', env, verbose=1)
#model = ACKTR('MlpPolicy', env, verbose=1)

# モデルの学習
model.learn(total_timesteps=prm['timesteps'])

# モデルの保存
model.save('model{}'.format(i))

prm = {'window_size': 100, #window_size 参照すべき直前のデータ数
'start_idx' : 100, #start_idx 学習データの開始位置
'end_idx' : 400, #end_idx 学習データの終了位置
'timesteps' :128000 } #timesteps 訓練ステップ数
for i in range(10):
simulation(i, prm)

上記コードを実行すると、model0.zipからmodel9.zipの10種類の学習済みモデルが作成されます。

次回からはこのモデルでどのような投資成績を出すことができるのかを検証していきます。