AIを使って不労所得の道へ(4)~学習回数を増やしてみた~【AIncomeプロジェクト】

AIを使って不労所得

はじめに

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

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

AIncomeプロジェクト

AIで所得(Income)を得るため「AIncome」と名付けました.

前回までの取り組み

前回は強化学習とそれをシミュレーションするOpenAI Gymの説明をしました*1.さらには,ランダムで行動を決定して売り買いしてみたところ,ランダムでも利益が出るような結果になっていました*1.また,ランダム投資からPPO2へ深層学習強化学習のモデル投入*2やTensorboardで可視化などを取り組んでいました*3

今回の取り組みの概要

今回は単純に学習回数を増やすとどうなるのかを見てきたいと思います.
Googleドライブや,パッケージのインストールなどは前回の記事を参考にしてみてください.

学習/可視化コード


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 = 5000

# test data
idx3 = 6000

"""## 環境の生成"""

# 環境の生成
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*10)

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

"""## モデルのテスト"""

env = gym.make('forex-v0', frame_bound=(idx2, idx3), window_size=100)
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()
plt.figure(figsize=(30, 10))
env.render_all()
plt.show()

# Commented out IPython magic to ensure Python compatibility.
# Load the TensorBoard notebook extension
# %load_ext tensorboard

# Commented out IPython magic to ensure Python compatibility.
# %tensorboard --logdir logs/

結果

損失関数はまだまだ落ちそうなので,これ以上の学習が必要そうですね.

これ以上は時間がかかるのでまた次の機会に.

参考サイト

1:AIを使って不労所得の道へ(1)~Python AnyTradingでランダム投資~【AIncomeプロジェクト】
2:AIを使って不労所得の道へ(2)~MLPでFXの学習させてみた~【AIncomeプロジェクト】
*3:AIを使って不労所得の道へ(3)~学習結果をTensorboardで可視化させてみた~【AIncomeプロジェクト】

コメント

タイトルとURLをコピーしました