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

 
alph:
你能告诉我,这样的速率测试器在现实生活中的情况吗?在这一年里,使用Depo 3000美元的结果是好是坏?

一个策略测试员 总是在撒谎,即使模拟质量达到99.9%!但这并不影响他的工作。

检查EA的唯一选择是把它放在模拟账户的实时VPN服务器上......微软Azure几乎提供了一个月的免费服务器,你需要1美元在YouTube上查找!......还有其他的VPN服务,但他们最多有10天的免费使用。

 

伙计们!是否有可能在EA中以编程方式禁止手动交易?

 

你能告诉我为什么这个块会删除终端中设置的任何符号上的所有挂起的止损单,而忽略了magic和_Symbol?

//--------------------------------------------------------------------------------------------------------------
//       Блок удаления отложенников по типу ордера
//--------------------------------------------------------------------------------------------------------------
int dell_ord_by_type(int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
  
   int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
   {     
         if( OrderGetString(ORDER_SYMBOL) ==Symbol() && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE) ==type_ord)   
         {  
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
            {       
               for(j=Appempts; j>0; j--) 
               { 
               //----------------------------------------------------------------------
               MqlTradeResult result={0}; 
            MqlTradeRequest request={0};
            request.order=OrderGetTicket(i);
            request.symbol = _Symbol;
            request.magic = _magic;
            request.action=TRADE_ACTION_REMOVE;
            ticketmdf=OrderSend(request,result);
            
                  if(ticketmdf==true)
                  {
                     Print("Успешно удалён ордер");
                     Sleep(2000);
                     break;                    
                  }
                  if(ticketmdf==false)                     
                  {
                     Print("Ошибка при удалении ордера # ",+GetLastError());
                     Sleep(7000);
                  }
               }                            
            }                       
         }                        
   }
   return(true);  
}
 
Aleksandr Prishenko:

你能告诉我为什么这个块会删除终端中设置的任何符号上的所有挂起的止损单,而忽略了magic和_Symbol?

1.要先选择顺序。

2.循环应该从最后一个订单开始建立,即for( i = orders-1; i >= 0; i-- )

 
Aleksandr Prishenko:

你能告诉我为什么这个单元会删除终端中设置的任何符号上的所有挂起的止损单,而忽略了magic和_Symbol?

我需要选择订单

...
   int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
     {
      if(OrderSelect(ххх,ххх,хххх)==true)
        {
         if(OrderGetString(ORDER_SYMBOL)==Symbol() && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE)==type_ord)
           {
...
 
Vladimir Tkach:

伙计们!是否有可能在EA中以编程方式禁止手动交易?

当然不是。
 
Karputov Vladimir:

你必须选择你的订单

这个说法是正确的。实施是不正确的。你从哪里得到OrderSelect()的票据?
 

这是正确的做法吗?

Alexey KozitsynKarputov Vladimir 谢谢你的提示!

int dell_ord_by_type(int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
 int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
   { 
   ResetLastError();    
  ulong ticket=OrderGetTicket(i);
      if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним  

      {      
         if( OrderGetString(ORDER_SYMBOL) ==_Symbol && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE) ==type_ord)   
         {  
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
            {       
               for(j=Appempts; j>0; j--)
               { 
 

你在上面写道:当订单被删除时,循环应该是相反的。当一个订单被删除时,其余订单的索引被转移。

int dell_ord_by_type(int type_ord, int _magic)
{
   ulong nOrderTicket = 0;
   
   for(int i = OrdersTotal() - 1; i >= 0; i--)   //--- пробежим по списку ордеров
   {
      nOrderTicket = OrderGetTicket(i);
        
      if(nOrderTicket > 0 && OrderGetString(ORDER_SYMBOL) == Symbol() && OrderGetInteger(ORDER_MAGIC) == _magic && OrderGetInteger(ORDER_TYPE) == type_ord)   
      {  
         if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_STOP)
         {       
            // удаляем
         }
      }
   }
        
   return(0);  
}
 
顺便说一下,如果一个函数在你的版本中返回真,你为什么要把它声明为int,而且总是这样?)