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

 

¡¡¡¡gracias, parece que lo tengo resuelto!!!!


//+------------------------------------------------------------------+
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 #:

¡¡¡¡gracias, parece que lo tengo resuelto!!!!

Una posición se abre cuando se ejecuta una orden, es decir, se realiza una operación y la orden pasa al historial.

 
Qué hacer si no todas las funciones están disponibles en MQL5
 
Baruandreas #:
Qué hacer si no todas las funciones están disponibles en MQL5

Olvídese por completo de mql4 y lea constantemente la documentación de mql5.

 
Baruandreas #:
Qué hacer si no todas las funciones están disponibles en MQL5

Su pregunta no es clara. En primer lugar aclarar su pregunta:

  1. ¿Estamos hablando de funciones ya existentes en MQL5?
  2. ¿Existe una función en el conjunto de funciones ya hechas en MQL5, pero no funciona?
  3. ¿Necesitas una función determinada, pero no existe tal función en el conjunto de funciones MQL5 ya hechas?
Saludos, Vladimir.
 
MrBrooklin #:

Su pregunta no es clara. En primer lugar, aclare su pregunta:

  1. ¿Estamos hablando de funciones ya existentes en MQL5?
  2. ¿Existe una función en el conjunto de MQL5 listo, pero no funciona?
  3. ¿Necesitas una función determinada, pero no existe tal función en el conjunto de MQL5?
Saludos, Vladimir.

Como se descubrió más tarde, este es uno de los que contamina todo el foro con su pregunta. Incluso creó un tema aparte...

 
Alexey Viktorov #:

Como se supo después, es una de esas personas que atasca todo el foro con su pregunta. Incluso creó un tema aparte...

Hola Alexey, ahora todo está claro.

Saludos, Vladimir.

 
Hola a todos.
Esta situación - hay valores de los indicadores en el archivo csv, registrados a partir de una sola ejecución del probador - los valores de los indicadores se calculan en cada tick.
Quiero utilizar estos datos para la optimización en el modo OHLC - para comprobar la coincidencia de la condición en un determinado minuto de negociación. Optimización en ticks es mejor no proponer - tal prueba crecerá múltiples veces y es innecesaria para tal optimización.
El problema es que el archivo es grande - alrededor de un millón de líneas, y es mano de obra intensiva para correlacionar el par "fecha, hora - valor" en cada minuto.

Aquí y pensar cómo hacer - hasta ahora aquí son los siguientes pensamientos: la creación de un símbolo personalizado y comparar los valores con él; el uso de una base de datos. ¿Me puede decir qué solución sería óptima, tal vez alguien que ha resuelto este problema?
 
qadexys creación de un símbolo personalizado y comparar los valores con él; el uso de una base de datos. ¿Me puede decir qué solución sería óptima, tal vez alguien que ha resuelto este problema?

Entonces, ¿no es lógico para calcular el valor del indicador por OHLC y ya guardarlos?

En general, la idea es un fracaso para trabajar con los valores del indicador OHLC en la barra cero.
 
MrBrooklin #:

Su pregunta no es clara. En primer lugar, aclare su pregunta:

  1. ¿Estamos hablando de funciones ya existentes en MQL5?
  2. ¿Existe una función en el conjunto de funciones ya hechas en MQL5, pero no funciona?
  3. ¿Necesitas una función determinada, pero no existe tal función en el conjunto de funciones MQL5 ya preparadas?
Saludos, Vladimir.
Estamos hablando de funciones predeterminadas existentes como TimeHour(), ErrorDescription() y FILLING_FOK.
Razón de la queja: