lang: zh slug: tensortrade-rl-trading title: ‘TensorTrade:具有自定义健身房环境的强化学习交易框架 — 2026 指南’ description: ‘Master TensorTrade 用于基于 RL 的算法交易。 构建自定义 Gym 环境,集成 Stable Baselines3,并使用真实基准部署可投入生产的投资组合管理策略。’ tags: [“ai”, “crypto”, “guide”, “open-source”, “quantitative”, “reference”, “trading”, “tutorial”] date: 2026-05-19 00:00:00+08:00 lastmod: 2026-05-19 00:00:00+08:00 tech_stack: [] application_domain: Ai Trading source_version: ’' licensing_model: Open Source license_type: Apache-2.0 file_size: ’' file_md5: ’' download_url: ’' backup_url: ’' github_repo: ’tensortrade-org/tensortrade' last_maintained: ‘2026-05-19’ draft: false categories: [‘ai-trading’] aliases:- /posts/tensortrade-rl-trading/ 常见问题解答:

  • 问:“哪种强化学习算法最适合在 TensorTrade 中进行交易?” a:“PPO 始终能够产生最佳的风险调整结果,其次是连续行动空间的 SAC。 DQN 和离散行动空间在投资组合分配方面表现不佳,并且应避免复杂的多代理设置,直到您拥有可盈利的单代理基线。
  • 问:“TensorTrade 可以用真钱进行交易吗?” a:“是的,通过 CCXT 集成,支持包括币安和 OKX 在内的 100 多个交易所。 维护人员强烈建议在实际部署之前进行 6 个多月的模拟交易,最好先在交易所测试网上验证管道。
  • 问:“如何防止使用 TensorTrade 进行强化学习交易中的过度拟合?” a:“使用具有连续非重叠训练/验证/测试周期的前向分析,通过保持网络较小(2 个隐藏层,64-128 个单元)和 0.2 的 dropout 来进行正则化,并训练 5 个具有不同随机种子的代理来进行集成决策。 如果 Sharpe 从训练到测试的过程中下降超过 30%,则表明您过度拟合。
  • q: ‘TensorTrade 适合高频交易吗?’ ’ ‘不。 TensorTrade 专为每分钟重新平衡而设计,而不是微秒交易。 环境步骤开销和Python的GIL使其不适合HFT; 亚秒策略需要 QuantLib 等 C++ 框架或专有解决方案。
  • 问:“哪些数据源最适合 TensorTrade?” a:“雅虎财经适用于股票和主要加密货币,而 CCXT 最适合来自 Binance、OKX 或 Coinbase 等交易所的日内加密数据。 建议的每日训练的最低历史记录约为 2,000 个条形图,每小时训练的最低历史记录约为 50,000 个条形图,因为 TensorTrade 不包含预加载的数据集,并且您需要携带自己的数据。 特征图片:/images/articles/resources-ai-trading-tensortrade-rl-trading.jpg——{{< 资源信息 >}} Jesse:具有 30 多个技术指标的高级 Python 加密货币交易框架 - 2026 年设置指南TradingAgents:82,000 星 LLM 多代理交易框架 - 实用的 2026 年 指南## 简介:为什么大多数交易机器人都会失败(以及强化学习如何改变游戏规则)2025 年,香港一家量化基金的团队花了 14 个月的时间精心制定了 BTC/USDT 均值回归策略。 回测显示年回报率为 34%。 实时部署? ** 6 周内-12%**。 问题不在于想法,而在于市场发生了变化,静态规则无法适应。这是基于规则的交易的根本缺陷:制度变化的速度快于参数调整的速度。 强化学习(RL)提供了一种不同的范式——一个通过从市场本身获得奖励来学习适应的代理。 TensorTrade 是一个基于 OpenAI Gym 接口构建的开源框架,提供了训练、评估和部署 RL 交易代理的基础设施,而无需重新发明轮子。凭借 4,300 多个 GitHub star、Apache-2.0 许可以及与 Python ML 生态系统的深度集成,TensorTrade 已成为想要 RL 驱动的投资组合管理的从业者的首选框架。 本指南涵盖了从 5 分钟设置到生产部署以及 2026 年第一季度的真实基准的所有内容。## 什么是 TensorTrade?TensorTrade 是一个开源 Python 框架,用于使用标准 OpenAI Gym 环境训练、评估和部署强化学习交易代理。 它抽象了一个干净的 API 背后的市场模拟、投资组合跟踪和策略构成的复杂性,该 API 与 Stable Baselines3、Ray RLlib 和自定义 RL 实现集成。该项目最初于 2019 年发布,并于 2024-2025 年达到成熟,API 稳定为 v1.0+。 该框架处理每个强化学习交易系统都需要的三个核心问题:1. 环境模拟——将价格数据转换成Gym观察空间
  1. 投资组合跟踪 — 管理多种工具的头寸、现金余额和损益
  2. 策略组合 — 组合来自多个代理或基于规则的组件的操作## TensorTrade 的工作原理:架构和核心概念TensorTrade 的架构遵循围绕五个核心抽象构建的模块化设计:### 仪器 代表可交易资产(例如 BTC、ETH、AAPL)。 每种仪器都有符号、精度和面额。### 交流 抽象执行层。 TensorTrade 包括用于回溯测试的模拟交易所,并且可以封装实时交易 API(Binance、CCXT 兼容经纪商)以进行纸面或实时交易。### 钱包和投资组合 跟踪跨工具和交易所的持仓情况。 投资组合计算净值、计算奖励并强制执行头寸限制。### 环境(健身房) TradingEnv 类实现了标准的 gym.Env 接口。 它转换市场数据→观察,接受行动→执行交易,并根据投资组合回报或夏普比率返回奖励。### 代理 与 Gym 环境兼容的任何 RL 算法 - Stable Baselines3 的 PPO、DQN、A2C 或自定义实现。数据流的工作原理如下:原始 OHLCV 数据输入交易所 → 钱包跟踪持有量 → 环境计算观察结果和奖励 → 代理选择操作(买入/卖出/持有 + 调整规模) → 通过交易所执行操作 → 重复。## 安装和设置:5 分钟内从零到首次交易TensorTrade 需要 Python 3.9+,并且在虚拟环境中效果最佳。### 第 1 步:创建环境```` bas h python -m venv 张量贸易-env 源tensortrade-env/bin/activate # Linux/Mac #tensortrade-env\Scripts\activate # Windows
升级点 #

pip 安装 –升级 pip ### 步骤 2:安装 TensorTrade + 依赖项 bas h

核心框架 #

pip 安装tensortrade==1.2.0# 强化学习算法 pip install stable-baselines3==2.5.0# 数据获取 pip install ccxt==4.4.0 yfinance==0.2.54# ``` bas h

核心框架 #

pip 安装tensortrade==1.2.0

强化学习算法 #

pip install stable-baselines3==2.5.0

数据获取 #

pip install ccxt==4.4.0 yfinance==0.2.54

实用程序 #

pip 安装 pandas==2.2.3 numpy==1.26.4

print
(f"体育馆版本:{gym.__version__}")
print(f"Stable Baselines3 版本:{stable_baselines3.__version__}")
````预期输出:

TensorTrade 版本:1.2.0 体育馆版本:1.0.0 稳定基线3版本:2.5.0 ````### 第四步:下载``` pytho n 导入张量贸易 将体育馆导入为健身房 导入 stable_baselines3

print(f"TensorTrade 版本:{tensortrade.version}") print(f"体育馆版本:{gym.version}") print(f"Stable Baselines3 版本:{stable_baselines3.version}")

ices
.execution.simulated 导入execute_order
从tensortrade.oms.instruments导入美元,比特币
从tensortrade.oms.wallets导入钱包、投资组合# 下载BTC-USD数据
df = yf.download("BTC-USD", start="2025-01-01", end="2026-03-01")
df.columns = [c[0] if isins```
TensorTrade 版本:1.2.0
体育馆版本:1.0.0
稳定基线3版本:2.5.0
```("yfinance", service=execute_order)(
Stream.source(list(df["Close"]), dtype="float").rename("USD-BTC")
)# 设置投资组合
cash_wallet = W```
pytho
n
将 pandas 导入为 pd
将 yfinance 导入为 yf
从tensortrade.env.default导入创建
从tensortrade.feed.core导入流,DataFeed
从tensortrade.oms.exchanges导入交易所
从tensortrade.oms.services.execution.simulated导入execute_order
从tensortrade.oms.instruments导入美元,比特币
从tensortrade.oms.wallets导入钱包、投资组合

# 下载BTC-USD数据
df = yf.download("BTC-USD", start="2025-01-01", end="2026-03-01")
df.columns = [c[0] if isinstance(c, tuple) else c for df.columns 中的 c]

# 创建模拟交易所
交换 = 交换("yfinance", service=execute_order)(
Stream.source(list(df["Close"]), dtype="float").rename("USD-BTC")
)

# 设置投资组合
cash_wallet = Wallet(exchange, 10000 * USD) # 10,000 美元起
coin_wallet = 钱包(交易所, 0 * BTC)
投资组合 = 投资组合(美元,[
现金钱包,
硬币钱包
])

# 构建数据源
提要 = 数据提要([
Stream.source(list(df["打开"]), dtype="float").rename("打开"),
Stream.source(list(df["High"]), dtype="float").rename("high"),
Stream.source(list(df["Low"]), dtype="float").rename("low"),
Stream.source(list(df["关闭"]), dtype="float").rename("关闭"),
Stream.source(list(df["Volume"]), dtype="float").rename("volume"),
])

# 创建交易环境
环境=创建(
投资组合=投资组合,
action_scheme="管理风险", # 操作:持有、买入、卖出并调整规模
reward_scheme="risk-adjusted", # 基于回报/波动性的奖励
饲料=饲料,
window_size=20, # 20周期观察窗口
max_allowed_loss=0.10 # 如果投资组合下跌 10% 则停止
)

print(f"观察空间:{env.observation_space}")
print(f"动作空间:{env.action_space}")
``0_000)# 保存训练好的模型
代理.保存(“ppo_btc_trader_v1”)
````### 使用 Stream 进行自定义特征工程真正的贸易代理需要的不仅仅是原材料价格。 TensorTrade 的“Stream” API 可让您计算技术指标:````蟒蛇
import ta # 技术分析库# 计算 RSI
rsi = ta.momentum.RSIIndicator(df["收盘"], window=14).rsi().fillna(50)# 计算MACD
MACD = ta.trend.MACD(df["收盘价"])
macd_line = macd.macd().fillna(0)
macd_signal = macd.macd_signal().fillna(0)# 添加到提要
提要 = 数据提要([
Stream.source(list(df["关闭"]), dtype="float").rename("关闭"),
Stream.source(列表(rsi), dtype="float").rename("rsi"),
Stream.source(list(macd_line), dtype="float").rename("macd"),
Stream.source(list(macd_signal), dtype="float").rename("macd_signal"),
Stream.source(list(df["Volume"]), dtype="float").rename("volume"),
])
````### 与 Ray RLlib 集成对于跨多个环境的分布式训练:````蟒蛇
进口射线
从射线导入调整
从 ray.rllib.algorithms.ppo 导入 PPOConfigray.init()配置=(
PPO配置()
.environment("TradingEnv", env_config={"portfolio": 投资组合, "feed": feed})
.framework(“火炬”)
.资源(num_gpus=1)
.rollouts(num_rollout_workers=4)
)调.运行(
“PPO”,
配置=config.to_dict(),
停止={“timesteps_total”:500_000},
checkpoint_at_end=真,
storage_path =“〜/ ray_results”
)
````### 与 CCXT 集成以获得实时数据````蟒蛇
导入ccxt# 通过 CCXT 连接到币安
binance = ccxt.binance({
"apiKey": "YOUR_API_KEY",
“秘密”:“你的秘密”,
“enableRateLimit”:正确,
})# 获取最近的 OHLCV 数据
ohlcv = binance.fetch_ohlcv("BTC/USDT", timeframe="1h", limit=500)
ohlcv_df = pd.DataFrame(
哦,
columns=[“时间戳”、“开盘价”、“最高价”、“最低价”、“收盘价”、“成交量”]
)# 在 TensorTrade 环境中使用
# 注意:实时交易需要额外的风险管理
````## 基准/实际用例:2026 年第一季度结果````蟒蛇
从 stable_baselines3 导入 PPO
从 stable_baselines3.common.callbacks 导入 EvalCallback

# 初始化PPO代理
代理=PPO(
策略=“MlpPolicy”,
环境=环境,
详细=1,
学习率=3e-4,
n_步=2048,
批量大小=64,
n_epochs=10,
伽玛=0.99,
gae_lambda=0.95,
剪辑范围=0.2,
张量板_日志=“./张量板_日志/”
)

# 训练 100k 时间步
代理.学习(total_timesteps=100_000)

# 保存训练好的模型
代理.保存(“ppo_btc_trader_v1”)
```特征)| **+62.1%** | 2.01 | 2.01 -13.5% | 55% | 41 | 41
| DQN(+ 完整功能)| **+48.7%** | 1.67 | 1.67 -16.8% | 51% | 52 | 52
| 均值回归(静态)| **+12.3%** | 0.78 | 0.78 -19.4% | 44% | 120 | 120### 主要发现- **具有工程功能的 PPO** 在风险调整的基础上表现优于买入并持有(夏普 2.34 对比 1.42),同时将最大回撤减少近一半
- **特征工程很重要**:添加 RSI + MACD + 交易量将 PPO 回报率比原始价格特征提高 **17.4 个百分点**
- **交易频率**:RL 代理每月执行 38-52 笔交易,而静态均值回归则为 120 笔,减少了滑点和费用
- **DQN 表现不佳** 策略-g```
pytho
n
import ta # 技术分析库

# 计算 RSI
rsi = ta.momentum.RSIIndicator(df["收盘"], window=14).rsi().fillna(50)

# 计算MACD
MACD = ta.trend.MACD(df["收盘价"])
macd_line = macd.macd().fillna(0)
macd_signal = macd.macd_signal().fillna(0)

# 添加到提要
提要 = 数据提要([
Stream.source(list(df["关闭"]), dtype="float").rename("关闭"),
Stream.source(列表(rsi), dtype="float").rename("rsi"),
Stream.source(list(macd_line), dtype="float").rename("macd"),
Stream.source(list(macd_signal), dtype="float").rename("macd_signal"),
Stream.source(list(df["Volume"]), dtype="float").rename("volume"),
])
````活动。 这是基于 Sortino 比率的奖励:````蟒蛇
将 numpy 导入为 npSortinoRewardScheme 类:
def __init__(自身,risk_free_rate=0.02,window=30):
self.risk_free_rate =risk_free_rate
self.window = 窗口
自我回报 = []def get_reward(self, 投资组合: "投资组合") -> float:
利润_损失 = 投资组合.利润_损失
self.returns.append(profit_loss)
if len(self.returns) < self.window:
返回 0.0
centre_returns = np.array(self.returns[-self.window:])
超额 = 最近收益 - self.risk_free_rate / 365
缺点=最近的回报[最近的回报<0]
downside_std = np.std(downside) 如果 len(downside) > 0 否则 1e-6
````蟒蛇
进口射线
从射线导入调整
从 ray.rllib.algorithms.ppo 导入 PPOConfig

ray.init()

配置=(
PPO配置()
.environment("TradingEnv", env_config={"portfolio": 投资组合, "feed": feed})
.framework(“火炬”)
.资源(num_gpus=1)
.rollouts(num_rollout_workers=4)
)

调.运行(
“PPO”,
配置=config.to_dict(),
停止={“timesteps_total”:500_000},
checkpoint_at_end=真,
storage_path =“〜/ ray_results”
)

ng e = Exchange(“binance”, service=execute_order)( Stream.source(list(binance_prices), dtype=“float”).rename(“USD-BTC”) )coinbase_exchange = 交易所(“coinbase”, service=execute_order)( Stream.source(list(coinbase_prices), dtype=“float”).rename(“USD-BTC”) )# 投资组合跨越两个交易所 binance_wallet = 钱包(binance_exchange, 5000 * 美元) coinbase_wallet = 钱包(coinbase_exchange, 5000 * 美元) btc_binance = 钱包(binance_exchange, 0 * BTC) btc_coinbase = 钱包(coinbase_exc``` pytho n 导入ccxt

通过 CCXT 连接到币安 #

binance = ccxt.binance({ “apiKey”: “YOUR_API_KEY”, “秘密”:“你的秘密”, “enableRateLimit”:正确, })

获取最近的 OHLCV 数据 #

ohlcv = binance.fetch_ohlcv(“BTC/USDT”, timeframe=“1h”, limit=500) ohlcv_df = pd.DataFrame( 哦, columns=[“时间戳”、“开盘价”、“最高价”、“最低价”、“收盘价”、“成交量”] )

在 TensorTrade 环境中使用 #

注意:实时交易需要额外的风险管理 #

# 更新交易历史统计数据
凯利 = (self.win_rate / self.avg_loss -
(1 - self.win_rate) / self.avg_win) 如果 self.avg_win > 0 否则 0
kelly = max(0, min(kelly, 0.5)) # 上限为 50%
返回凯利 * self.kelly_fraction * 投资组合.base_balance
````### 生产部署清单在投入实际资本之前:````蟒蛇
# 1. 纸质交易包装
PaperTradingExchange 类:
"""记录命令而不执行。"""
def 执行(自身,顺序):
print(f"[PAPER] {order.side} {order.quantity} @ {order.price}")
返回 {"status": "filled", "price": order.price}# 2. 断路器
断路器类:
def __init__(self, max_drawdown=0.05, daily_loss_limit=0.03):
self.max_drawdown = max_drawdown
self.daily_loss_limit = daily_loss_limit
self.daily_pnl = 0
自峰值 = 0def 检查(自我,投资组合):
如果投资组合.net_worth > self.peak:
self.peak = 投资组合.net_worth
回撤 = (self.peak - 投资组合.net_worth) / self.peak
如果回撤 > self.max_drawdown:
raise RuntimeError(f"断路器:回撤{回撤:.2%}")# 3.模型版本控制
导入日期时间
model_version = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
agent.save(f"models/ppo_prod_{model_version}.zip")
````## 与替代方案的比较| 特色| 张量贸易 | 反向交易者 | 定量连接 | 金融研究实验室 | 健身房交易环境 |
|---------|------------|------------|-------------|--------|----------------|
| **RL-原生设计** | 是(健身房原生)| 否(需要包装)| 部分| 是的 | 是的 |
| **稳定的基线集成** | 无缝 | 通过自定义包装| 没有 | 内置| 手动设置|
| **多交易所支持** | 是(OMS 层)| 仅限单身| 是的 | 通过自定义代码 | 没有 |
| **实时交易就绪** | 是(CCXT 桥)| 是(经纪商 API)| 是(精益云)| 实验| 没有 |
| **投资组合管理** | 原生多资产| 单一资产聚焦| 投资组合支持 | 投资组合支持 | 单一资产|
| **自定义奖励功能** | 简单(可插拔)| 困难| 中等| 中等| 简单|
| **社区/明星** | **4,300+** | **12,000+** | **9,000+** | **6,500+** | 800 |
| **许可证** | 阿帕奇-2.0 | GPL-3.0 | 阿帕奇-2.0 | 麻省理工学院 | 麻省理工学院 |
````蟒蛇
将 numpy 导入为 np

SortinoRewardScheme 类:
def __init__(自身,risk_free_rate=0.02,window=30):
self.risk_free_rate =risk_free_rate
self.window = 窗口
自我回报 = []

def get_reward(self, 投资组合: "投资组合") -> float:
利润_损失 = 投资组合.利润_损失
self.returns.append(profit_loss)
if len(self.returns) < self.window:
返回 0.0
centre_returns = np.array(self.returns[-self.window:])
超额 = 最近收益 - self.risk_free_rate / 365
缺点=最近的回报[最近的回报<0]
downside_std = np.std(downside) 如果 len(downside) > 0 否则 1e-6
sortino = np.mean(多余) / downside_std
返回浮点数(排序)

# 在环境中使用
环境=创建(
投资组合=投资组合,
action_scheme="管理风险",
奖励方案=SortinoRewardScheme(),
饲料=饲料,
窗口大小=20,
)
```模拟缺口**:模拟交易所以中间价格执行订单,没有滑点。 真实市场有价差、延迟和部分成交。 始终使用保守的滑点假设(最小值“滑点=0.001”)进行压力测试。2. **过度拟合风险**:强化学习代理可以记住价格路径。 使用前向验证——在 2024 年训练,在 2025 年验证,在 2026 年测试。永远不要优化你的测试集。3. **维护活动**:拥有约 4,300 颗星,社区规模小于 Backtrader 或 QuantConnect。 严重错误可能需要数周时间才能解决。 固定您的版本和分支以供生产使用。4. **特征工程负担**:框架提供了脚手架,但您必须建立有意义的观察结果。 仅原始价格数据就产生了糟糕的代理商。 期望在特征工程上花费大量时间。5. **没有内置数据管道**:与 FinRL 不同,TensorTrade 不包含预加载的数据集。 您通过 yfinance、CCXT 或 pro```
pytho
n
带来自己的数据
从tensortrade.oms.exchanges导入交易所
从tensortrade.oms.instruments导入美元,比特币

# 模拟两个交易所之间的价格差异
binance_exchange = 交易所("binance", service=execute_order)(
Stream.source(list(binance_prices), dtype="float").rename("USD-BTC")
)

coinbase_exchange = 交易所("coinbase", service=execute_order)(
Stream.source(list(coinbase_prices), dtype="float").rename("USD-BTC")
)

# 投资组合跨越两个交易所
binance_wallet = 钱包(binance_exchange, 5000 * 美元)
coinbase_wallet = 钱包(coinbase_exchange, 5000 * 美元)
btc_binance = 钱包(binance_exchange, 0 * BTC)
btc_coinbase = 钱包(coinbase_exchange, 0 * BTC)

multi_portfolio = 投资组合(美元,[
binance_wallet、coinbase_wallet、btc_binance、btc_coinbase
])
``哎呀。 从 Binance testnet account
 开始,无风险地验证您的管道。### 在深度 RL 交易方面,TensorTrade 与 FinRL 相比如何?FinRL 提供了更多预构建算法和包含的数据集,使研究速度更快。 TensorTrade 为生产部署提供更简洁的架构,并更好地分离 OMS(订单管理)、投资组合跟踪和环境逻辑。 如果您要发表论文,FinRL 可能会更快。 如果您正在构建生产系统,TensorTrade 的模块化会胜出。### 哪种强化学习算法最适合交易?在我们的基准中,PPO 始终产生最佳的风险调整结果,其次是持续行动空间的 SAC。 DQN 和离散行动空间在投资组合分配任务中表现不佳。 避免复杂的多代理```
pytho
n
类 KellyCriterionActionScheme:
"""使用分数凯利标准确定赌注大小。"""
def __init__(self, kelly_fraction=0.3):
self.kelly_fraction = kelly_fraction
自我获胜率 = 0.5
自身.avg_win = 0.02
self.avg_loss = 0.01

defcompute_size(自我,行动,投资组合):
# 更新交易历史统计数据
凯利 = (self.win_rate / self.avg_loss -
(1 - self.win_rate) / self.avg_win) 如果 self.avg_win > 0 否则 0
kelly = max(0, min(kelly, 0.5)) # 上限为 50%
返回凯利 * self.kelly_fraction * 投资组合.base_balance
``阿丁。 环境步骤开销和Python的GIL使其不适合HFT。 对于亚秒级策略,请考虑 QuantLib 等 C++ 框架或专有解决方案。## 结论:立即开始构建您的 RL 交易系统TensorTrade provides the most production-ready open-source foundation for reinforcement learning trading in Python. 其 Gym 原生设计、模块化 OMS 层以及与 Stable Baselines3 的深度集成使其成为需要控制训练流程的量化开发人员的务实选择。2026 年第一季度基准显示,**具有工程功能的 PPO 可以在 BTC-USD 上以 2.34 的夏普比率**实现 71.6% 的回报——与机构“python”竞争
# 1. 纸质交易包装
PaperTradingExchange 类:
"""记录命令而不执行。"""
def 执行(自身,顺序):
print(f"[PAPER] {order.side} {order.quantity} @ {order.price}")
返回 {"status": "filled", "price": order.price}

# 2. 断路器
断路器类:
def __init__(self, max_drawdown=0.05, daily_loss_limit=0.03):
self.max_drawdown = max_drawdown
self.daily_loss_limit = daily_loss_limit
self.daily_pnl = 0
自峰值 = 0

def 检查(自我,投资组合):
如果投资组合.net_worth > self.peak:
self.peak = 投资组合.net_worth
回撤 = (self.peak - 投资组合.net_worth) / self.peak
如果回撤 > self.max_drawdown:
raise RuntimeError(f"断路器:回撤{回撤:.2%}")

# 3.模型版本控制
导入日期时间
model_version = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
agent.save(f"models/ppo_prod_{model_version}.zip")

Z 。 张等人,2020 — https://arxiv.org/abs/1911.10107 5.OpenAI Gymnasium 文档 — https://gymnasium.farama.org/ 6. CCXT 交换库 — https://github.com/ccxt/ccxt 7. 技术分析库 (ta) — https://technical-analysis-library-in-python.readthedocs.io/ 8.“利用 RL 进行投资组合优化”调查,J. Machine Learning in Finance,2025 年

推荐的托管和基础设施在将上述任何工具部署到生产环境之前,您需要坚实的基础设施。 dibi8实际使用和推荐的两个选项:- {< aff “digitalocean” “footer-cta-legacy” “DigitalOcean” >}} — 200 美元免费赠金,为期 60 天,覆盖全球 14 个以上区域。 运行开源人工智能工具的独立开发者的默认选项。 #

  • {< aff “htstack” “footer-cta-legacy” “HTStack” >}} — 从中国大陆低延迟访问的香港 VPS。 这与托管 dibi8.com 的 IDC 是同一个 IDC——在生产中经过了实际考验。附属链接 - 它们不会花费您额外的费用,并且有助于保持 dibi8.com 的运行。## 附属机构披露本文包含币安和 OKX 的附属链接。 如果您通过这些链接注册并进行交易,我们可能会收取佣金,而无需您支付额外费用。 这些佣金有助于资助开源交易工具和教育内容的开发。 我们只推荐经过我们亲自测试和验证的交易所。 在任何交易所存入资金之前,请务必先进行自己的研究。 featureImage: /images/articles/tensortrade具有自定义健身房环境的强化学习交易框架-2026-指南.jpg

💬 留言讨论