多币种顾问问题 - 页 6

 

嗯,这不是这里的投诉。

就像你第一次看到规则一样,....。这个问题已经讨论过了--在第一个冠军线程中--见主页

 

我正在测试和优化我在Metaquotes历史上的专家顾问。 起初,我使用208构建(为Alpari安装) - 我需要反击点,但209没有。后来我用同样的参数和从Metaquotes下载的同样的历史记录,以同样的方式测试了专家顾问的构建209(由Metaquotes安装)。结果是非常不同的。另外,历史上的条数和模拟点的数量也不同,即使测试的质量相同。 请告诉我构建208和209的操作算法不同的原因,或者是由于符号的设置(点差、互换、存款、停止水平等),一个是Alpari的,另一个是Metakvotes的?或者原因是别的什么?我如何在Metakvotes的数据上做适当的测试和优化--历史上有一个来自Alpari的208构建?我在哪里可以下载208版本(Metakvotes安装)?

我使用Renat的配方"Automated Trading Championship 2007: Common Errors in EAs " 下载了历史记录,之前删除了所有的.hst文件。

战略测试仪报告
工人
MetaQuotes-Demo (Build 208)


符号 欧元兑美元(欧元对美元)
期间 15分钟 (M15) 1999.01.05 13:00 - 2007.09.07 22:45
模型 所有刻度线(基于所有最小的可用周期,对每个刻度线进行分形插值)。
参数
历史上的酒吧 215177 模拟的蜱虫 13375536 建模质量 89.96%
初始存款 10000.00
净利润 3484.57 利润总额 14828.81 全部损失 -11344.24
盈利能力 1.31 对胜利的期望 7.20
绝对缩水 896.44 最大缩水 1255.96 (12.12%) 相对缩减 12.12% (1255.96)
交易总额 484 空头头寸(赢利百分比) 249 (47.79%) 多头头寸(赢利百分比) 235 (52.77%)
盈利的交易(占全部的百分比) 243 (50.21%) 亏损交易(占全部的百分比) 241 (49.79%)
最大的 有利的贸易 426.34 亏损的交易 -99.96
平均值 有利的交易 61.02 亏损的交易 -47.07
最大数量 连赢 6 (466.42) 连续损失(亏损) 7 (-275.39)
最大 连续盈利(赢的次数) 653.20 (4) 连续损失(损失次数) -286.62 (3)
平均值 连续赢利 2 连续损失 2

战略测试仪报告
工人
MetaQuotes-Demo (Build 209)


符号 欧元兑美元(欧元对美元)
期间 15分钟 (M15) 1999.01.05 13:00 - 2007.09.07 22:45 (1970.01.01 - 2007.09.08)
模型 所有刻度线(基于所有最小的可用周期,对每个刻度线进行分形插值)。
参数
历史上的酒吧 215437 模拟的蜱虫 15419309 建模质量 89.96%
初始存款 10000.00
净利润 1882.77 利润总额 13653.61 全部损失 -11770.84
盈利能力 1.16 预期报酬率 3.82
绝对缩水 896.21 最大缩水 1331.85 (12.52%) 相对缩减 12.52% (1331.85)
交易总额 493 空头头寸(赢利百分比) 263 (48.67%) 多头头寸(赢利百分比) 230 (51.30%)
盈利的交易(占全部的百分比) 246 (49.90%) 亏损交易(占全部的百分比) 247 (50.10%)
最大的 有利的贸易 426.34 亏损的交易 -99.96
平均值 有利的交易 55.50 亏损的交易 -47.66
最大 连赢 6 (466.42) 连续损失(亏损) 7 (-275.39)
最大 连续盈利(赢的次数) 522.72 (3) 连续损失(损失次数) -318.74 (5)
平均值 连续赢利 2 连续损失 2

 

很明显,是报价信息本身的问题。例如,不同历史版本的开盘价/收盘价 略有不同,因此在一个条形图内的价格走势的建模也会略有不同!而且,由于止损=40/50,这已经会产生影响。

另外,不太清楚--你两次都是在mt4 Alpari上做的测试吗?(有不同的引证)。

还是第二次使用mt4 MQ?也许,那里的价差是不同的。而对于500次交易来说--1个点已经是"-500 "了。

而交换的内容也是一样的......

 
rid:

很明显,是价格的馈赠本身。例如,不同历史版本的开盘/收盘价格略有不同,因此,条形图内的价格走势将被模拟得略有不同!而在止损=40/50时,这已经会产生影响。

另外,不太清楚--你两次都是在mt4 Alpari上做的测试吗?(有不同的引证)。

还是第二次使用mt4 MQ?也许,那里的价差是不同的。而对于500次交易来说--1个点已经是"-500 "了。

和互换是一样的...


这里有什么投稿?报价是由Metacvotecs历史中心上传到两个终端。第一个终端是由Alpari安装(build 208)创建的,第二个是由Metakvotes安装(build 209)创建的。两人依次登录到一个测试账户(由Metakvotes颁发,用于参加冠军赛),并根据Renat的配方上传了报价。前300笔左右的交易几乎是1:1(这证实了报价、价差、掉期......的特性),然后就不同了(见报表)。令人费解的是同样质量的模型:()

还有一件令人惊讶的事情:专家顾问并不复杂,它只使用一个内置指标,在Alpari数据上显示的结果比Metakvotes历史中心数据好2-3倍。 而且没有任何优化使它甚至接近Alpari的结果。尽管在用恒定的0.1手MOL约35,PF=2.5进行交易时,交易有时会持续数天,即TS显然不是黄牛/黄牛党。

附加的文件:
test.zip  278 kb
 

我可以猜测的另一件事是这样的。

我也遇到过历史问题,当我把一个MT4终端登录到不同的DC时。起初,一切似乎都很好。然后我一定是点击了某个地方,一家经纪公司的历史碎片(为同一对)开始爬到另一家公司的历史中。或者大块的东西开始完全掉落。最后,一切都变得如此混乱,我拒绝在一个终端上开立不同经纪公司的账户。

现在我的copm里有四个来自不同经纪公司的Mt4账户,但这个乱七八糟的问题已经解决了!试着以同样的方式来做。

P.S 我还注意到。有一个经纪公司Masterforex(不要认为这是一个广告 - 只是说说而已...)。因此,在它的报价下,我的EA不知为何在历史上显示出优秀的结果。但在Lite或Alpari上--在相同的参数和质量下--就有点差了。

 
rid:

我可以猜测的另一件事是这样的。

我也遇到过历史问题,当我把一个MT4终端登录到不同的DC上时。起初,一切似乎都很好。然后我一定是点击了某个地方,一家经纪公司的历史碎片(为同一对)开始爬到另一家公司的历史中。或者大块的东西开始完全掉落。最后,一切都变得如此混乱,我拒绝在一个终端上开立不同经纪公司的账户。

现在我的copm里有四个Mt4账户,来自不同的经纪公司,但我用这个乱七八糟的东西把问题解决了!试着做同样的事。


谢谢,但我知道这个问题。我在上面写道,我采取了干净的安装,安装了它们,删除了所有的.hst文件,将两个终端分别登录到Metacvotes发出的一个账户, 从配置文件夹中删除了所有其他终端,所以不可能有任何混淆,外国的历史碎片也无处可寻。而纯粹的测试终端Alpari,在它上面我早先得到了2-3倍的好结果,根本就没有登录过任何经纪公司或账户。它装的是Alpari .hst文件。
 
问题是,为什么不同的条数 和模拟刻度会有相同的模拟质量?还有,哪里能保证下载的文件夹有更大的历史量而没有遗漏?事实证明。 测试人员对模拟质量的定量评估不能被信任?
 

你不能相信任何人!

我不认为测试者对条数有反应。

至于质量评价,我们可以看到,质量的数量是由以下标准来评价的。- 测试的时间框架如何完全被里面的分钟报价填满。如果它是满的,那么=90%。如果它没有被完全填满,那么质量就会降低。

但我在Fuj和Kiwi的所有TFs(在加载时)的报价都有莫名其妙的下降(从9月到2006年10/11月)。但测试者没有注意到这一点,并给出了=90%,因为任何时间框架中的所有其他条形都完全充满了分钟。

而事实上,这些条形图是缺失的--测试者并没有看到。

也许你在某个地方错过了一两个星期的历史。因此,有区别。

Z

 

多币种EA的问题又出现了。有必要使其中一个货币对在开盘价模式下工作!我在文章中找到了这样一个设计的例子。我首先把它粘贴到了单人版。一切顺利。

int start()
//ждем открытия нового бара. Если появл. новый бар - проверяем возможность сделки
 {if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0];

然后我以同样的方式将其插入我的多货币专家顾问中。而且所有的交易都是以开盘价 进行的。但我不需要所有的人。我只需要一个--第二对。我是这样做的。

我在全局中声明--静态int prevtime = 0。

ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 static int prevtime = 0;
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
 
int start()
  {  
 int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders<3)                 //если  открытых ордеров <3
  { 
if (выключатель 1 вкл) {РАСЧЕТ ИНДЮКОВ И ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if (выключатель 2 вкл) 
{
if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0]; 
 
РАСЧЕТ ИНДЮКОВ И ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
  }
//========================================================================
for (int x=0; x<OrdersTotal(); x++)                                             {
    if (OrderSelect(x, SELECT_BY_POS, MODE_TRADES)) 
{       
if (UseTrailing 1) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if (UseTrailing 2) - Трейлинг второй пары
}
//======================================================================
   return(0);
  }

此外,在第二对的每张票后面都插入了:

ticket=OrderSend("EURUSD", OP_BUY,Lots,_ask ,3,_bid-SL_long*_point,
                       _ask +TP_long*_point,"M_4",MagicEURUSD,0,CLR_NONE);
 
                        Sleep(30000);
                       if(ticket < 0)   {
                           prevtime = Time[1];
                         }

没有什么是有效的!该EA继续在第二对的所有刻度上工作!

我尝试了另一种结构。我又试了一次。

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
//-------------------------------------------------------
 
if (isNewBar) {

我事先设定了变量。

int         ExpertBars;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
ExpertBars = Bars;
//----------------
   return(0);

但....同样的故事。当我把它放在开头时--所有的对子都是通过开盘价来工作的。但当我想把它应用于一双鞋时--它却不起作用了!这就是为什么我在使用它时,会有很多人不知道该怎么办。我已经是第三天在挣扎了。

我很乐意听取任何意见和建议....。

 
rid:
ME所标示的红色名称指的是EA所依附的工具。尝试使用iTime()而不是Time[]。