向量化回测与Oanda交易机器人

下面的 Python 模块会使用辅助函数 backtest 生成数据,以便对深度 Q 学习交易机器人进 行向量化回测。该代码在第 11 章中也使用过。 # # 交易机器人向量化回测 # (Q学习金融智能体) # # (c) Dr. Yves J. Hilpisch # Artificial Intelligence in Finance # import numpy as np import pandas as pd pd.set_option('mode.chained_assignment', None) def reshape(s, env): return np.reshape(s, [1, env.lags, env.n_features]) def backtest(agent, env): done = False env.data['p'] = 0 308 | 第 12 章 state = env.reset() while not done: action = np.argmax( agent.model.predict(reshape(state, env))[0, 0]) position = 1 if action == 1 else -1 env.data.loc[:, 'p'].iloc[env.bar] = position state, reward, done, info = env.step(action) env.data['s'] = env.data['p'] * env.data['r']

下面是带有 OandaTradingBot 类和部署该类的代码的 Python 脚本。 # # Oanda交易机器人 # 和部署代码 # # (c) Dr. Yves J. Hilpisch # Artificial Intelligence in Finance # import sys import tpqoa import pickle impo

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在TradingView中进行回测时,您可以选择多个货币对进行下单。以下是一个简单的示例策略,可以在回测中同时下单USDNOK和USDCAD: ``` //@version=4 strategy("USDNOK and USDCAD Backtest Strategy", overlay=true) // 获取USDNOK和USDCAD数据 usdnok = security("OANDA:USDNOK", timeframe.period, close) usdcad = security("OANDA:USDCAD", timeframe.period, close) // 定义策略入口条件 buy_signal = crossover(sma(close, 50), sma(close, 200)) // 定义策略出口条件 sell_signal = crossunder(sma(close, 50), sma(close, 200)) // 进行买入操作 if (buy_signal) strategy.entry("USDNOK Buy", strategy.long, comment="USDNOK") strategy.entry("USDCAD Buy", strategy.long, comment="USDCAD") // 进行卖出操作 if (sell_signal) strategy.entry("USDNOK Sell", strategy.short, comment="USDNOK") strategy.entry("USDCAD Sell", strategy.short, comment="USDCAD") // 计算回测指标 strategy.closedtrades total_profit = strategy.netprofit win_rate = strategy.winrate profit_factor = strategy.profitfactor // 输出回测指标 plotchar(total_profit, "Total Profit", "", location.top) plotchar(win_rate, "Win Rate", "", location.top) plotchar(profit_factor, "Profit Factor", "", location.top) ``` 在这个示例策略中,我们使用了`security()`函数来获取USDNOK和USDCAD的数据,并使用SMA指标来定义策略的入口和出口条件。如果SMA(50)上穿SMA(200),则会发出买入信号;如果SMA(50)下穿SMA(200),则会发出卖出信号。我们使用`strategy.entry()`函数来进行买入和卖出操作,并在`comment`参数中指定订单的货币对类型。最后,我们使用`plotchar()`函数将回测指标输出到图表上方,以便查看和分析。 请注意,在回测中下单时,您需要考虑到每个订单的风险和收益,并根据您的资金管理策略进行下单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值