[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 534

 
Alex007:
由于你被踢出了一个单独的主题,我想在这里问你,因为我没有找到类似的问题。

我在MT4上交易我的专家顾问。在这个帖子之前,一切都很好。今天我决定禁用该EA,我按下了工具栏上的相应按钮,图表上出现的不是笑脸,而是一个十字。而在那之后,突然有一笔交易开启了。一,二...越来越多。我打开了专家顾问的设置,并在相应的窗口中启用了OnlyBuy(EA仍处于禁用状态)。交易又完成了,而且是逆向销售!然后我重新打开设置,禁用其交易能力(未勾选)。这也是行不通的。专家顾问有点像生活在自己的生活中。我与支持部门联系,得到以下答复:" 这很可能是你的专家顾问的问题。请删除您的终端并从我们的网站上安装一个新的终端,不要安装任何其他的EA
尊敬的专家顾问,能否请您谈谈对这个问题的看法,特别是对强调部分的看法。我特别喜欢 "很可能 "这个明确的措辞。 这怎么可能,问题出在哪里?

你没有被踢出去,我轻轻地暗示了数据的不足。

"我的车无法启动。给我买车的经销商打电话,他们说要给制造商打电话" - 听起来很对

 
Alex007:
由于我被踢出了一个单独的主题,我将尝试在这里问,因为我没有找到类似的问题。

我在MT4上交易我的专家顾问。在这个帖子之前,一切都很好。今天我决定禁用EA,我按下了工具栏上的EA按钮,我的图表上出现的不是笑脸,而是十字架。而在那之后,突然有一笔交易开启了。一,二...越来越多。我打开了专家顾问的设置,并在相应的窗口中启用了OnlyBuy(EA仍处于禁用状态)。交易又完成了,而且是逆向销售!然后我重新打开设置,禁用其交易能力(未勾选)。这也是行不通的。专家顾问有点像生活在自己的生活中。我与支持部门联系,得到以下答复:" 这很可能是你的专家顾问的问题。请删除您的终端并从我们的网站上安装一个新的终端,不要安装任何其他的EA
尊敬的专家顾问,能否请您谈谈对这个问题的看法,特别是对强调部分的看法。我特别喜欢 "很可能 "这个明确的措辞。 怎么会这样,问题出在哪里?
如果不审查代码,你就无法知道哪里出了问题。首先想到的是,deinit()有一个条件,在程序关闭后打开交易。你从哪里得到这样的EA?
 
我很抱歉--没有奇迹!我没有注意到两个MT是怎么开的。我在做其中一个的交易,另一个在做和平的交易。这也是旧时代的厄运--我似乎很会用电脑,这里有这样的东西....。
 
VladislavVG:

注意--在MKL4中,优先级与C语言中的优先级略有不同,请阅读通用。因此--最好加上括号。

谢谢你!现在我明白了为什么要用括号了。

这里有一个老故事。用我自己创作的歌曲完成了这个机器人。我希望它能发挥作用。而突然间'\end_of_program'--不平衡的左括号 C:\TeleTRADE\experts\variantprogram.mq4 (365, 1)

像往常一样,我看了看括号,打了补丁。我似乎没有看到什么。它又能是什么呢?

int Profit=0;                                
    for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
   {
    if(OrderSymbol()!= Symbol()) continue;
    if(OrderType()>=2)continue;
    Profit+=OrderProfit();     }}
    
 
 
 if(Profit>AccountBalance()){  
   for(i=0;i<=OrdersTotal();i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
 { if(OrderSymbol(!= Symbol()) continue;
   if (OrderMagicNumber() != 450) continue;
   if(OrderType()==OP_SELL) 
  OrderClose(OrderTicket(),OrderLots(),Ask,6,Red);
   if(OrderType()==OP_BUY)
  OrderClose(OrderTicket(),OrderLots(),Bid,6,Red);}}} 
//----
   return(0);
  }
//+------------------------------------------------------------------+

//------- :  Коды ошибок
string ErrorDescript(int error_code){string error_string;switch(error_code){
      //---- Коды ошибок, возвращаемые торговым сервером:
      case 0:   error_string="Нет ошибок";                               
 

呃!! 我想我把多余的括号弄出来了。

 
Dimka-novitsek:

谢谢你![笑]现在我知道为什么要用托架了。

...

朋友们,你们能告诉我这是否被允许,或者我错过了什么吗?

if(OrderType()>=2)continue;
 
paladin80:

朋友们,你们能告诉我这是否被允许,或者我错过了什么吗?


为什么不呢,它是一个常规的Int

另一件事是,在任何下一个版本中,"买 "和 "卖 "的代码可能会改变,代码将突然停止工作。

 
ilunga:

为什么不呢,这是个正常的Int

另一个问题是,在任何下一个版本中,"买 "和 "卖 "的代码可能会改变,代码将突然停止工作。

是的,这很合乎逻辑。那就更好了。

if(OrderType()=OP_BUY || OrderType()=OP_SELL) continue;
迪米奇,如果编译器显示有一个地方缺少小括号,并不意味着这就是要找的地方。有时,如果在代码 的开头错误地放置了一个小括号(或缺失),错误 就会在结尾弹出。所以你可以在注释中寻找它/* ...*/.
 
paladin80:

是的,这很有道理。那就这样好了。

Dimy,如果编译器显示了一个漏掉小括号的地方,这并不意味着我们应该在那里寻找。有时,如果在代码的开头错误地放置了一个小括号(或缺失),错误就会在最后弹出。所以要通过注释代码/*...来寻找它。*/.

只是不喜欢这样-)"="不是一个条件,而是一个赋值操作

那么它应该是这样的。

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;

或者像这样更好(这样你就不用用两次了)

int type = OrderType(); 
if(type!=OP_BUY && type!=OP_SELL) continue;
 
ilunga:

不是这样的--)"="不是一个条件,而是一个赋值操作。

然后像这样走。

或者更好的是,像这样(这样你就不用去两次)。

你的更好,我忘了放!)可能应该是"||"而不是"&&"。