はじめに
素人でも戦略的に取引したい
株やFXの知識がないため,戦略的な取引ができない素人が多いと思います.私もその一人です.
そこで,強化学習の力を借りて戦略的に取引をしようと思います.
AIncomeプロジェクト
AIで所得(Income)を得るため「AIncome」と名付けました.
前回までの取り組み
前回は強化学習とそれをシミュレーションするOpenAI Gymの説明をしました.さらには,ランダムで行動を決定して売り買いしてみたところ,ランダムでも利益が出るような結果になっていました.
今回の取り組みの概要
今回はtensorboardを使って,学習結果を可視化させていきます.
Google Drive setting
from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/AIncome
!pwd
作業フォルダ
!mkdir AutoTrade02
%cd AutoTrade02
!pwd
必要パッケージのインストール
#!pip install gym[all] -U
!pip install "gym==0.19.0"
!pip install stable-baselines[mpi]
!pip install tensorflow==1.14.0
!pip install pyqt5
!pip install imageio
!pip install gym-anytrading
!pip uninstall tensorboard-plugin-wit --yes
インポート
import os, gym
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
設定
# ログフォルダの生成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)
# train data
idx1 = 10
idx2 = 300
# test data
idx3 = 400
環境の生成
ここで,前回のコードに加えて,tensorboard_logのパラメータにログフォルダを追加しておきます.
# 環境の生成
env = gym.make('forex-v0', frame_bound=(idx1, idx2), window_size=10)
env = Monitor(env, log_dir, allow_early_resets=True)
# シードの指定
env.seed(0)
set_global_seeds(0)
# ベクトル化環境の生成
env = DummyVecEnv([lambda: env])
# モデルの生成
model = PPO2('MlpPolicy', env, tensorboard_log=log_dir)
#model = ACKTR('MlpPolicy', env, verbose=1)
# モデルの読み込み
# model = PPO2.load('trading_model')
学習
# モデルの学習
model.learn(total_timesteps=128000)
# モデルの保存
model.save('trading_model3.0')
モデルのテスト
env = gym.make('forex-v0', frame_bound=(idx2, idx3), window_size=10)
env.seed(0)
state = env.reset()
while True:
# 行動の取得
action, _ = model.predict(state)
# 1ステップ実行
state, reward, done, info = env.step(action)
# エピソード完了
if done:
print('info:', info)
break
グラフのプロット
plt.cla()
env.render_all()
plt.show()
ここからtensorboard関係のコードです.
これで,可視化できます.
# Load the TensorBoard notebook extension
%load_ext tensorboard
%tensorboard --logdir logs/
可視化するとこんな感じになります.
無事に,可視化することができました.
使用したソースコード