AnyTrading - FXトレードを強化学習で実行①

AnyTrading は、FXや株式のトレーディングアルゴリズムのための強化学習環境です。

パラメータやFXデータをいろいろと変えて、どこまで成績をあげていけるかを検証していきたいと思います。

今回は、AnyTrading をインストールし、ランダムでのFX売買を行い、その結果を確認してみます。

AnyTradingのインストール

AnyTradingの環境は下記のコマンドでインストールすることができます。

[コマンド]

1
pip install gym-anytrading

ランダム実行を行うコード

ランダム実行を行うコードは次の通りです。

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
import 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 import set_global_seeds

# 環境を作成する
env = gym.make('forex-v0', frame_bound=(50, 100), window_size=10)

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

# ランダム行動による動作確認
state = env.reset()
while True:
# 行動の取得
action = env.action_space.sample()
# 1ステップ実行
state, reward, done, info = env.step(action)
# エピソード完了
if done:
print('info:', info)
break
# グラフのプロット
plt.cla()
env.render_all()
plt.show()

9行目のgym.makeのパラメータの意味は次の通りです。

  • env(Env型)
    環境名。
  • df(DataFrame型)
    独自のデータセット。
  • window_size(int型)
    直近何フレームの情報を状態として利用するか。
  • frame_bound(tuple型)
    データセット内の訓練範囲を開始行数と終了行数で指定。
  • unit_side(str型)
    FXの取引を開始する側(ユーロ/ドルの場合は「left」でユーロ、「right」でドルを指定)。

ランダム実行

上記コードを実行すると次のような結果になります。

[コンソール出力]

1
info: {'total_reward': -76.1999999999996, 'total_profit': 0.9860980554685419, 'position': 0}

実行結果


ランダム実行なので、結果は都度変わりますが今回は、累積報酬(total_reward)が -76 で、純利益(total_profit)が 0.98 となりました。

次回は学習してから、トレードを行うコードを試します。