下载MetaTrader 5
要添加评论,请登录注册
MQL5 Cloud Network可以加速计算。试试吧!
inspiroy
13
inspiroy 2013.09.22 02:04 
测试发现MT4 的EMA计算值与理论值有差别:

1. 测试代码
//*----------测试EMA理论值和实际值
//*-------打印最新的3根柱子的开盘价
int i;
for(i=0; i<3; i++)
{
Print("Open[" + i + "] = " + Open[i]);
}
//-------*/

//EMA的理论计算值
double EMValue;
EMValue = Open[0]*3/6 + Open[1]*2/6 + Open[2]*1/6;
Print("EMA理论值 = " + EMValue);
//EMA实际运算值
int Trx_Prd = 3;
EMValue=iMA(NULL,0,Trx_Prd,0,MODE_EMA,PRICE_OPEN,0);
Print("EMA实际值 = " + EMValue);

return(0);
//-------*/


2. EMA计算错误:

输出值为:
2013.09.22 09:49:43 2013.09.11 23:33 For_Test EURUSD,M1: EMA实际值 = 1.33178695
2013.09.22 09:49:43 2013.09.11 23:33 For_Test EURUSD,M1: EMA理论值 = 1.33177833
2013.09.22 09:49:43 2013.09.11 23:33 For_Test EURUSD,M1: Open[2] = 1.33179000
2013.09.22 09:49:43 2013.09.11 23:33 For_Test EURUSD,M1: Open[1] = 1.33171000
2013.09.22 09:49:43 2013.09.11 23:33 For_Test EURUSD,M1: Open[0] = 1.33182000

3.运行环境:
MT4版本: v4,build 509,24,jun 2013,

borker:MBT 真实帐户 backtesting

My email: smartinspiroy@sina.com

BaiChun Li
838
BaiChun Li 2013.09.23 08:58  

为什么会这样呢?

没什么大不了的!那是因为... ...你如果让图表里面只有Trx_Prd根K线的话,我相信会正确的,那就说明是人的Bug,否则就是MT的Bug,呵呵。

BaiChun Li
838
BaiChun Li 2013.09.23 08:59  

为什么会这样呢?

没什么大不了的!那是因为... ...你如果让图表里面只有Trx_Prd根K线的话,我相信会正确的,那就说明是人的Bug,否则就是MT的Bug,呵呵。

inspiroy
13
inspiroy 2013.09.23 09:28  

不是很明白这句话:
你如果让图表里面只有Trx_Prd根K线的话,我相信会正确的,那就说明是人的Bug,否则就是MT的Bug。

回复: 我用的是back-test, back-test会去找历史中心的数据来计算,柱子数肯定多于Trx_Prd根,ema的理论计算方法只会跟柱子数和每根柱子的价格有关,不管历史中心的柱子数有多少,只要有Trx_Prd根柱子数参与计算,理论上就能计算出ema的理论值出来;难道iMA在计算EMA时,会将多于Trx_Prd根的柱子参与计算?有点不明白这样的目的是什么?

上面的代码是用back-test来测试的, print输出也是 系统生成的,没有人为的修改;可能的人为错误会是什么呢?

非常感谢你和我一起讨论

enbo lu
版主
1893
enbo lu 2013.09.25 06:13  
你测试实际值时Trx_Prd 等于几?
/
要添加评论,请登录注册