新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 856

 
Artyom Trishkin:
怎么打开的?开放的原因是什么?

对欧元建仓 的原因和对英镑建仓的原因。显然,它必须以某种方式写入欧元专家顾问的代码中。但怎么做--我不明白。

 
novichok2018:

对欧元建仓 的原因和对英镑建仓的原因。显然,它必须以某种方式写入欧元专家顾问的代码中。但怎么做--我不明白。

它是通过通常的if()与检查注释来完成的。在订单注释中,我们插入第二个订单开启的时间或订单的票据。
 
Alexandr Sokolov:
该代码是通过通常的if()实现的,并带有注释检查。在订单的注释中,您应该插入第二个订单的开仓时间或订单的票据。

如何将欧元EA代码的if()引用到英镑EA代码中?我怎样才能看到欧元代码中的英镑位置?

 
novichok2018:

如何将欧元EA代码的if()引用到英镑EA代码中?您如何看待英镑在欧元代码中的地位?

你自己把事情搞复杂了。你只需循环查看欧元订单,将每个欧元订单与所有英镑订单进行比较。如果没有一个评论是匹配的,那么你就用票据或欧元订单的开仓时间 的评论来开一个英镑订单。

 

能否请您指点一下,如何将MT5测试器中的EA优化结果 转移到MT5图表面板上的EA?如何拯救他们?

在手册和谷歌中还找不到它......

非常感谢。

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Alexandr Sokolov:

你自己把事情搞复杂了。你只需循环查看欧元订单,将每个欧元订单与所有英镑订单进行比较。而如果没有一个评论相匹配,那么你就用欧元的票据或开单时间 的评论开一个英镑的订单。

说实话--我什么都不明白。情况如下:欧元和英镑都没有订单。而我们有条件开立英镑的头寸,头寸就开了。英镑的开仓应该成为欧元开仓的信号,而且应该开仓。那么,在这个周期中我应该做什么?而且我对这些评论一点也不理解。你能写一个示例代码来帮助我理解它吗?

而在英镑代码中,当条件出现时,我们是否可以通过在OrderSend中指定所需的符号,建立两个头寸--一个是英镑,另一个是欧元?这能行吗?

 
novichok2018:

说实话--我什么都不明白。情况如下:欧元和英镑都没有订单。而英镑的开仓是有条件的,而且仓位已经打开。英镑的开仓应该触发欧元的开仓,并且应该开仓。那么,在这个周期中我应该做什么?而且我对这些评论一点也不理解。你能不能写一个示例代码让我了解一下?

int ticket;
for(int  i = 0; i < OrdersTotal(); i++)
  {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderMagicNumber() == id_number1 && OrderSymbol() == "GBPUSD")
        {
         if(SecondExpert(OrderTicket()) == false)
           {
            ticket = OrderSend(...);
           };
        };
     };
  };

//----------------------------------------------------------------------------------------------------------------------

bool SecondExpert(int ticket)
  {
   bool se = false;
   for(int i = 0; i < OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
        {
         if(OrderMagicNumber() == id_number2 && OrderSymbol() == "EURUSD")
           {
            if(OrderComment() == (string)ticket)
              {
               se = true; break;
              };
           };
        };
     };
  //-----------------------------------------------------------------
   return(se);
  }


我就是这么看的)。

 
novichok2018:

说实话,我什么都没明白。情况如下:欧元和英镑都没有订单。而我们有条件在英镑上开仓,而且仓位已经打开。英镑的开仓应该触发欧元的开仓,并且应该开仓。那么,在这个周期中我应该做什么?而且我对这些评论一点也不理解。你能不能写一个示例代码让我了解一下?

如果它是在一个EA中,它应该是这样的

if(условие для EURUSD)
 {
  OrderSend("EURUSD", ... );
  OrderSend("GBPUSD", ... );
 }

if(условие для GBPUSD)
 {
  OrderSend("GBPUSD", ... );
  OrderSend("EURUSD", ... );
 }

或者更简单

if(условие для EURUSD || условие для GBPUSD)
 {
  OrderSend("EURUSD", ... );
  OrderSend("GBPUSD", ... );
 }
 
Alexey Viktorov:

如果它是在一个EA中,它应该是这样的

或者更简单

是的,我想象到了,但我不能检查历史记录的工作,因为在欧元上开仓 应该是由于英镑的条件而发生的,但它没有反映在欧元的代码中,而历史记录是在欧元上描述的。因此,该决定的正确性存在不确定性。

 
novichok2018:

是的,这就是我所想象的,但我无法检查它是否在历史上起作用,因为在欧元上开仓 应该由英镑的条件发生,并没有反映在欧元的代码中,而历史上显示的是欧元。因此,该决定的正确性存在不确定性。

Igor Kim的函数bool ExistPositions() 返回位置存在的标志,对我来说,让它适应我的具体条件太难了。但我不认为这将在历史上得到检验。

如果没有人有一个代码,在现实世界中实际测试过的,可以给我看,我将科学地尝试。谢谢你。