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

 
Benjamin Fotteler método OrderSend o a través de PositionModify o de otra manera - ha establecido SL y TP para toda la posición, independientemente de si conviene a los otros EAs o no.

Esto significa que cuando se utilizan varios EAs en un mismo símbolo con una cuenta de compensación, el usuario debe ser consciente de que debe establecer el SL y TP de los diferentes EAs de forma idéntica para que no funcionen de forma diferente a la prevista originalmente - a menos que tengan una función de protección y sólo abran una posición "interna" si no hay ninguna posición abierta en el símbolo respectivo. Y el PositionSelect() que mencionó anteriormente es muy útil para esto.

Para estar seguro, sin embargo, probaría esto de nuevo para ver si el SL y TP se adoptan para otra orden o si es mejor cambiar el SL y TP por separado después - ¡no tengo experiencia con esto!

 
Hola buenas tardes, alguien me puede ayudar, no puedo descargar ningún indicador de mql5 para mt5, le doy  descargar indicador en mql5 me sale una ventana preguntando si tengo mt5 le doy que si, luego automáticamente se abre mt5 en la sección de marcado o market y no descarga nada.
Intente metiendo el usuario y clave de mql5 en mt5 por la sección de herramientas, comunidad, para asi descargar los  directamente por mt5 directamente y nada tampoco descarga nada,  solo hace el mismo  sonido cuando una operación no entra o hay un error de lotaje.. 

Mi pc es windows 8.1 32 bit, no se si el sistema operativo tiene algo que ver. 
Le agradezco la ayuda muchas gracias. 
 

Sí, sin duda deberías probarlo todo. En cuanto a la cuenta de compensación, aún no lo he hecho, pero sí con el valor tradeResult.deal, que tenía guardado como positionTicket.

Me he dado cuenta de que si ejecuto el EA y además envío órdenes limitadas y similares entre las órdenes de mercado, que sólo utilizo en él (aparte de SL y TP), entonces el ticket de la posición abierta no es idéntico a tradeResult.deal, sino a tradeResult.order. Y como se describe en la página de propiedades de la posición, el ticket de la posición puede simplemente cambiar, mientras que POSITION_IDENTIFIER no cambia, sino que permanece idéntico al ticket de la orden que abrió la posición, es decir, a tradeResult.order de la operación de entrada.

 

por favor, ¿quién sabe donde se puede negociar USDKZT ?

 
Acabo de probar esto con la cuenta de compensación. Si coloca una orden de venta a mercado de 1 lote con un stop loss a 1,1 EURUSD y luego coloca una orden de venta a mercado de 1 lote con un stop loss a 1,05 EURUSD, entonces toda la posición de compensación de 2 lotes tiene el stop loss a 1,05 EURUSD. Esto significa que si ejecutas dos EAs competidores en un símbolo, que gestionan o manejan el StopLoss y el TakeProfit de forma diferente, esto podría llevar al caos. Sería mejor comprobar en mi EA con PositionSelect() si ya hay una posición abierta y dejar que mi EA espere hasta que no haya más posiciones antes de enredarse.
 
Benjamin Fotteler #:
Acabo de probar esto con la cuenta de compensación. Si coloca una orden de venta a mercado de 1 lote con un stop loss a 1,1 EURUSD y luego coloca una orden de venta a mercado de 1 lote con un stop loss a 1,05 EURUSD, entonces toda la posición de compensación de 2 lotes tiene el stop loss a 1,05 EURUSD. Esto significa que si ejecutas dos EAs competidores en un símbolo, que gestionan o manejan el StopLoss y el TakeProfit de forma diferente, esto podría llevar al caos. Sería mejor comprobar en mi EA con PositionSelect() si ya hay una posición abierta y dejar que mi EA espere hasta que no haya más posiciones antes de enredarse.
¡Gracias por la prueba! Como sospechaba, en una cuenta de compensación las posiciones abiertas no tienen 'memoria'. O puedes usar una cuenta de cobertura, donde cada posición tiene el número mágico de 'su' EA, que luego puede gestionarla.
 

Acabo de trabajar a través de Los controles que un robot de comercio debe pasar. La información ha sido muy útil. Sin embargo, ha surgido la cuestión del ajuste de márgenes. No sé si he entendido esto correctamente.

Actualmente mi EA hace dos cosas para evitar las llamadas de margen: Antes de una operación que abre o podría abrir una posición, utiliza OderCalcMargin(...) y ACCOUNT_MARGIN_FREE para ver si se puede aumentar el margen. Luego, si se va a abrir una posición, comprueba si la cantidad de dinero en el stop loss supera el margen a pagar. Y no estoy seguro de si he entendido mal algo sobre el segundo punto.

Supongamos que el margen es de 500$, el mercado va en contra de mi dirección y mi stop loss sólo tendría efecto o se activaría con una pérdida de 1000$. Si el valor P&L abierto de mi posición es de -750$, es decir, el margen de 500$ se agota, ¿recibo un margin call? Entonces, ¿tendría sentido comprobar el SL? - Porque eso es algo que no quiero probar.

 
  1. La mayoría de los corredores ya no emiten llamadas de margen, ya que todas las posiciones se cierran (¿automáticamente?) antes de que una cuenta caiga en números rojos (y tengas que añadir dinero: la llamada de margen).
  2. El margen es la cantidad que se considera como depósito para una posición abierta, ACCOUNT_MARGIN_FREE es el resto (parte no utilizada).
  3. Se debe utilizar para operar un máximo de entre el 5% y el 10% del saldo de la cuenta (balance) o del capital (saldo de la cuenta + posiciones abiertas, capital propio) para evitar que se cierren posiciones por falta de capital y pérdidas en las posiciones.
  4. El riesgo de una posición depende del SL y del tamaño del lote, ya que el SL suele ser fijo por razones técnicas, el tamaño del lote se utiliza para calcular el riesgo:
    Búsqueda de "calcular el tamaño del lote": https://www.mql5.com/en/search#!keyword=calculate%20lotsize&module=mql5_module_forum
  5. Consejo la mayoría de los artículos también están disponibles en alemán, sólo tienes que sustituir el /en/ en la URL por /de/: https://www.mql5.com/de/articles/2555
 
Gracias por la información. En Las comprobaciones que debe pasar un robot de trading se menciona un método "CheckMoneyForTrade", que comprueba si el margen a utilizar para la operación es superior al margen libre (ACCOUNT_FREE_MARGIN). Si he entendido bien, entonces también debe comprobar si los fondos utilizados también superan un determinado porcentaje del saldo de la cuenta, es decir, algo así como:
 if (freeMargin - tradeMargin < balance * 0.9) return false;

Con lo cual, por supuesto, puedes cambiar el 0,9 por (1 - maxRisk) e implementar una propiedad "Riesgo máximo en %" que pueda establecer el usuario.

P.D. ¿Te tuteas aquí en el foro?
 
Benjamin Fotteler #:
Gracias por la información. En Las comprobaciones que debe pasar un robot de trading se menciona un método "CheckMoneyForTrade", que comprueba si el margen a utilizar para la operación es superior al margen libre (ACCOUNT_FREE_MARGIN). Si he entendido bien, entonces también debería comprobar si los fondos utilizados también superan un determinado porcentaje del saldo de la cuenta, es decir, algo así como:

Con lo que, por supuesto, puedes cambiar el 0,9 por (1 - maxRisk) e implementar una propiedad "Riesgo máximo en %" que pueda establecer el usuario.

P.D. ¿Nos tuteamos o tuteamos aquí en el foro?

¡Todo el mundo tropieza con el tamaño del lote y aquí hay mucho código y comentarios!

Ahora he descifrado lo que William Roeder escribió para MT5, que sería la función no probada(!!):
(https://www.mql5.com/en/forum/133792/page3#comment_3405179 & https://www.mql5.com/en/forum/390088#comment_28092477)

double lotsz (double risk, double sl, ENUM_ORDER_TYPE ordDir, string sym="", double CommissionPerLot=0) {
   MqlTick mqTick;
   if (sym == "") sym = _Symbol;
   double deltaValue = SymbolInfoDouble(sym, SYMBOL_TRADE_TICK_VALUE) / SymbolInfoDouble(sym, SYMBOL_TRADE_TICK_SIZE);
   SymbolInfoTick(sym,mqTick); 
   double diff = (ordDir==ORDER_TYPE_BUY) ? mqTick.ask - sl : ( (ordDir==ORDER_TYPE_SELL) ? sl - mqTick.bid : -1.0 );
   if (diff<0.0) return(0.0);
   double lts = ( (AccountInfoDouble(ACCOUNT_MARGIN_FREE) * risk/100) / (diff * deltaValue + CommissionPerLot) );
   return( fmin(fmax(SymbolInfoDouble(sym,SYMBOL_VOLUME_MIN),lts),SymbolInfoDouble(sym,SYMBOL_VOLUME_MAX)));
}
// use: lotsz(5, sl)

¡Por favor, hágamelo saber si usted encuentra un error!

Dado que la mayoría de la gente aquí son de alguna manera anónima con sus apodos o nombres de pila y que solía ser aún más el caso, el "Du" se ha naturalizado.

Why is there NO Complete EA within the Code-Base? - When does the market close or open?
Why is there NO Complete EA within the Code-Base? - When does the market close or open?
  • 2011.08.20
  • www.mql5.com
I wanted to close all orders before end of the week (market close friday,) to prevent loss should the market gap over the week end, by passing the sl. ) so the question is when does the market close (or open. For example info on opened charts and history data, time info (like gmt, timezone, dst), market open, close info