资料库: CTradeStatistics

 

CTradeStatistics:

计算 ENUM_STATISTICS 枚举参数的类

作者: Andrey Voytenko

 
Automated-Trading:

CTradeStatistics

作者:Andrey Voytenko

下午好!

我想知道是否有可能在 OnTester() 函数中加入 LR Correlation,以便通过 自定义 max以此标准优化智能交易系统

 
forexman77:

我想知道是否可以将 LR Correlation 放入 OnTester() 函数....。

说明中举了一个 OnTrade() 的例子。没有什么可以阻止您将计算转移到 OnTester() 中。

 
avoitenko:

说明以 OnTrade() 为例。您可以将计算转移到 OnTester()。

我对 mql5 不是很熟悉,如有明显错误,请原谅。

我尝试在 OnDeinit 之前的 EA 代码中这样做:

double OnTester()
{
double lrk=TesterStatistics(STAT_LR_CORRELATION);
  return(lrk);
}

出现错误"'STAT_LR_CORRELATION' - 无法转换枚举"。

如果是这样:

double OnTester()
  {
//--- 阻止同一秒钟内的重复请求。
   static datetime time_on_trade;
   if(time_on_trade==TimeTradeServer())return;
   time_on_trade=TimeTradeServer();

//--- 更新统计数据
   if(!m_stat.Calculate())Print(m_stat.GetLastErrorString());

  }

错误:"'return' -函数 必须返回一个值","'}' 不是所有控制路径都返回一个值。- 并非所有控制路径都返回值"。

EA 中的 1 和 2 行:

#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;

告诉我哪里出错了?

 

我是反复试验才成功的:

double OnTester()
{
CTradeStatistics m_stat;  
if(m_stat.Calculate()) PrintFormat("LR Correlation: %.2f",m_stat.LRCorrelation());
else Print(m_stat.GetLastErrorString());
double LRC=(double)m_stat.LRCorrelation();
return(LRC);
}
我认为它成功了......?
 

安德烈,有一些意见。

1. 第 500 行

if(m_balance_data.At(i)!=0.0) 更正为 if(m_balance_data.At(i-1)!=0.0)


2.第 511 行
没有将分母 m_initial_deposit 检查为 0。

确保 使用 m_sharpe_ratio 计算年度夏普比率(Annual Sharpe Ratio)选项和无风险利率(RiskFreeRate)选项。

选项的 m_sharpe_ratio 计算,因为这只是选项之一,而且与标准选项特别不同。

 

我发现该代码无法计算与股票缩水相关的任何统计数据。有人能用自己的代码成功计算股票缩水吗?

 

我一定是误解了你的问题,因为这个简单的答案不可能是你想要的,对吗?---> 使用 MT5 交易类,您可以创建一个账户对象CAccountInfo acc;acc 是已创建的账户信息 对象,可以让您快速访问所有账户细节功能。老实说,您可以使用更简单的代码 acc.Profit(),如果是正数就是利润,如果是负数就是缩水,对吗? 负资产利润与缩水相同,Profit() 是资产和余额之间的差额。

如果您的问题更复杂,请补充细节;)

 
感谢安德烈!干得漂亮
 
没有平均滞留时间?
 

完美工作!

如果您想避免编译警告

您需要在枚举 deal_result 中添加 null 元素:

//+------------------------------------------------------------------+
//|交易结果|
//+------------------------------------------------------------------+
enum deal_result
{
NOVALUE=0, //<---- added
WIN=1,
LOSS
};