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

 
Vitaly Muzichenko:

Tal vez quiera que los terminales con los gráficos envíen la marca a un servidor web y los otros la reciban y la muestren en el gráfico. No es una tarea fácil, pero es factible

¿Cómo puedo hacerlo o qué debo leer para aprender a hacerlo? ¿Las marcas se envían automáticamente y son aceptadas por otros usuarios o es necesario cargarlas como plantillas cada vez?
 
Илья:
¿Cómo lo hago o qué debo leer para saber cómo se puede hacer? ¿Las marcas se envían automáticamente y son aceptadas por otros usuarios o es necesario cargarlas por separado cada vez como plantillas?

Creo que se necesita un pequeño botón, y después de haber hecho un marcado, pulsarlo y enviarlo. En los receptores es lo mismo, si quieres obtener una marca, entonces pulsa el segundo botón. En total, 2 botones en el gráfico, y no hay coste de recursos para controlarlo constantemente

 

¿Cómo puedo limitar la colocación de órdenes si siempre hay una posición en el mercado después de activar las órdenes limitadas?

en forex, solía comprobar el número de órdenes - posiciones

if( CalculateBUYPositions()==1)
//// 
 int CalculateBUYPositions()
  {
   int total=0;
//ENUM_ORDER_TYPE   order_type=ORDER_TYPE_BUY;
   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)
                   if(m_position.PositionType()==POSITION_TYPE_BUY)
                  
              {
            total++;
            }
//---
   return(total);
  }
  //

Las órdenes limitadas deben establecerse si sólo hay una posición

¿Cómo puedo sustituir esta condición?

 
lil_lil:

¿Cómo puedo limitar la colocación de órdenes si siempre hay una posición en el mercado después de activar las órdenes limitadas?

en forex, he hecho una comprobación del número de órdenes - posiciones

Las órdenes limitadas deben establecerse si sólo hay una posición

¿Cómo podemos sustituir esta condición?

La cuestión no está clara. Estás confundiendo las órdenes y las posiciones.

El código que has citado, "CalculateBUYPositions()" calcula el número de posiciones de COMPRA.


Por favor, reformule su pregunta.

 
Vladimir Karputov:

La cuestión no está clara. Estás confundiendo órdenes y posiciones.

El código que has citado, "CalculateBUYPositions()" calcula el número de PUNTOS DE COMPRA.


Reformule su pregunta.

En forex, si tengo una posición coloco una orden limitada y se activan las órdenes limitadas, el número de posiciones aumenta y el EA no coloca más límites.

En forex, si hay una posición límite y se activan todas las órdenes límite, el número de posiciones aumenta y no se colocan más órdenes límite. Necesito, una alternativa igual a la condición, -- "si hay una posición" CalculateBUYPositions()==1

 
lil_lil:

En forex si hay una posición coloco una orden limitada, las órdenes limitadas se activan el número de posiciones aumenta, no se colocan más limitadores por el EA.

En forex si hay una posición la orden de límite se activa el número de posiciones aumenta y no se colocan más órdenes de límite por el EA. Necesito, una alternativa igual a la condición, -- "si hay una posición" CalculateBUYPositions()==1

No, no lo es. Para aclarar, ya hay una posición en el símbolo actual:

  • En las cuentas de cobertura, una vez que la orden pendiente se activa, habrá UNA posición MÁS
  • en las cuentas de compensación después de la orden pendiente que desencadena
    • si la orden pendiente era para el símbolo actual entonces:
      • la posición existente aumentará
      • se reducirá un puesto existente
      • una posición existente se prorrogará
      • la posición existente se invertirá


Para aclarar tu pregunta: qué tipo de cuenta buscas y QUÉ necesitas rastrear.

 
lil_lil:

¿Cómo puedo limitar la colocación de órdenes si siempre hay una posición en el mercado después de activar las órdenes limitadas?

en forex, solía comprobar el número de órdenes - posiciones

Las órdenes limitadas deben establecerse si sólo hay una posición

¿Cómo se puede cambiar esta condición?

Esto puede determinarse por el número de operaciones o el número de órdenes involucradas en la apertura y modificación de una posición. Sólo tiene que seleccionar el historial del billete de la posición y comprobar el número. Si hay una variante de que la posición ha añadido volumen y luego se cerró parcialmente por una orden de límite opuesta o de otra manera, tendremos que hacer un bucle a través de las operaciones y contar los tipos de operaciones como DEAL_ENTRY_IN y/o otros tipos.

Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
 
Gracias, comparo el lote de la posición con el lote inicial, si no son iguales salgo.
 

Segundo día rehaciendo el robot de MT4 a MT5. Hecho el ajuste de los pedidos pendientes - funciona. Ayuda sobre MqlTradeRequest:

   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // тип ордера
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // цена для открытия 
      request.price=NormalizeDouble(price,digits);                      // нормализованная цена открытия 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // тип ордера
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // цена для открытия 
      request.price    =NormalizeDouble(price,digits);                  // нормализованная цена открытия 
     }

En ambos casos Pregunta - parece un error. En el segundo caso para SELL_STOP sería mejor usar Bid ???

 
STARIJ:

Segundo día rehaciendo el robot de MT4 a MT5. Hecho el ajuste de los pedidos pendientes - funciona. Ayuda sobre MqlTradeRequest:

En ambos casos Pregunta - parece un error. En el segundo caso, Bid sería mejor para SELL_STOP.


SELL abre con BID y cierra con ASK