错误、漏洞、问题 - 页 347

 
因此,这要么是终端的一个错误,要么是服务器历史的问题。但更有可能是终端,因为来自服务器历史的报告更有可能已经被恢复。
 

Urain:
Так что это или баг терминала, или серверной истории. Но скорее терминала, тк отчёты на чемпе скорее с серверной истории восстанавливались.

这很有趣。我没有注意到。解释得很清楚。
 
Yedelkin:
这很有趣。我没有注意到。解释得很清楚。
就是这样,谁有乐趣,谁就有两周的时间来捉弄人 :o)
 
找到了,它默认为按时间排序,需要按交易号排序。那就好办了。
 
Urain:
找到了,它默认为按时间排序,需要按交易号排序。那么一切就正确了。

所以没有错误吗? 整个要点是按票号而不是按时间来计算/排序交易。

我只是肤浅地审查报告,而不是计算位置状态。

 
Renat:

那么就没有bug了吗? 整个重点是按票据而不是按时间来计算/排序交易。

我只是肤浅地审查报告,而不是计算位置状态。

没错,只是当你保存一份报告时,这个过程没有自动化,需要仔细监控。我不认为每个用户都会注意到这一点,结果在解析报告时就会出现bug。

ZS 我在解析报告后增加了排序。结果,它对我来说是有效的,但我预测,不止一个程序员会对这个功能感到棘手。

 

在优化过程中, 优化参数的 名称会显示在优化图的右上角


在观察优化时,这个铭文是令人讨厌的,因为新的最大值总是 隐藏在这个铭文后面。

雷纳特,让我们把它移到左上角!或者右下角。或左下角...任何地方,只要把它从右上角拿出来,看在上帝的份上,请! :)

// 或者至少让它变得苍白, 把它放在背景中,这样它就不会掩盖信息了。

[删除]  
MetaDriver:

在优化过程中, 优化参数的 名称会显示在优化图的右上角

在观察优化时,这个铭文是令人讨厌的,因为新的最大值总是 隐藏在这个铭文后面。

雷纳特,让我们把它移到左上角!或者移到右下角。或左下角...任何地方,只要把它从右上角拿出来,看在上帝的份上,请! :)

// 或者至少让它变得苍白, 把它放在背景中,这样它就不会掩盖信息了。

左下角,并作为背景。
 

请告诉我,我哪里错了。我想写一个简单的脚本,删除当前工具上的头寸和挂单。在这里。

//+------------------------------------------------------------------+
//|                                                        clean.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlTick current_tick;
   MqlTradeRequest close_request;
   MqlTradeResult  close_result;
   SymbolInfoTick(_Symbol,current_tick);
   int counter01;
   while(check_position()==true);
     {
      PositionSelect(_Symbol);
      close_request.action=TRADE_ACTION_DEAL; close_request.symbol=_Symbol; close_request.volume=PositionGetDouble(POSITION_VOLUME); close_request.type_filling=ORDER_FILLING_AON;
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         close_request.price=current_tick.bid; close_request.type=ORDER_TYPE_SELL;
        }
      else
        {
         close_request.price=current_tick.ask; close_request.type=ORDER_TYPE_BUY;
        }
      OrderSend(close_request,close_result);
     }
   do
     {
      for(counter01=1; counter01<=OrdersTotal(); counter01++)
        {
         close_request.order=OrderGetTicket(counter01-1);
         if(OrderGetString(ORDER_SYMBOL)==_Symbol)
           {
            close_request.action=TRADE_ACTION_REMOVE;
            OrderSend(close_request,close_result);
           }
        }
     }
   while(check_order()==true);
   if(GetLastError()!=0)
      Print("ошибка код ",GetLastError()," функция ",__FUNCTION__," строка ",__LINE__);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_position() // функция проверяет наличие позиции
  {
   int counter01;
   bool position_exsist=false;
   for(counter01=0; counter01<PositionsTotal(); counter01++)
     {
      if(PositionGetSymbol(counter01)==_Symbol)
        {
         position_exsist=true;
         break;
        }
     }
   return(position_exsist);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool check_order() // функция проверяет наличие ордеров
  {
   int counter01;
   bool order_exsist=false;
   for(counter01=0; counter01<OrdersTotal(); counter01++)
     {
      OrderGetTicket(counter01);
      if(OrderGetString(ORDER_SYMBOL)==_Symbol)
        {
         order_exsist=true;
         break;
        }
     }
   return(order_exsist);
  }
//+------------------------------------------------------------------+
当有一个位置时,脚本会挂起。调试时,我发现它在检查位置时冻结了。当循环条件 while(check_position()==true) 开始被检查时,控制权被传递给 check_position(),该函数第一次被正常执行时,返回 true。但是循环的主体没有被执行;它又开始检查条件,控制到了check_position(),在return(order_exsist)操作者 没有返回到循环的条件;它回到了check_position()函数的开头。请告诉我,我哪里做错了。
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Основы языка / Операторы / Оператор возврата return - Документация по MQL5
 
molotkovsm:

请告诉我,我哪里错了。我想写一个简单的脚本,删除当前工具上的头寸和挂单。在这里,它是。

当有一个位置时,脚本会挂起。在调试的时候,我发现它在检查位置的时候冻结了。当循环条件 while(check_position()==true) 开始检查时,控制权被传递给 check_position() 函数,在函数第一次正常执行时,返回 true。但是循环的主体没有被执行;它又开始检查条件,控制到了check_position(),在return(order_exsist)操作者 没有返回到循环的条件;它回到了check_position()函数的开头。请告诉我,我一定是哪里搞错了。

如果有一个位置,你会得到一个无限的循环,因为

while(check_order()==true);

等于

while(check_order()==true)
{
 //  пустой оператор
}
在代码中没有办法跳出循环,因为在操作者的身体中没有休息。