AIを使って不労所得の道へ(3)～学習結果をTensorboardで可視化させてみた～【AIncomeプロジェクト】

## はじめに

### 素人でも戦略的に取引したい

株やFXの知識がないため，戦略的な取引ができない素人が多いと思います．私もその一人です．
そこで，強化学習の力を借りて戦略的に取引をしようと思います．



### AIncomeプロジェクト

AIで所得（Income）を得るため「AIncome」と名付けました．

![](https://hamaruki.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-21-173848-1.jpg)

### 前回までの取り組み

前回は強化学習とそれをシミュレーションするOpenAI Gymの説明をしました．さらには，ランダムで行動を決定して売り買いしてみたところ，ランダムでも利益が出るような結果になっていました．

https://hamaruki.com/2022/08/21/the_ai_unemployment_income_path_01/

### 今回の取り組みの概要

今回はtensorboardを使って，学習結果を可視化させていきます．


## Google Drive setting


```python
from google.colab import drive
drive.mount('/content/drive')
```


```python
%cd /content/drive/MyDrive/AIncome
```


```python
!pwd
```

### 作業フォルダ


```python
!mkdir AutoTrade02
```


```python
%cd  AutoTrade02
```


```python
!pwd
```

## 必要パッケージのインストール


```python
#!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
```


```python
!pip uninstall tensorboard-plugin-wit --yes
```

## インポート



```python
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
```

## 設定


```python
# ログフォルダの生成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)


# train data
idx1 = 10
idx2 = 300

# test data
idx3 = 400

```

## 環境の生成

ここで，前回のコードに加えて，tensorboard_logのパラメータにログフォルダを追加しておきます．

```python
# 環境の生成
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')
```

## 学習


```python
# モデルの学習
model.learn(total_timesteps=128000)

# モデルの保存
model.save('trading_model3.0')
```

## モデルのテスト


```python
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
```

## グラフのプロット


```python
plt.cla()
env.render_all()
plt.show()
```

ここからtensorboard関係のコードです．
これで，可視化できます．

![](https://hamaruki.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-21-230017.jpg)

```python
# Load the TensorBoard notebook extension
%load_ext tensorboard
```


```python
%tensorboard --logdir logs/
```

可視化するとこんな感じになります．

![](https://hamaruki.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-21-225925-1.jpg)


![](https://hamaruki.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-21-225938-1.jpg)

![](https://hamaruki.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-21-225950.jpg)

無事に，可視化することができました．

## 使用したソースコード

https://hamaruki.com/2022/08/21/the_ai_unemployment_income_path_03/