【AnyTrading】使用开放式人工智能健身房创建市场交易机器人

628 阅读6分钟

人工智能的主旨是开发与人类智能相关的计算机功能,如推理、学习和解决问题,这对市场尤其有很大帮助。在市场上进行交易和投资 ,需要的只是一系列的推理和数字计算,基于数据和解决预测当前股票价格的未来走向的问题。如今,人工基本面和技术面分析已经越来越不合时宜。 机器学习技术在交易或股市中的应用正在被利用,这样系统就会自动学习交易的复杂性,并改进其算法,以出席最佳的交易呈现。在过去的十年中,似乎有一个使用交易者的投资组合,这样每个人都可以赚取他们的利润。但是,在人工智能的帮助下,人们可以完美地分析呈现的基础数据点,非常快速和准确。

利用这些数据点,我们可以分析市场当前的趋势,并高速形成模式,这是一般用于智能交易的两个必要的东西。利用新闻频道和新闻来源的头条新闻,社交媒体的评论,以及其他平台上出现的评论,人工智能 可以通过对这些数据进行情绪分析来分析股票。机器学习通常会存储结果和给出这些结果的参数,并能更好地分析股票市场。

数据往往有助于达成更好的解决方案,特别是在基于概率、以情感为主导的活动中,如股市交易。但时至今日,金融工程师们还认为,如果任由机器自生自灭,是不可能战胜股市的。随着技术的兴起,令人难以置信的强大计算机可以在几分钟内计算出几乎无数的数据点。这意味着他们也非常有能力检测出历史和复制模式,以进行智能市场交易,而这些模式往往被单纯的人类投资者所隐藏。我们人类根本没有能力处理这样的数据,也没有能力以与技术能力强的机器相同的速度看到这些模式。人工智能可以在瞬间评估和分析数以千计的股票,因此这项技术为交易增加了更多速度。今天,每一毫秒都很重要,以人工智能作为自动交易的手段,这真是一个奇迹。人工智能已经在不断学习,不断改进自己的错误。它部署了自动交易助理机器人,并不断努力通过微调编程和输入大量的新数据来提高其性能。

什么是开放式人工智能体育馆Anytrading?

AnyTrading是一个开源的OpenAI Gym环境集合,用于基于强化学习的交易算法。交易算法主要是基于目前最大的两个市场来实现的。外汇和股票。AnyTrading旨在提供健身房环境,以改善和促进市场交易领域中基于强化学习的算法的开发和测试程序。这是通过在三个Gym环境中实现的。TradingEnv, ForexEnv, 和StocksEnv。AnyTrading可以帮助学习股票市场的趋势,并帮助进行强大的分析,为数据驱动的决策提供深刻的洞察力。

开始使用代码

在这篇文章中,我们将实现一个基于强化学习的市场交易模型,我们将使用OpenAI Gym AnyTrading创建一个交易环境。我们将使用历史上的GME价格数据,然后我们将使用强化学习代理和Gym环境训练和评估我们的模型。以下代码的部分灵感来自于Gym Anytrading的视频教程,其链接可以 在这里找到

安装库

第一个重要步骤是安装必要的库。要做到这一点,你可以运行以下几行代码。

!pip install tensorflow-gpu==1.15.0 tensorflow==1.15.0 stable-baselines gym-anytrading gym

Stable-Baselines将为我们提供强化学习算法,Gym Anytrading将为我们提供交易环境。

导入依赖项

现在让我们安装所需的依赖项,为我们的模型创建一个基础框架,我们将使用A2C强化学习算法来创建我们的市场交易模型。

# Importing Dependencies
import gym
import gym_anytrading
# Stable baselines - rl stuff
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import A2C
# Processing libraries
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
处理我们的数据集

现在,随着我们的管道设置,让我们加载我们的GME市场数据。你可以使用这里的链接下载该数据集你也可以使用其他相关的数据集,如比特币数据来执行这个模型。

#loading our dataset
df = pd.read_csv('/content/gmedata.csv')
#viewing first 5 columns
df.head()

#converting Date Column to DateTime Type
df['Date'] = pd.to_datetime(df['Date'])
df.dtypes

输出。

Date      datetime64[ns]
Open             float64
High             float64
Low              float64
Close            float64
Volume            object
dtype: object

#setting the column as index
df.set_index('Date', inplace=True)
df.head()

我们现在将传递数据,并为我们的Agent创建健身环境,以便以后进行训练。

#passing the data and creating our environment
env = gym.make('stocks-v0', df=df, frame_bound=(5,100), window_size=5)

设置窗口大小参数将指定我们的交易机器人将有多少个以前的价格参考,以便它可以决定是否进行交易。

测试我们的环境

现在,随着我们模型的设置,让我们测试一下我们的基本环境,并部署我们的强化学习代理。

#running the test environment
state = env.reset()
while True: 
    action = env.action_space.sample()
    n_state, reward, done, info = env.step(action)
    if done: 
        print("info", info)
        break
        
plt.figure(figsize=(15,6))
plt.cla()
env.render_all()
plt.show()

正如我们所看到的,我们的RL代理已经随机地买入和卖出了股票。我们的利润率似乎超过了1,所以我们可以确定,我们的机器人通过它的交易为我们赢得了利润。但这些都是随机采取的步骤,现在让我们正确地训练我们的模型以实现更好的交易。

训练我们的环境

设置我们的环境来训练我们的强化学习代理。

#setting up our environment for training 
env_maker = lambda: gym.make('stocks-v0', df=df, frame_bound=(5,100), window_size=5)
env = DummyVecEnv([env_maker])

#Applying the Trading RL Algorithm
model = A2C('MlpLstmPolicy', env, verbose=1) 
 
#setting the learning timesteps
model.learn(total_timesteps=1000)
---------------------------------
| explained_variance | 0.0016   |
| fps                | 3        |
| nupdates           | 1        |
| policy_entropy     | 0.693    |
| total_timesteps    | 5        |
| value_loss         | 111      |
---------------------------------
---------------------------------
| explained_variance | -2.6e-05 |
| fps                | 182      |
| nupdates           | 100      |
| policy_entropy     | 0.693    |
| total_timesteps    | 500      |
| value_loss         | 2.2e+04  |
---------------------------------
---------------------------------
| explained_variance | 0.0274   |
| fps                | 244      |
| nupdates           | 200      |
| policy_entropy     | 0.693    |
| total_timesteps    | 1000     |
| value_loss         | 0.0663   |
#Setting up the Agent Environment
env = gym.make('stocks-v0', df=df, frame_bound=(90,110), window_size=5)
obs = env.reset()
while True: 
    obs = obs[np.newaxis, ...]
    action, _states = model.predict(obs)
    obs, rewards, done, info = env.step(action)
    if done:
        print("info", info)
        break


#Plotting our Model for Trained Trades
plt.figure(figsize=(15,6))
plt.cla()
env.render_all()
plt.show()

正如我们在这里所看到的,我们训练过的代理现在正在进行更好的交易,减少了随机交易,同时给我们带来了利润,对何时买入和何时卖出股票有了更多的意识。

结束语

在这篇文章中,我们试图了解如何将人工智能应用于市场交易,以帮助利用买卖的艺术。我们还创建了一个强化学习模型,通过这个模型,我们训练有素的代理可以买入和卖出股票,同时为我们预订利润。下面的实施方案可以作为一个colab笔记本找到,可以通过这里的链接访问。

学习愉快!

参考资料

The postCreating a Market Trading Bot Using Open AI Gym Anytradingappeared first onAnalytics India Magazine.