在Discovery进行的MetaTrader 5实验 - 页 16

 
另一个问题,它是什么结构?803?
 

建立803。该账户是真实的10267。

我认为,既然有这么多问题,我是唯一一个有 "mnj "的人?

最近在3-4周前,测试人员在价差方面还比较正确。 但在行为方面...

问题在于:实际上任何蜡烛图都是在20点以内形成的。 然后50-100点或价格在极值或接近收盘时上涨/下跌10点。而这个节拍很容易被一个优化黄牛的测试者发现。

一般来说,测试器不适合用于剥头皮者/割肉策略。

我理解滴答测试器的缓慢性。但在我看来,对于交流,你不能没有它。

 
dimeon:
我如何做到这一点?

打开图表。打开数据窗口。在图表中滚动到所需的时间点。在图表上移动鼠标,在数据窗口中看到价差值。

我已经看过了。在大量的柱子 上--零点差。就是说,数据是不完整的。如果传播值为零,则使用最后的非零值。

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
那么,在测试人员中,情况就不同了。可视化器显示,在一天的前半部分,点差是偏离标志的,在下午,平均是20-50点,在晚间时段,它再次偏离标志。
 

让我用图片解释一下测试器中发生的情况。

测试人员在测试开始前下载至少前一年的历史数据,并分析其分布。如果测试从2013.01.01开始,那么2012年最后一个非零点差是在2012.12.10上午10点09分记录的,它是2990点。


下一个非零点差记录在2013.03.15 18:49,金额为1190。


在这些时间之间,价差为0。也就是说,从2013年1月1日到3月15日晚,最后一个已知价差是2990(我称之为 "最后的非零值")。直到最后一个非零值变成1190。

之后,我们又得到了零差价,这就是为什么我们一直在使用1190。这个记录一直到2013.03.18 18:46。


再过3分钟后。


然后,零的数量比年初要少得多。尽管如此,这一系列的零仍然存在。

这就解释了一系列相同的价差

情况是不愉快的,我们将解决它。测试器中的价差将是足够的。

 

点差将被整理出来,即使经纪人没有 详细的点差导入 其历史记录中,我们也会正确地设置它们。

这将允许正常的测试。

 
stringo:

让我用图片解释一下测试器中发生的情况。

测试人员在测试开始前加载至少前一年的历史数据,并分析其分布。如果测试从2013.01.01开始,那么2012年最后一个非零点差是在2012.12.10上午10点09分记录的,它是2990点。


下一个非零点差记录在2013.03.15 18:49,金额为1190。


在这些时间之间,价差为0。也就是说,从2013年1月1日到3月15日晚,最后一个已知价差是2990(我称之为 "最后的非零值")。直到最后一个非零值变成1190。

之后,我们又得到了零价差值,这就是为什么我们一直在使用1190。这个记录一直到2013.03.18 18:46。


再过3分钟后。


然后,零的数量比年初要少得多。尽管如此,这一系列的零仍然存在。

这解释了一系列相同的价差。

情况是不愉快的,我们将解决它。测试器中的价差将是足够的。

从年初开始测试期货是没有意义的,因为大家都已经交易了3月份的期货。

用适当的四舍五入来计算平均价差会更合理。

另外,请减少测试者的音量。大多数的点位都是在价格在现实中根本没有移动的时候出现的。在测试器中,价格多次达到极值,这反映在不充分的测试中。而且优化的时间也减少了。

 

1.a) 关于胶着的期货......不是很了解,但在我看来,测试器不能与它们一起工作(没有一笔交易,我试图测试终端中的标准EA)。

b) 在bx的mt5中,已经有主要蓝筹股的期货被粘住,不要落后。

c) 如果能在测试器中手动设置点差就更好了,这样优化策略就更容易了。

 

2.a) 关于反馈......如果能像Quicksilver那样将其作为一个交易表(当然是作为一个可插拔的工具),并能像Quicksilver那样在表中设置过滤器(例如,我想只看到100手的大宗交易以及它们是如何通过的,按出价还是按要价)......我重复--这不会有害,但不是那么必要。

b) 但是在获得的MqlTick结构(SymbolInfoTick(_Symbol,latest_price))中添加另一个参数,即交易是如何以Bid还是Ask开盘的--我认为这是必要的,或者作为市场信息的单独请求,这个信息是由交易所传递的,而且很多机器人都需要它,包括我的机器人。要计算一笔交易是买入还是卖出是不现实的......因为有一些场外交易,交易量很大,并不直接影响市场,还有许多其他细微差别......。我认为,在结构中增加这个参数,对开发者来说并不困难,而且会带来很多好处。

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура для получения текущих цен - Документация по MQL5
 

3.当试图下挂单 时,EA出现了 "请求中的订单到期日无效 "的错误。例如,我做了一个EA,它只下挂单,但不做其他事情......在MT5的外汇上,它正常下挂单,但在FORTS上,错误出现了。 订单的到期日是充分的--我通过在屏幕上显示它来检查。我是唯一有这种问题的人吗?原因是什么呢?专家顾问代码如下


#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link      "http://www.mql5.com"

#property version   "1.00"

input int tp=150;

input int Deviation=5;

MqlTradeRequest mrequest; 

MqlTradeResult mresult;   

int OnInit()

  {

   return(0);

  }

void OnDeinit(const int reason)

  {

  }


void OnTick()

  {

   Open_Pending_Order(1,SymbolInfoDouble(_Symbol,SYMBOL_BID)+NormalizeDouble(tp*_Point,_Digits), 1, 111);

   Sleep(500);

  return;

  }

//+------------------------------------------------------------------+

void Open_Pending_Order(int type, double prise, double lot, long magic)

  {

   ZeroMemory(mrequest);

   mrequest.action = TRADE_ACTION_PENDING;                               

   mrequest.magic = magic;                                              

   mrequest.symbol = _Symbol;                                            

   mrequest.type_filling = ORDER_FILLING_RETURN;                            

   mrequest.deviation=NormalizeDouble(Deviation*_Point,_Digits);                                                

   mrequest.type_time=ORDER_TIME_SPECIFIED;

   mrequest.expiration=TimeCurrent()+6000;                                    

   mrequest.volume = lot; 

   mrequest.sl = 0;  

   mrequest.tp = 0; 

   mrequest.price = prise;

   Print(" время экспирации ",mrequest.expiration," тип экспирации  ",mrequest.type_time," цена ",mrequest.price);

    if(type==1)

      {                                    

       mrequest.type = ORDER_TYPE_BUY_STOP;                              

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Buy по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order," !!");  

       else Print("Запрос на установку ордера Buy по символу ",_Symbol, " с маджиком ",magic," не выполнен - ответ сервера:" , mresult.retcode," код ошибки " ,GetLastError());

      }

    if(type==2)

      {                                    

       mrequest.type = ORDER_TYPE_SELL_LIMIT;     

       OrderSend(mrequest,mresult);

       // анализируем код возврата торгового сервера

       if(mresult.retcode==10009 || mresult.retcode==10008) Print("Ордер Sell по символу ",_Symbol, " с маджиком ",magic," успешно помещен, тикет ордера #:",mresult.order,"!!");

       else Print("Запрос на установку ордера Sell  по символу ",_Symbol, " с маджиком ",magic," не выполнен - код ошибки:" , mresult.retcode,"  " ,GetLastError());                         

      }

   return; 

  }

它说(我试图改变过期时间)。

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) SBRF-6.13请求用魔法号码111下购买订单失败 - 服务器回复:10022 错误代码4756

2013.04.24 17:40:05 udalit (SBRF-6.13,M1) 过期时间 2013.04.25 17:00:00 过期类型 2 价格 10016.0