下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

2014.02.03 09:05
程序库

CTradeStatistics - MetaTrader 5程序库

| Chinese English Русский Español Deutsch 日本語 Português

显示:
504
等级:
投票: 30
\MQL5\Scripts\\MQL5\Include\

该 CTradeStatistics 类包含所有 ENUM_STATISTICS 枚举参数计算。

所有参数, 除去净值回撤, 均可以在此类中, 依据交易历史的基础上计算。

类的主要目的是移出 TesterStatistics() 函数限制, 即, 可以在测试期间, 在任何时间, 得到必要的统计数据, 如同在策略测试员之外。

使用测试员以外的例子

所有参数通过调用 CTradeStatistics::Calculate() 函数计算。在成功执行函数之后, 结果可通过调用许多方法得到, 它们的名字类似统计参数名。 

代码例子:

CTradeStatistics m_stat;

if(m_stat.Calculate()) PrintFormat("LR 相关性: %.2f",m_stat.LRCorrelation());
else Print(m_stat.GetLastErrorString());

结果:

2012.09.13 08:52:19 TradeStatistics (EURUSD,H1) LR 相关性: 0.97

 

该 CTradeStatistics::PrintStatistics() 函数可以用于输出所有参数至日志。

if(m_stat.Calculate()) PrintStatistics();

在 TradeStatistics.mq5 脚本中可以发现简单的与类工作的例子。

TradeStatisticsPanel 面板设计用于将结果更好的可视化。 

在测试员中使用的例子

为了正确计算净值回撤, 应该使用 CTradeStatistics::CalculateEquityDD() 函数。

代码例子:

#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   m_stat.CalculateEquityDD(CALC_INIT);

   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   m_stat.CalculateEquityDD(CALC_DEINIT);

   if(m_stat.Calculate())m_stat.PrintStatistics();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   m_stat.CalculateEquityDD(CALC_TICK);

  }

应当指出的是, 统计指标的可靠值可以在程序中的任何时间获得, 而不是仅在试验结束使用 OnTester()OnDeinit() 的事件。计算可使用 OnTrade() 事件更新, 如下例所示:

void OnTrade()
  {
//--- 阻断同一秒内的重复请求.
   static datetime time_on_trade;
   if(time_on_trade==TimeTradeServer())return;
   time_on_trade=TimeTradeServer();

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

  }

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/1081

up3x1_Krohabor_D up3x1_Krohabor_D

该 EA 基于三条均线并使用止损或止盈退出。它依趋势设置入场点。

up3x1 up3x1

该 EA 基于三条均线并使用止损或止盈退出。它在趋势反转结论之上设置入场点。

ATR_OpenIndent_v2 ATR_OpenIndent_v2

该指标显示较久时间帧的开盘价 (例如, 日线时间帧) 并绘制缩进线至开盘价, 从而形成一个范围。

交易信号模块: 纯 MA 交叉信号 交易信号模块: 纯 MA 交叉信号

简单 MA 交叉信号用于 EA 向导