Errores, fallos, preguntas - página 77

 
Interesting:

¿He entendido bien que los valores devueltos por ACCOUNT_TRADE_ALLOWED se generan en el lado del servidor?

Me refiero a que ninguna acción del comerciante (en el terminal) puede cambiar este valor...

PS

Pero la reticencia de ACCOUNT_TRADE_EXPERT a cambiar es realmente extraña...

¿Qué hace entonces el botón "Auto-Trading" en el menú del terminal y la casilla "Permitir auto-trading"?

PPS

En las versiones antiguas todo parecía correcto y todo funcionaba, pero en la 299 no entiendo qué está pasando...


¿Quién cavó en ACCOUNT_TRADE_ALLOWED y ACCOUNT_TRADE_EXPERT y por qué?


Para los desarrolladores - O me estoy volviendo loco o hay "drubashka" en el terminal... :)

Y no en la última versión, pero al menos en la 294 (¿quién los dejó ahí?)... :(


Un pequeño experimento

Tomemos la versión 294 del terminal y coloquemos en el gráfico un Asesor Experto que controle el valor de retorno de AccountInfoInteger(ACCOUNT_TRADE_ALLOWED).

Al mismo tiempo, la negociación automática está desactivada en los parámetros del Asesor Experto y en el terminal (botón de negociación automática).

Como resultado, el registro del Asesor Experto contiene lo siguiente

Aquí podemos ver el registro de las acciones realizadas por el Asesor Experto (durante la inicialización) y la comprobación del valor ACCOUNT_TRADE_ALLOWED en el temporizador.

Nos interesan todos los símbolos resaltados en color (antes la lista de símbolos se cargaba en una clase especializada).

1. El primer resultado devuelto por el temporizador es azul (se espera que sea falso);

2. El color rojo destaca el siguiente resultado, que fue devuelto por el temporizador, de repente resultó ser cierto(estoy muy interesado en lo que BARABACA permitió comerciar);

3. La reacción de mi clase (evento OnEventTimer) a los cambios es verde.

Aquí la clase "entiende" que el auto-trading está permitido y lo informa alegremente (no comparto su optimismo);

Además, el mensaje aparece dos veces (aunque no se había visto antes). El mensaje no debe aparecer dos veces, ya que el evento OnEventTimer contiene una comprobación que excluye esta posibilidad.

//Reading information on current parameters of the trade account
RealTradeAllowed = TradeAllowed(); //TradeAllowed
RealTradeExpert  = TradeExpert();  //TradeExpert
//Checking the status change of the use possibility automatic trade
  if(varTradeAllowed!=RealTradeAllowed)
  //Processing the event TradeAllowed
  {
  OnTradeAllowed(RealTradeAllowed);
  //We write current status of the RealTradeAllowed in variable
  varTradeAllowed = RealTradeAllowed;
  }

4. Entonces el temporizador devuelve constantemente true, pase lo que pase con el terminal.

PS

La situación con AccountInfoInteger(ACCOUNT_TRADE_EXPERT) es aún más confusa. El temporizador devuelve tura independientemente de la configuración del terminal y del Asesor Experto.

¿Lo necesitamos?

 
AM2:

También me interesa una pregunta similar. ¿Qué debo hacer si no hay fondos suficientes en mi cuenta para abrir una posición?

1. Detener la negociación del Asesor Experto.

2. Prohibir la apertura de una posición.

3. Retire el Asesor Experto del gráfico.

El punto 3 se puede resolver con ExpertRemove. He resuelto el 2º punto de esta manera:

1. Entiendo que la prohibición de negociar no se establece de forma programática, sino utilizando el botón "Auto-Trading" y la casilla "Permitir auto-trading", seguido de la comprobación de ACCOUNT_TRADE_ALLOWED y ACCOUNT_TRADE_EXPERT.

También puede prohibir el comercio añadiendo el parámetro necesario a su Asesor Experto y luego controlando este parámetro (por ejemplo, prohibir el comercio en una cuenta real).

El control preliminar se realiza durante la inicialización de un Asesor Experto, mientras que en el modo de trabajo se maneja en OnTimer() o OnTick().

2. El control de la posibilidad de abrir (cerrar) una posición debe realizarse teniendo en cuenta el estado actual: la conexión, la posibilidad de autocomercio y otras condiciones (por ejemplo, controlar la posibilidad de realizar una determinada operación para este símbolo).

Para controlar todas las condiciones, es mejor crear una función con un resultado tipo bool.

Por ejemplo, como éste:

//Function IsTradePermit
bool IsTradePermit(bool TardeAllowed,bool Connect,double FreeMargin)
{
//----------------------------------------------------------------------------//
//Work variables
bool Result;
//----------------------------------------------------------------------------//

//Тут мы проверяем разрешена или нет торговля

//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

3. El Asesor Experto debe ser eliminado del gráfico sólo en casos extremos (cuando su trabajo no puede ser realizado o cuando ya no es necesario)

Esta situación es muy extrema y poco frecuente. Se debe utilizar, por ejemplo, si no se encuentran algunos archivos necesarios para el Asesor Experto, o si hay un error que el Asesor Experto no puede resolver.

PS

Quitar y poner EAs también es útil si varios EAs operan en diferentes pares, pero son gestionados por un EA (él decide en qué par colocar un EA y en cuál quitarlo)...

 
Interesting:

¿Quién ha investigado ACCOUNT_TRADE_ALLOWED y ACCOUNT_TRADE_EXPERT y, sobre todo, por qué?


Desarrolladores - O ya me estoy volviendo loco o ha aparecido el terminal "drubashki "... :)

Y no en la última versión, pero al menos en la 294 (¿quién les dejó entrar ahí?)... :(


Un pequeño experimento

Tomemos la versión 294 del terminal y coloquemos en el gráfico un Asesor Experto que controle el valor de retorno de AccountInfoInteger(ACCOUNT_TRADE_ALLOWED).

Al mismo tiempo, la negociación automática se desactiva en los parámetros del Asesor Experto y en el terminal (el botón de "negociación automática").

Como resultado, el registro del Asesor Experto contiene lo siguiente

Aquí podemos ver el registro de las acciones realizadas por el Asesor Experto (durante la inicialización) y la comprobación del valor ACCOUNT_TRADE_ALLOWED en el temporizador.

Nos interesan todos los símbolos resaltados en color (antes la lista de símbolos se cargaba en una clase especializada).

1. El primer resultado devuelto por el temporizador es azul (se espera que sea falso);

2. El color rojo destaca el siguiente resultado, que fue devuelto por el temporizador, de repente resultó ser cierto(estoy muy interesado en lo que BARABACA permitió comerciar);

3. La reacción de mi clase (evento OnEventTimer) a los cambios es verde.

Aquí la clase "entiende" que el auto-trading está permitido y lo informa alegremente (no comparto su optimismo);

Además, el mensaje aparece dos veces (aunque no se había visto antes). El mensaje no debe aparecer dos veces, ya que el evento OnEventTimer contiene una comprobación que excluye esta posibilidad.

4. Entonces el temporizador devuelve constantemente true, pase lo que pase con el terminal.

PS

La situación con AccountInfoInteger(ACCOUNT_TRADE_EXPERT) es aún más confusa. El temporizador devuelve tura independientemente de la configuración del terminal y del Asesor Experto.

¿Lo necesitamos?

Algo extraño está pasando aquí, ACCOUNT_TRADE_ALLOWED y ACCOUNT_TRADE_EXPERT son permisos para operar en la empresa de corretaje.

Botón "AutoTrade". - TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).

Hay MQL5InfoInteger(MQL5_TRADE_ALLOWED) - permiso/prohibición para que el experto/script comercie

 
Swan:

Algo extraño sucede, ACCOUNT_TRADE_ALLOWED y ACCOUNT_TRADE_EXPERT tienen permiso para operar en el DC.

Botón "AutoTrade". - TerminalInfoInteger(TERMINAL_TRADE_ALLOWED).

También hay MQL5InfoInteger(MQL5_TRADE_ALLOWED) - permiso/prohibición para que el experto/script comercie

Conozco el MQL5InfoInteger(MQL5_TRADE_ALLOWED), funciona bien y normalmente se controla en el Expert Advisor; elMQL5_DLLS_ALLOWED también se procesa normalmente.

Por lo tanto, como yo lo entiendo:

TERMINAL_DLLS_ALLOWED y TERMINAL_TRADE_ALLOWED son permisos de nivel de terminal;

MQL5_DLLS_ALLOWED y MQL5_TRADE_ALLOWED - permisos a nivel de experto;

ACCOUNT_TRADE_ALLOWED y ACCOUNT_TRADE_EXPERT - permisos a nivel de servidor.

Entonces asumiremos que este es el servidor que cambia false a true (aunque no está claro por qué este mensaje se muestra dos veces).

 
Cisne, gracias por el consejo. Está todo arreglado. Todo parece funcionar bien...
 

Buenas tardes tengo este problema, empiezo a desplazar el gráfico horario y en una fecha determinada pasa al gráfico diario, también con 15 minutos pasan a horario o 4 horas, borrado de archivos donde se almacena el historial según la documentación pero no ha cambiado nada.

Документация по MQL5: Файловые операции / FileDelete
Документация по MQL5: Файловые операции / FileDelete
  • www.mql5.com
Файловые операции / FileDelete - Документация по MQL5
 
RomanIgorevi4:

Buenas tardes tengo este problema, empiezo a desplazar el gráfico horario y en una fecha determinada pasa al gráfico diario, también con 15 minutos pasan a horario o 4 horas, borrado de archivos donde se almacena el historial según la documentación pero nada ha cambiado.

Antes de esta fecha sólo hay historial diario en el servidor (no hay historial de minutos), por lo que todos los plazos se muestran como diarios.
 

He descubierto que hay un problema con HistoryDealsTotal() al utilizar los algoritmos de optimización del probador.

Durante un backtest normal todo está bien, pero en una sesión de optimización, durante la fase de inicialización del EA, HistoryDealsTotal() devuelve el número de operaciones de la ejecución anterior del EA. Más tarde, durante la fase de negociación, HistoryDealsTotal() vuelve a empezar en 0.

Me encontré con este problema a través del siguiente fragmento de código:

    // constructor
    void MyClass() {
        _dealCnt = HistoryDealsTotal();  // this is causing trouble!
        _orderCnt = OrdersTotal();
        _positionCnt = PositionsTotal();
        _historyOrderCnt = HistoryOrdersTotal();
        ...
    }

La forma de evitar esto, es inicializar con 0 en su lugar, pero aún así me gustaría una respuesta oficial a este problema, porque para mí parece que algunas variables internas se restablecen demasiado tarde.

Gracias de antemano.

Documentation on MQL5: Trade Functions / HistoryDealsTotal
Documentation on MQL5: Trade Functions / HistoryDealsTotal
  • www.mql5.com
Trade Functions / HistoryDealsTotal - Documentation on MQL5
 

Hola, responde a mi pregunta:

Por qué no puedo descargar mt5, descargo el archivo de instalación, lo inicio a medias, se detiene, salta a otro punto de acceso, etc. Al final hay un error-

-lectura fallida [12002]

esta es la historia constantemente no importa cuantas veces reinstale el terminal o windows pero ahora al tercer día falla

 

por favor, dígame por qué esta construcción siempre devuelve 0

MqlDateTime dt; Print(dt.min);

¿y cómo sé cuántos minutos son ahora?

MqlDateTime dt; if(dt.min)>33 ...
Razón de la queja: