Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1452

 
thiago5 #:

Hola.

Soy nuevo en la plataforma MT4. He introducido el nombre de usuario y la contraseña correctos, incluso aparece el saldo disponible, pero el botón NUEVA ORDEN está inactivo, aunque tengo saldo para operar; lo mismo ocurre en los smartphones.


¿Podría alguien ayudarme diciéndome cómo solucionar esto?



Gracias de antemano.

Comprueba el depósito mínimo de tu broker y asegúrate de que estás mirando el activo correcto, porque puede ser que estés mirando el activo "completo" y hayas depositado cantidades para el "micro".
 
25476896 #:

¿por qué mi saldo e historial de operaciones no aparecen en mi señal?

¿Ha iniciado sesión? Por lo que yo sé, sólo aparece para los suscriptores o el propietario de la señal.
 

¿Puede haber tal caso, cuando los feedbacks indican que el éxito de la apertura de la posición

2023.04.21 13:06:24.961 MAllTradeV_0 (borrador) (EURUSD,M1) PositionOpen() método ejecutado con éxito. Código de retorno=10008 (colocado)0 595 1682055000 lote 0.05000000

2023.04.21 13:06:25.952 MAllTradeV_0 (draft) (EURUSD,M1) El método OrderOpen() se ha ejecutado correctamente. Código de retorno=10008 (colocado)0 595 1682055000 lote 0.01000000

2023.04.21 13:18:03.075 MAllTradeV_0 (draft) (EURUSD,M1) El método PositionOpen() se ha ejecutado correctamente. Código de retorno=10008 (colocado)0 595 1682055000 lote 0.04000000


Y en realidad no hay


no se cerró en el historial.


Uso una clase estandar para operar

  if(!m_trade.PositionOpen(position_buff[i].symbol,order_type,lot,position_buff[i].price,0,0,position_buff[i].comment))
         //--- сообщим о неудаче
         Print("Метод PositionOpen() потерпел неудачу. Код возврата=",m_trade.ResultRetcode(),
               ". Описание кода: ",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(lot));
      else
        {
         position_buff[i].timeOp= TimeCurrent();     // Фиксировать время
         Print("Метод PositionOpen() выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
               " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(lot));//
       //  Sleep(1000);
        }


Ayúdame a atraparReturn Code=10009 ???????

¿Quién sabe cómo hacer un seguimiento específico de la orden, si se ejecutó o no? Tengo entendido que el código de retorno de la solicitud 10008 no es la respuesta final.

 

10008 es "orden colocada", 10009 es "orden ejecutada".

A grandes rasgos, enviando una orden de mercado a través de OrderSend, obtenemos 10009, enviando una orden pendiente - 10008.

Dejé las clases estándar hace mucho tiempo, hay un montón de trampas allí.

 
JRandomTrader las clases estándar hace mucho tiempo, hay un montón de trampas allí.

¡Por favor, muéstrame lo que usas!

 
Mikhail Toptunov #:

Muéstrenos lo que utiliza.

Coloco ordenes via OrderSend o OrderSend Async, almaceno las ordenes colocadas (o solo una orden - si es de mercado) en un array ordenado por precio y rastreo su destino via OnTrade o OnTradeTransaction.

Además, periódicamente y al inicio, comprueba los eventos perdidos - comprobando el array contra la lista de órdenes activas.

 
Mikhail Toptunov #:

¿Es posible que los feedbacks indiquen que el éxito de la apertura de una posición

2023.04.21 13:06:24.961 MAllTradeV_0 (borrador) (EURUSD,M1) PositionOpen() método ejecutado con éxito. Código de retorno=10008 (colocado)0 595 1682055000 lote 0.05000000

2023.04.21 13:06:25.952 MAllTradeV_0 (draft) (EURUSD,M1) El método OrderOpen () se ha ejecutado correctamente . Código de retorno=10008 (colocado)0 595 1682055000 lote 0.01000000

2023.04.21 13:18:03.075 MAllTradeV_0 (draft) (EURUSD,M1) El método PositionOpen() se ha ejecutado correctamente. Código de retorno=10008 (colocado)0 595 1682055000 lote 0.04000000


Y en realidad no hay ninguno.


en la historia nunca se cerró.


Yo uso la clase estándar para el comercio


Sugerencia de cómo atraparReturn Code=10009 ???????

¿Quién sabe cómo realizar un seguimiento específico de la orden, si se ejecutó o no? Entiendo que el código de retorno en la solicitud 10008 no es la respuesta final.

¿Y por qué estás buscando una orden pendiente entre las posiciones?

 
Alexey Viktorov #:

¿Por qué busca una orden pendiente entre las posiciones?

Gracias, creo que lo he solucionado. Tenía que abrir una posición al precio actual, pero estaba colocando órdenes pendientes, por lo que no se colocaban porque especificaba el precio actual.

Utilicé

   ENUM_ORDER_TYPE order_type= position_buff[i].type==0 ? ORDER_TYPE_BUY : ORDER_TYPE_SELL;


pero tenía que

 ENUM_POSITION_TYPE order_type= position_buff[i].type==0 ? POSITION_TYPE_BUY : POSITION_TYPE_SELL;
 

No entiendo por qué ENUM_ORDER_TYPE y no ENUM_POSITION_TYPE en PositionOpen ?

//+------------------------------------------------------------------+
//| Open position                                                    |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,const ENUM_ORDER_TYPE order_type,const double volume,
                          const double price,const double sl,const double tp,const string comment)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- check
   if(order_type!=ORDER_TYPE_BUY && order_type!=ORDER_TYPE_SELL)
     {
      m_result.retcode=TRADE_RETCODE_INVALID;
      m_result.comment="Invalid order type";
      return(false);
     }
//--- setting request
   m_request.action   =TRADE_ACTION_DEAL;
   m_request.symbol   =symbol;
   m_request.magic    =m_magic;
   m_request.volume   =volume;
   m_request.type     =order_type;
   m_request.price    =price;
   m_request.sl       =sl;
   m_request.tp       =tp;
   m_request.deviation=m_deviation;
//--- check order type
   if(!OrderTypeCheck(symbol))
      return(false);
//--- check filling
   if(!FillingCheck(symbol))
      return(false);
   m_request.comment=comment;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }
 
Mikhail Toptunov ENUM_POSITION_TYPE en PositionOpen ?

Porque no se puede abrir una posición.

Usted envía una orden al servidor del broker para ejecutar una operación.

Una posición se abre sólo si la operación se ha ejecutado.

El hecho de que la orden se haya enviado correctamente(10008) no garantiza que se haya ejecutado una operación y, por tanto, que se abra una posición(10009).


Si envía una orden comercial (orden) para ejecutar una operación comercial TRADE_ACTION_DEAL - es decir, para ejecutar una operación al precio de mercado actual, cualquier código de retorno (m_result.retcode) distinto de 10009 indicará que la operación no se ha ejecutado.

Por si acaso, compruebe también la entrada m_result.deal.

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Коды возврата торгового сервера - Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Razón de la queja: