EA开发系列---回测

对于EA来说,比较重要的一点是验证其有效性。验证其有效性的最好方法就是回测。回测是指,使用一段比较长的历史时期内的行情数据来验证EA性能的方法。那么我们开发出来的EA是否能用就必须得经过回测的验证。这一章,我们来看看如何使用MT5进行EA的回测。

一些准备

前面我们开发了一个名叫FirstEA的EA,我们在这个基础上添加一些功能:
1、确保前一个订单没有完结,不再进行下一次交易
2、加入一些比较初级的盈亏比的概念,我们设定为1:1.5

需要注意的是:
这一节我仍将提供完整的实例代码,但是,这个代码仍然是一个演示性的代码,不能作为真实交易使用。如果使用后果还请自行承担。

修改后的代码如下(以后以此为基础进行深入讲解):

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2020, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

//--- 输入参数定义部分
input int      indicator_param = 50;       //MA周期设定
input ulong    input_magic     = 20210427; //幻数(标识订单)

int            m_ma_handle = -1;
//+------------------------------------------------------------------+
//| EA初始化函数,由系统调用,调用场景至少包括:
//| 1、EA首次加载到图表的时候执行
//| 2、参数发生变化的时执行
//| 3、EA重新编译并且EA未从图表中卸载的时候执行
//| 4、图表周期发生变化的时候执行
//+------------------------------------------------------------------+
int OnInit() {
   
//---
    m_ma_handle = iMA(Symbol(), PERIOD_CURRENT, indicator_param, 0, MODE_SMA, PRICE_CLOSE);//初始化均线参数
    //输出基本信息:当前Symbol,当前图表周期
    PrintFormat("OnInit::symbol= %s, time_peroid= %d",  Symbol(), Period());
//---
    return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| EA析构函数,
//| 系统在环境发生变化或者EA被从所在图表中卸载的时候调用。
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
   
//---
    //输出基本信息:当前Symbol,当前图表周期以及卸载原因
    PrintFormat("OnDeinit::symbol= %s, time_peroid= %d, reason= %d",  Symbol(), Period(), reason);
    IndicatorRelease(m_ma_handle);//释放指标
}

//+------------------------------------------------------------------+
//| 每一次报价发生的时候调用,交易高峰期报价会很频繁,
//| 因此,此函数会非常频繁的被系统调用。
//| 实现的功能:
//| 1、获取15当前图表周期的简单均线(MA)值
//| 2、如果当前一K线的开盘价和收盘价从上往下穿越的时候,当前周期现价开做多
//| 3、反之开做空
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值