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

 
Sabit Dosaev:
简单的问题。猫头鹰不能编译。 + __FUNCSIG__,代码的最后有一个错误。
+ ": "+Market_Err_To_Str(errIndex).
+ "; 订单票 = " + (string)OrderTicket()
+ "; 订单类型 = " + (string)OrderType()
+ "; 订单止损= " + DoubleToStr(OrderStopLoss(), Digits()
+ "; 新止损 = " + DoubleToStr(newStopLoss, Digits())
+ "; Bid = " + DoubleToStr(Bid, Digits())
+ "; Ask = " + DoubleToStr(Ask, Digits())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


抛出一个编译时错误。如果可以的话,请帮助我们。谢谢你!

正确插入代码。


И...从这段代码中不清楚你的错误是什么。代码应该是可重复的。

 
string LastComm(int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0;
   int l_datetime_12 = 0;
   string ls_ret_16 = "0";
   for(int l_pos_24 = 0; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
      OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
      if(l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

@Artyom Trishkin

我怎样才能把这个函数从MQL4转换到MQL5?

 

大家下午好。

你能告诉我在哪里插入函数IsConnected()以确定通信状态吗?

如果我把它插入OnTick()函数中,那么总是有连接(即有tick到达,所以有连接,没有tick到达(由于它没有或没有连接)意味着没有调用OnTick(),分别调用定义连接状态的函数IsConnected())。在这个问题上,在框架OnTick()中插入IsConnected()是没有用的(我有多少次没有关闭互联网,同样它也没有在文件中写明没有通信)。

由于这个原因,问题是在哪里正确插入IsConnected()函数,或者有什么其他方法来确定连接状态(仅适用于MT4)。

谢谢你!

 
Roni Iron:

大家下午好。

你能告诉我在哪里插入函数IsConnected()以确定通信状态吗?

如果我把它插入OnTick()函数中,那么总是有连接(即有tick到达,所以有连接,没有tick到达(由于它没有或没有连接)意味着没有调用OnTick(),分别调用定义连接状态的函数IsConnected())。在这个问题上,在框架OnTick()中插入IsConnected()是没有用的(我有多少次没有关闭互联网,同样它也没有在文件中写明没有通信)。

由于这个原因,问题是在哪里正确插入IsConnected()函数,或者有什么其他方法来确定连接状态(仅适用于MT4)。

谢谢你!

计时器上(OnTimer)。

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko:

你把变量和函数混淆了,如果是函数,就这样试试。

ALT + S为代码

谢谢你

罗曼-希雷琴科

你对变量和函数有混淆,如果是函数,可以试试这个。

ALT + S

是的,它是一种功能。

谢谢你,但由于某种原因,它给出了一个错误。

'}'- 不是所有的控制路径都会返回一个值

尽管我似乎已经在我的代码和空的模板中正确地检查了一切。

ALT + S - 谢谢你,我会考虑的。

 
wolder1:

谢谢你

是的,它是一种功能。

谢谢,但由于某些原因,它给出了一个错误

'}'- 不是所有的控制路径都会返回一个值

虽然括号似乎是正确的,在我的代码和空模板中都是如此。

ALT + S - 谢谢你,我会考虑的。

一个好的问题包含答案(C)。

 
wolder1:

谢谢你

是的,它是一种功能。

谢谢你,但由于某些原因,它给出了一个错误

'}'- 不是所有的控制路径都会返回一个值

虽然我在代码中和空模板中都用括号检查了所有的东西都是正确的。

ALT + S - 谢谢你。

函数double 应该返回一个值,而不是如果函数是空的

如果你的代码里有上面定义的变量,它们可以被注释掉+你在这里有多余的空格(Bid> = L8b))- 做了一个编辑。

double lot=0; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot=0, Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=(NormalizeDouble(Lots, 2));
       Print(" lot = ", lot); 
       return(lot);
      }
      
    if((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=(NormalizeDouble((Lots*1.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
     
    

   if((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=(NormalizeDouble((Lots*2.5), 2));
       Print(" lot = ", lot); 
       return(lot);
      }
    return(lot);  
  } 
 

上午好。

问题。在测试器中,在日光面界面(当第二天线通过时),程序应该已经下了一个挂单。已经存在的挂单,价格触及了它,它被打开了,但打开另一个挂单 的指令由于某种原因被系统忽略了。这种情况是否也会发生在真实账户中,即机器人的指令被简单地忽略,因此所需的行动没有被执行?


还有一个问题。我正在运行一个策略测试器,但我非常困惑的是,它在可视化中进行了一个星期左右,然后显示以下信息

在0:17:42.694中处理了177564个勾股事件(447条,7888506条状态)(总时间0:17:48.217)。

在0:17:42.694处理了177564个勾股事件(447条,7888506条状态)(总时间0:17:48.217)。

我不明白,他是不是太忙了,不能继续测试?还是他对我的电脑资源如此关心和担心?我没有看到任何错误信息。它只是自我终止。虽然我设定的日期不是7天,而是7个月。 我想看看从头到尾的整个测试路径。

什么宗教不允许他进行视觉测试,例如一年或几年?而且你可以直观地看到你的项目在前一年的工作情况,例如。


还有一个问题。(虽然可能是没有答案的)))怎么会发生这样的事情,测试器2圈工作正常,而就在上述题词之前的那一天却无视所有指示。程序怎么可能正常工作了几轮(开了单子,然后又关了),然后,嘣,它就忽略了一切。它既没有打开,也没有关闭。是因为测试期的结束还是有其他原因?

 

下午好!!!。

我需要最后一个关闭的订单的时间。

我写了一个函数,但它不能正确工作。

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

//|最后一个订单关闭的时间|

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

double Last_Ticets_Close()

{

Last_Ticet = 0。

Last_OrClTime = 0。


for(int i=0; i<OrdersTotal(); i++)

{

如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY ))

{

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)

{

如果(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket()。

Last_OrClTime = OrderCloseTime()。

}

}

}

}

返回(Last_Ticet)。

}

谁能告诉我什么是错的。

 
142vs:

下午好!!!。

我需要最后一个关闭的订单的时间

写了一个F-iio,但它不能正常工作。

谁能建议一下哪里出了问题。

当搜索到较晚的时间 时,要比较时间,而不是机票

原因: