Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1454

 
Mikhail Toptunov #:

Senhores, ministros!)

Vinte e cinco novamente.

   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }

Uma mistura de cavalos, pessoas....

Que diabos é isso?

Estamos pedindo o número de ordens abertas, mas estamos verificando as posições. Isso não vai funcionar.
 
JRandomTrader #:

Infelizmente, não é bem assim. Já mostrei aqui como recebi o código 10012, ticket de ordem zero, mas a ordem foi executada. A MQ não se manifesta sobre esse assunto.

Escrevi uma muleta para isso, mas só será possível verificá-la depois de receber o 10012 novamente).

Essa é uma exceção às regras, e uma pessoa não consegue entender a diferença entre ordens, negociações e posições. E você também o confunde com exceções))))))

Quando ele entender como isso funciona, ele poderá emitir um cheque para suas próprias necessidades.

 
Aleksandr Slavskii #:

... e uma pessoa não consegue entender a diferença entre ordens, negociações e posições . ..

Quando ela entender como funciona, poderá emitir um cheque para suas próprias necessidades.

Tudo está descrito em detalhes aqui.

Saudações, Vladimir.

 

Obrigado, parece que já descobri o problema!!!!


//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction&    trans,     // структура торговой транзакции
                        const MqlTradeRequest&        request,   // структура запроса
                        const MqlTradeResult&         result)    // структура ответа
  {
//--- результат выполнения торгового запроса
 ulong            lastOrderID   =trans.order; 

//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE  trans_type=trans.type;
   switch(trans.type)
     {
      case  TRADE_TRANSACTION_POSITION:   // изменение позиции
        {

        }
      break;
      //---
      case TRADE_TRANSACTION_ORDER_ADD:    // добавление нового действующего ордера
        {
         fix_position_open(lastOrderID);
        }
      break;
      case TRADE_TRANSACTION_REQUEST:    // добавление нового действующего ордера
        {

        }
      break;
     }
//---
  }
//--- Фиксируем если позиция открыта --------------------------------+
void fix_position_open(ulong lastOrderID)
  {
//--- Фиксируем если позиция открыта
   for(int i=0; i<ArraySize(position_buff); i++)
      if(position_buff[i].timeOp==1)
         if(!match_open_orders(lastOrderID))
           {
            position_buff[i].timeOp= 0;     // Фиксировать время
            Print("Метод OnTrade() по рынку не выполнен. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
         else
           {
            position_buff[i].timeOp= TimeCurrent();
            Print("Метод OnTrade() по рынку выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
  }
//--- Соответствие открытых ордеров ---------------------------------+
bool match_open_orders(long lastOrderID)
  {
//---
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Identifier()==lastOrderID)
            return(true);
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_order.SelectByIndex(i))
         if(m_order.Ticket()==lastOrderID)
            return(true);
   return(false);
  }
 
Mikhail Toptunov #:

Obrigado, parece que já descobri o problema!!!!

Uma posição é aberta quando uma ordem é executada, ou seja, uma transação é feita e a ordem entra no histórico.

 
O que fazer se nem todas as funções estiverem disponíveis na MQL5
 
Baruandreas #:
O que fazer se nem todas as funções estiverem disponíveis na MQL5

Esqueça completamente a mql4 e leia constantemente a documentação da mql5.

 
Baruandreas #:
O que fazer se nem todas as funções estiverem disponíveis na MQL5

Sua pergunta não está clara. Primeiro, esclareça sua pergunta:

  1. Estamos falando de funções já existentes em MQL5?
  2. Existe uma função no conjunto de funções prontas em MQL5, mas ela não funciona?
  3. Você precisa de uma determinada função, mas não existe tal função no conjunto de funções MQL5 prontas?
Saudações, Vladimir.
 
MrBrooklin #:

Sua pergunta não está clara. Primeiro, esclareça sua pergunta:

  1. Estamos falando de funções já existentes em MQL5?
  2. Existe uma função no conjunto de MQL5 prontas, mas ela não funciona?
  3. Você precisa de uma determinada função, mas essa função não existe no conjunto de MQL5 prontas?
Saudações, Vladimir.

Como descobrimos mais tarde, esse é um dos que poluem todo o fórum com sua pergunta. Ele até criou um tópico separado...

 
Alexey Viktorov #:

Como descobrimos mais tarde, trata-se de uma daquelas pessoas que entopem todo o fórum com sua pergunta. Ele até criou um tópico separado...

Oi Alexey, agora tudo está claro.

Saudações, Vladimir.