тикет последнего ордера

 

Подскажите пожалуйста почему возникает ошибка.

'}' - not all control paths return a value Ticket MA.mq4 50 1

Спасибо.

//+------------------------------------------------------------------+
//|                                                    Ticket MA.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

    TicketReturn();
    Print ("Last ticket =", TicketReturn());
   
  }
//+------------------------------------------------------------------+
int TicketReturn()
{
    for (int i=OrdersTotal()-1; i>=0; i--)
    {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
           if (OrderSymbol() == Symbol())
           return (OrderTicket());
         }
    }
    
} 
 
prt:

Подскажите пожалуйста почему возникает ошибка.

'}' - not all control paths return a value Ticket MA.mq4 50 1

Спасибо.

Последняя функция не всегда возвращает значение. Можно сделать так:

int TicketReturn()
{
   int OrdTicket = -1;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol())
         {
             OrdTicket = OrderTicket();
             break;
         }
   }
   return( OrdTicket );    
} 
 

А для выбора одного из двух последних закрытых ордеров (среди которых есть бай) и присвоения ему лота в зависимости от профита можно сделать так?

  int Lot_for_buy()
{

   for (int i=2; i>=0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol() && OrderType() == OP_BUY)
         {
             if (OrderTakeProfit() < 0)
                  {
                     double Lot_for_buy_Ordersend = OrderLots()*2;
                  }
             
             double Lot_for_buy_Ordersend = OrderLots();
             break;
         }
   }
   return(Lot_for_buy_Ordersend);    
} 

и можно ли Lot_for_buy() вставить на место лота в Ordersend

Спеасибо.

 
prt:

Подскажите пожалуйста почему возникает ошибка.

'}' - not all control paths return a value Ticket MA.mq4 50 1

Спасибо.


Потому, что у Вас ошибка в синтаксисе, вторая скобка у Вас фигурная, а должна быть "круглая". OrderTicket()
OrderTicket()

Проверьте и в остальных фрагментах кода.


return(Lot_for_buy_Ordersend);  
return( OrdTicket );               
 
prt:

Подскажите пожалуйста почему возникает ошибка.

'}' - not all control paths return a value Ticket MA.mq4 50 1

Спасибо.

Всегда оперируйте от. Конструкции типа ( int i=OrdersTotal()-1; i
Причина обращения: