输入/搜索内容

策略评价指标计算类库

模板类库
创建日期: 2024-11-21 15:24:25
最后修改: 2 年前
复制: 0
点击次数: 624
1
关注
183
关注者

策略评价指标计算类库使用说明

本类库提供了一些方法,用于帮助用户评估交易策略的表现。下面通过实例说明如何使用这些方法,并解释返回的指标及其含义。

1. 使用方法

初始化数据

在使用本类库之前,需要调用 $.InitData() 方法来初始化数据,确保所有必要的参数都被正确设置。

javascript
$.InitData(); // 初始化参数

创建交易订单

示例中展示了如何使用 exchange.CreateOrder() 创建一个交易订单。CreateOrder 方法可以用来模拟买入和卖出操作。下面是一个基本的交易流程:

  • 先通过 CreateOrder 方法进行买入操作。
  • 等待一定时间后,执行平仓操作。
javascript
// 创建买入订单 exchange.CreateOrder('rb888', 'buy', -1, 30); // 买入 rb888 合约 exchange.CreateOrder('hc888', 'sell', -1, 1); // 买入 hc888 合约 // 等待 1 天后 Sleep(1000 * 60 * 60 * 24); // 创建平仓订单 exchange.CreateOrder('rb888', 'closebuy', -1, 30); // 平仓 rb888 合约 exchange.CreateOrder('hc888', 'closesell', -1, 1); // 平仓 hc888 合约

计算盈亏比

$.WinLossCount() 方法用于计算并返回策略的整体盈亏比。你可以调用此方法来获取所有合约的统计数据,也可以传入特定的合约名称,计算某一合约的盈亏比。

javascript
// 获取所有合约的盈亏比 const overallWinLoss = $.WinLossCount(); Log('整体盈亏比:'); Log(`盈亏比:${overallWinLoss[0]} (盈利总额与亏损总额的比值)`); Log(`胜率:${overallWinLoss[1]} (盈利交易占总交易的百分比)`); Log(`总盈利:${overallWinLoss[2]} (所有盈利交易的总和)`); Log(`总亏损:${overallWinLoss[3]} (所有亏损交易的总和)`); // 获取指定合约(如rb888)的盈亏比 const specificWinLoss = $.WinLossCount(['rb']); Log('需求盈亏比(rb 合约):'); Log(`盈亏比:${specificWinLoss[0]} (盈利总额与亏损总额的比值)`); Log(`胜率:${specificWinLoss[1]} (盈利交易占总交易的百分比)`); Log(`总盈利:${specificWinLoss[2]} (所有盈利交易的总和)`); Log(`总亏损:${specificWinLoss[3]} (所有亏损交易的总和)`);

计算策略评价指标

$.IndexCount() 方法返回多个策略评价指标,可以帮助用户了解策略的整体表现。这些指标包括起始时间、总资产、累计收益等。

javascript
const indexMetrics = $.IndexCount(); Log('策略评价指标:'); Log(`起始时间:${indexMetrics[0]} (策略开始运行的时间)`); Log(`总资产:${indexMetrics[1]} (当前账户总资产)`); Log(`运行天数:${indexMetrics[2]} (策略运行的天数)`); Log(`累计收益率:${indexMetrics[3]} (从策略开始到现在的总收益率)`); Log(`年化收益率:${indexMetrics[4]} (按照年化标准计算的收益率)`); Log(`波动率:${indexMetrics[5]} (资产收益的标准差,反映风险程度)`); Log(`夏普比率:${indexMetrics[6]} (收益与风险的比值)`); Log(`索提诺比率:${indexMetrics[7]} (基于下行风险的收益与风险比值)`); Log(`卡玛比率:${indexMetrics[8]} (年化收益率与最大回撤的比值)`); Log(`最大回撤:${indexMetrics[9]} (历史资产的最大回撤比例)`); Log(`最大回撤时间:${indexMetrics[10]} (发生最大回撤的时间点)`); Log(`最大资产时间:${indexMetrics[11]} (账户达到最大资产的时间点)`); Log(`最大回撤起始时间:${indexMetrics[12]} (最大回撤开始的时间点)`);

2. 返回的指标及其含义

盈亏比指标(WinLossCount)

  1. 盈亏比winLossRatio):盈利总额与亏损总额的比值,衡量了整体交易的盈利效率。盈亏比大于 1 表示盈利交易的总额大于亏损。
  2. 胜率winRate):盈利交易占所有交易的百分比,反映了交易系统的成功率。胜率较高表示系统稳定。
  3. 总盈利totalProfit):所有盈利交易的总和,反映了在所有盈利交易中获得的收益。
  4. 总亏损totalLoss):所有亏损交易的总和,反映了在所有亏损交易中遭受的损失。

策略评价指标(IndexCount)

  1. 起始时间startTime):策略开始运行的时间,帮助评估策略的历史背景。
  2. 总资产totalAssets):当前账户的总资产,用于衡量账户的当前规模。
  3. 运行天数runningDays):策略已运行的天数,反映了策略的运行时间。
  4. 累计收益率totalReturns):从策略开始到现在的总收益率,用来评估策略的长期表现。
  5. 年化收益率annualizedReturns):按照年化标准计算的收益率,有助于对比不同策略的长期回报。
  6. 波动率volatility):资产收益的标准差,反映了策略的风险程度,波动率越大表示风险越高。
  7. 夏普比率sharpeRatio):收益与风险的比值,夏普比率越高表示单位风险获得的收益越多。
  8. 索提诺比率sortinoRatio):基于下行风险的收益与风险比值,类似于夏普比率,但专注于负向波动的影响。
  9. 卡玛比率calmarRatio):年化收益率与最大回撤的比值,反映了策略的回报与风险的关系,卡玛比率越高表示策略越有效。
  10. 最大回撤maxDrawdown):历史资产的最大回撤比例,衡量账户最大亏损程度。
  11. 最大回撤时间maxDrawdownTime):发生最大回撤的时间点,帮助评估策略的耐用性。
  12. 最大资产时间maxAssetsTime):账户达到最大资产的时间点,表明策略的顶峰表现。
  13. 最大回撤起始时间maxDrawdownStartTime):最大回撤开始的时间点,有助于了解策略的回撤特征。

3. 总结

使用本类库,您可以:

  • 通过 WinLossCount() 方法获取策略的盈亏比、胜率以及盈利和亏损的具体数值。
  • 通过 IndexCount() 方法获取策略的综合评价指标,如总资产、年化收益率、夏普比率、最大回撤等。

这些指标将帮助您深入了解策略的表现,并做出进一步优化。

策略源码
JavaScript
var openContracts = {};  // 追踪所有未平仓的合约,按 baseSymbol 存储
var profitLossHistory = {};  // 追踪每个合约的盈亏历史
var processedOrderIds = new Set();  // 记录已处理的订单 ID
var winLossCount = {};  // 按 baseSymbol 统计胜败和总交易数量
var symbolList = [];  // 追踪所有出现过的 baseSymbol

$.WinLossCount = function(symbols = null) {
    while (!exchange.IO("status")) {
        Sleep(3000);
    }
    // 获取所有历史订单
    var totalOrders = exchange.GetHistoryOrders();
评论
全部评论 (0)
暂无数据
暂无数据
  • 1
iPhone 下载
社区
回测系统
© 2015 - ∞ YouQuant 豫ICP备19046564号