//--- add only if equity has changedif(m_equities[i] != prev_equity)
{
log_return = MathLog(m_equities[i] / prev_equity); // 递增对数
aver += log_return; // 增量的平均对数
AddReturn(log_return); // 填充递增对数数组counter++;// 返回计数器
}
prev_equity = m_equities[i];
然后用平均变化除以这些 柱状图的数量:
//--- 增量对数的平均值
aver /= counter;
然而,向年度夏普的过渡是基于时间框架比率,就好像当前 tf的所有条形图 都被计算在内:
//---------------重新计算夏普比率,在所有其他情况下都改为年值//--- how many periods of the current timeframe fit into D1double factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
sharpe = sharpe * MathSqrt(factor); // 重新计算每日值
sharpe = sharpe * MathSqrt(252); // 从每日数据中获取年度数据
读取价格的对数
您还可以找到其他参考文献
读取价格的对数
您还可以找到其他参考文献
另一个极其重要的细微差别是,在本脚本中,计算夏普时只考虑股本发生变化的条形图:
//--- add only if equity has changed if(m_equities[i] != prev_equity) { log_return = MathLog(m_equities[i] / prev_equity); // 递增对数 aver += log_return; // 增量的平均对数 AddReturn(log_return); // 填充递增对数数组 counter++; // 返回计数器 } prev_equity = m_equities[i];然后用平均变化除以这些 柱状图的数量:
然而,向年度夏普的过渡是基于时间框架比率,就好像当前 tf的所有条形图 都被计算在内:
也就是说,脚本又一次找到了每一栏股票变化 的平均利差,然后,为了找到年度利差,不是将其乘以一年中的此类栏数,而是乘以一年中该 tf 的总栏数(当然是其根数)。这是错误的,会高估最终的数字。
显然,夏普在测试仪中也是以同样的方式计算的?
该脚本会找出每 1 条股票变动 条形图的平均夏普值,然后,为了找出年度夏普值,它不是乘以一年中此类条形图的数量,而是乘以一年中该 tf 条形图的总数(当然是其根)。这样做是错误的,会高估最终数字。
我也注意到了。因此,我在自己的版本中增加了一个选项,将零条计算在内。