初学者的问题 MQL5 MT5 MetaTrader 5 - 页 132

 
uncleVic:

11110000000000000111111b=> 31457535(十进制)。

零时至七时禁止交易

交易 时间为08:00至20:00

晚上9点至11点禁止使用。

谢谢你
 

可能,这是个假问题,我对mql5的语法还不是很熟悉(以及其他一切)。一个函数可以返回一个以上的值,或者一个数组或其他结构吗?

类似的情况。

int testfunc(int x, int Y)

{

  z = x + y;

  n =  x * y;

  return(z, n);

}

test = testfunc(5,10);

Print(test.x,test.y);

 
Lone_Irbis:

可能,这是个假问题,我对mql5的语法还不是很熟悉(以及其他一切)。一个函数可以返回一个以上的值,或者一个数组或其他结构吗?

不,你可以全局地描述一个数组并在一个函数中改变它的值。
 
zfs:
不,数组可以被全局描述,它的值可以在一个函数中被改变。
谢谢,我会试一试的)
 

请告知如何退订信号,一天后我又被订阅了。 信号在订阅中是活跃的,我在设置中打了个勾启用订阅,然后就OK了,但我再次打开设置,没有打勾。

 
Lone_Irbis:

可能,这是个假问题,我对mql5的语法还不是很熟悉(以及其他一切)。一个函数可以返回一个以上的值,或者一个数组或其他结构吗?

类似的情况。

简单的 (不包含类对象、字符串和动态数组)结构 可以从函数中返回。

 

谢谢,我已经设法在没有数组的情况下解决了这个问题--只是使用了没有任何预定义值的全局变量(门是打开的,一如既往)。

然而,我有一个新的,也许不太典型的问题:我知道mql5有各种内置的策略测试器控制功能。但我找不到任何一个允许以初步准备的方式处理优化结果。假设我想在所有的结果中找到一个平均利润值,这些结果中除了Х以外的所有参数值都在某个范围内?

还是只能在Excel中手工操作?如果有的话,我知道如何在Excel中做。只是有一个小研究的想法(纯粹是为我自己,出于兴趣),为此我必须以非常常规和相同的方式挖掘一整座山的表格,我想以某种方式将其自动化。

 
Lone_Irbis:

谢谢你,我已经设法在没有数组的情况下解决了这个问题--只是使用了没有任何预定义值的全局变量(一如既往,打开一扇门总是很容易)。

然而,我有一个新的,也许不太典型的问题:我知道mql5有各种内置的策略测试器控制功能。但我找不到任何一个允许以初步准备的方式处理优化结果。假设我想在所有的结果中找到一个平均利润值,这些结果中除了Х以外的所有参数值都在某个范围内?

还是只能在Excel中手工操作?如果有的话,我知道如何在Excel中做。只是有一个小研究的想法(纯粹是为了自己,出于兴趣),为此我必须以非常常规和相同的方式挖掘一整座山的表格,而我想以某种方式将其自动化......

在此阅读:https://www.mql5.com/ru/docs/optimization_frames


然后在论坛上搜索使用的例子。

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Документация по MQL5
 
MetaDriver:

在此阅读:https://www.mql5.com/ru/docs/optimization_frames


然后在论坛上搜索使用的例子。

是的,我以前遇到过几次,还有像这样 的例子。但由于某些原因,它似乎并不是我所寻找的东西。但也许只是因为我还不知道如何制作它们 :)

总之,只要不能使这只不幸的猫头鹰正常工作,就还没有关系......

因此,近期的最后一个(我希望,至少)问题是:如何正确地获得一个头寸的最后一个订单的开盘价?

我的试验猫头鹰其实最初并不是我的,而是最近发现的一个未知作者的作品。这个猫头鹰最初有这样一个奇怪的错误:它在测试器中正常工作,但在演示中却不能得到最后一个订单的价格值。

double FindLastPrice(long PositionID, bool IsSell) {

   int  i = 0, Total;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;

   HistorySelect(0, TimeCurrent());
   Total = HistoryOrdersTotal();  

   for (i = 0; i < Total; i++) {
      Ticket = (int)HistoryOrderGetTicket(i);
      PosID  = HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID);
      Magic  = HistoryOrderGetInteger(Ticket, ORDER_MAGIC);
      Type   = HistoryOrderGetInteger(Ticket, ORDER_TYPE);
      

      if (IsSell) {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_SELL)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }

      else {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_BUY)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }
   }

   if(!OrderPrice) {
         Print("Ошибка ",GetLastError());
         Sleep(5000);
   }
   return(OrderPrice);
}

它产生错误4753(未找到订单),并在演示中返回0(在测试器中,它返回所有预期的东西)。尽管测试Print表明它似乎达到了HistoryOrderGetDouble 的处理,甚至有一个不是空的Ticket...。

 

告诉我,50个评级每周1美元? 谁有5000个他每周得到100美元?

原因: