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)
- 盈亏比(
winLossRatio):盈利总额与亏损总额的比值,衡量了整体交易的盈利效率。盈亏比大于 1 表示盈利交易的总额大于亏损。 - 胜率(
winRate):盈利交易占所有交易的百分比,反映了交易系统的成功率。胜率较高表示系统稳定。 - 总盈利(
totalProfit):所有盈利交易的总和,反映了在所有盈利交易中获得的收益。 - 总亏损(
totalLoss):所有亏损交易的总和,反映了在所有亏损交易中遭受的损失。
策略评价指标(IndexCount)
- 起始时间(
startTime):策略开始运行的时间,帮助评估策略的历史背景。 - 总资产(
totalAssets):当前账户的总资产,用于衡量账户的当前规模。 - 运行天数(
runningDays):策略已运行的天数,反映了策略的运行时间。 - 累计收益率(
totalReturns):从策略开始到现在的总收益率,用来评估策略的长期表现。 - 年化收益率(
annualizedReturns):按照年化标准计算的收益率,有助于对比不同策略的长期回报。 - 波动率(
volatility):资产收益的标准差,反映了策略的风险程度,波动率越大表示风险越高。 - 夏普比率(
sharpeRatio):收益与风险的比值,夏普比率越高表示单位风险获得的收益越多。 - 索提诺比率(
sortinoRatio):基于下行风险的收益与风险比值,类似于夏普比率,但专注于负向波动的影响。 - 卡玛比率(
calmarRatio):年化收益率与最大回撤的比值,反映了策略的回报与风险的关系,卡玛比率越高表示策略越有效。 - 最大回撤(
maxDrawdown):历史资产的最大回撤比例,衡量账户最大亏损程度。 - 最大回撤时间(
maxDrawdownTime):发生最大回撤的时间点,帮助评估策略的耐用性。 - 最大资产时间(
maxAssetsTime):账户达到最大资产的时间点,表明策略的顶峰表现。 - 最大回撤起始时间(
maxDrawdownStartTime):最大回撤开始的时间点,有助于了解策略的回撤特征。
3. 总结
使用本类库,您可以:
- 通过
WinLossCount()方法获取策略的盈亏比、胜率以及盈利和亏损的具体数值。 - 通过
IndexCount()方法获取策略的综合评价指标,如总资产、年化收益率、夏普比率、最大回撤等。
这些指标将帮助您深入了解策略的表现,并做出进一步优化。
策略源码
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