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

 

Envío una solicitud como ésta para colocar una pendiente. Pero no expira al final del día de negociación. He probado conORDER_TIME_SPECIFIED_DAY pero tampoco funciona. ¿Cuál es el problema?

MqlTradeRequest  request = {0};
         request.action = TRADE_ACTION_PENDING;
         request.symbol = _Symbol;
         request.volume = Lot;
         request.price  = high(Quant_Bars); 
         request.sl     = sl;
         request.tp     = tp;
         request.type   = ORDER_TYPE_BUY_STOP; 
         request.expiration = ORDER_TIME_DAY;
         request.magic = magicN;
MqlTradeResult result = {0};

if (OrderSend (request,result))
    {
    Print ("Ордер успешно отправлен, ошибок нет =  ", GetLastError());
    } else
       {
        Print ("Не удалось отправить запрос, ошибка = ", GetLastError());
       }
 

La función TrendLineVisible - de la clase estándar CCurve - ¿es una línea de regresión?

¿Cómo puedo hacer que esta línea aparezca completamente en el gráfico, en lugar de estar cortada?


 

por qué dice aquí que ... posición sólo debe ser seleccionada por el método Select o SelectByIndex,

si el método SelectByTicket también funciona?

 

Ayúdame con la función ArrayPrint - Quiero obtener los últimos 100 elementos de un array, y los primeros 100 y los últimos 100.

               ArrayPrint(arr_P_val_X,8,NULL,Calc_XY-100,100,ARRAYPRINT_INDEX);//Ожидаю получить 100 последних элементов, выдает первые
               ArrayPrint(arr_P_val_X,ARRAYPRINT_LIMIT);//Хочу получить 100 и 100 последний - выдает весь массив - что не так?

Calc_XY - el número de elementos de la matriz.

 

¿Cómo puedo obtener el ticket de una operación que se acaba de abrir?
Si utiliza la clase CTrade y la función Buy().

En mt4, la función OrderSend( ) da inmediatamente una entrada.



¿Existe una función que dé un ticket para una posición por el índice de posición?

¿o es necesario seleccionar primero una posición (select)?

 
multiplicator:

¿Cómo puedo obtener el ticket de una operación que se acaba de abrir?
Si utiliza la clase CTrade y la función Buy().

En mt4, la función OrderSend( ) da inmediatamente una entrada.



¿Existe una función que dé un ticket para una posición por el índice de posición?

¿o es necesario seleccionar primero una posición (select)?

En OnTradeTransaction con el tipo de transacción trans.type == TRADE_TRANSACTION_DEAL_ADD se encuentra un ticket en la estructura trans.position

struct MqlTradeTransaction 
  { 
   ulong                         deal;             // Тикет сделки 
   ulong                         order;            // Тикет ордера 
   string                        symbol;           // Имя торгового инструмента 
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Тип торговой транзакции 
   ENUM_ORDER_TYPE               order_type;       // Тип ордера 
   ENUM_ORDER_STATE              order_state;      // Состояние ордера 
   ENUM_DEAL_TYPE                deal_type;        // Тип сделки 
   ENUM_ORDER_TYPE_TIME          time_type;        // Тип ордера по времени действия 
   datetime                      time_expiration;  // Срок истечения ордера 
   double                        price;            // Цена  
   double                        price_trigger;    // Цена срабатывания стоп-лимитного ордера 
   double                        price_sl;         // Уровень Stop Loss 
   double                        price_tp;         // Уровень Take Profit 
   double                        volume;           // Объем в лотах 
   ulong                         position;         // Тикет позиции 
   ulong                         position_by;      // Тикет встречной позиции 
  };
 
Hola a todos los queridos miembros del foro, moderadores, administradores, etc.
Por favor, explique cómo calcular el beneficio total de las posiciones abiertas en MQL5. No hay ningún problema en MQL4. No estoy siendo perezoso aquí, sino porque no sé cómo implementarlo. Utilizando PositionGetDouble(POSITION_PROFIT), el beneficio sólo se calcula para la primera posición abierta.

Pero en MQL4, OrderProfit() muestra elbeneficio en todas las órdenes. Tal vez, me perdí algo...
He olvidado especificar el tipo de cuenta de cobertura
 
Ramiz Mavludov:
Lo siento, olvidé mencionar que el tipo de cuenta es de cobertura.

Debería asistir urgentemente y sin falta a un curso de erradicación del analfabetismo. En mql5, al igual que en mql4, antes de trabajar con una posición (en mql4, una orden), debe seleccionar la posición. A diferencia de mql4, en mql5 recuerdo tres funciones para seleccionar una posición. La documentación tiene una buena descripción de ellos. El camino... No lo consideres una grosería.

 
Ramiz Mavludov:
Lo siento, me olvidé de especificar, el tipo de cuenta de cobertura

Códigoanterior de Candle Breakdown 3, función CalculatePositions, beneficio total

//+------------------------------------------------------------------+
//| Calculate positions Buy and Sell                                 |
//+------------------------------------------------------------------+
void CalculatePositions(int &count_buys,int &count_sells,double &profit)
  {
   count_buys=0;
   count_sells=0;
   profit=0.0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            profit+=m_position.Commission()+m_position.Swap()+m_position.Profit();
            if(m_position.PositionType()==POSITION_TYPE_BUY)
               count_buys++;

            if(m_position.PositionType()==POSITION_TYPE_SELL)
               count_sells++;
           }
//---
   return;
  }

Tras el recorrido de todas las posiciones de este símbolo y de Magic, la variable debeneficios mostrará el beneficio total.

 
Vladimir Karputov:

Códigoanterior de Candle Breakdown 3, función CalculatePositions, beneficio total

Tras el recorrido de todas las posiciones para un símbolo y un Magic determinados, la variable debeneficios mostrará el beneficio total.

Gracias Vladimir.

Razón de la queja: