Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 353
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Esto (abajo) no funciona, escribí F_Path en el explorador, hice clic en enter, el archivo se abre... ¿La información de WinApi tiene este aspecto?
¿Quién impide que se utilice la bandera FILE_COMMON al escribir y leer? El archivo estará disponible para todos los terminales instalados en el sistema. Estará en la carpeta compartida de todos los terminales.
En ME Archivo --> Abrir carpeta de datos compartidos
¿Quién impide que se utilice la bandera FILE_COMMON al escribir y leer? El archivo estará disponible para todos los terminales instalados en el sistema. Se ubicará en la carpeta compartida de todos los terminales.
En ME Archivo --> Abrir carpeta de datos compartidos
Hola, ¿alguien se ha encontrado con este problema al crear una solicitud de comercio con parámetros:
si pongo los siguientes parámetros:
mrequest.action=TRADE_ACTION_DEAL;mrequest.type_filling=ORDER_FILLING_FOK;
mrequest.type=ORDER_TYPE_BUY;
el terminal anuncia que he especificado un método inválido mrequest.type_filling(política de ejecución de la orden); si especifico mrequest.type_filling=ORDER_FILLING_RETURN, la orden se abre pero no puedo cerrarla programáticamente porque el terminal informa de que se está utilizando un método inválido. Estoy ejecutando el Asesor Experto en un servidor de Forex y todo funciona bien en otros servidores. ¿Puede alguien escribir una política de ejecución de órdenes que pueda ser utilizada cuando se desarrollen robots de trading para este broker? Gracias.Hay un indicador mq4 con función de alerta.
Por ejemplo:
¿Cómo hacer que en la esquina superior izquierda de la subventana (donde suele aparecer el nombre del indicador y los parámetros), o de alguna otra manera, se indique si la señal está activada(extern bool AlertMode=true;) o desactivada?Hay un indicador mq4 con función de alerta.
Por ejemplo:
¿Cómo hacer que en la esquina superior izquierda de la subventana (donde suele aparecer el nombre del indicador y los parámetros), o de alguna otra manera, se indique si la señal está activada(extern bool AlertMode=true;) o desactivada?La documentación dice que:
При тестировании в эксперте можно обрабатывать пользовательские события с помощью функции OnChartEvent(), но в индикаторах эта функция в тестере не вызывается. Даже если индикатор имеет обработчик OnChartEvent() и этот индикатор используется в тестируемом эксперте, то сам индикатор не будет получать никаких пользовательских событий.
Por el momento esta afirmación no es relevante - en los indicadores esta función es llamada en el probador, al menos un indicador puede recibir eventos generados por otro indicador en el probador.
El problema es que una vez que el indicador recibe la llamada de esta función, no tiene acceso a los datos almacenados en las variables declaradas a nivel global, y viceversa - todos los cambios realizados en esta función no se almacenan en las variables de nivel de acceso global.
Ejemplos:
1. El objeto se declara globalmente y se inicializa en la función OnInit. Se puede acceder a él desde la función OnCalculate, pero obtenemos un mensaje de error en la función OnChartEvent: puntero no válido
2. hay una función que envía el contenido de una variable al diario (la variable se declara globalmente). Cuando se llama a esta función desde OnCalculate se obtiene el valor esperado, cuando se llama a la misma función desde OnChartEvent se obtiene un sinsentido.
¡Buenos días!
Me he encontrado con un problema al utilizar eventos, en particular la función OnChartEvent() en un indicador. Cuando se utiliza en un Asesor Experto, no hay ningún problema, pero en el indicador no funciona correctamente. Es decir, el evento ocurre pero no hay manera de cambiar los campos existentes. Ejemplo:
//----------------------------------------------------------------------------------------------
int k;
int OnInit()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
return(INIT_SUCCEED);
}
int OnCalculate(const int rates_total,
const int prev_calculado,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
Print("OnCalculate(): k =", k);
//< ... >
return(rates_total)
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent(): k = ", k);
k++;
}
}
//----------------------------------------------------------------------------------------------
Como resultado obtenemos:
"OnCalculate(): k = 0" - siempre.
"OnChartEvent(): k = 0,...,123332" - cuenta de 0 a ...
¿Cómo puede ser esto y por qué? ¿Hay alguna forma de arreglarlo? Si alguien lo entiende, se agradecería mucho una respuesta.
P.D.: Esta injusticia ocurre sólo en el probador de estrategias, en tiempo real todo funciona correctamente.
¡Buenos días!
Me he encontrado con un problema al utilizar eventos, en particular la función OnChartEvent() en un indicador. Cuando se utiliza en un Asesor Experto, no hay ningún problema, pero en el indicador no funciona correctamente. Es decir, el evento se produce pero no hay manera de cambiar los campos existentes. Ejemplo:
//----------------------------------------------------------------------------------------------
int k;
int OnInit()
{
k = 0;
ihandleDE = iCustom(_Symbol, _Period, "DrawExtremums");
//< ... >
return(INIT_SUCCEED);
}
int OnCalculate(const int rates_total,
const int prev_calculado,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
Print("OnCalculate(): k =", k);
//< ... >
return(rates_total)
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
string nameEv = "EXTR_UP";
if (sparam == nameEv)
{
Print("OnChartEvent(): k = ", k);
k++;
}
}
//----------------------------------------------------------------------------------------------
Como resultado obtenemos:
"OnCalculate(): k = 0" - siempre.
"OnChartEvent(): k = 0,...,123332" - cuenta de 0 a ...
¿Cómo puede ser esto y por qué? ¿Hay alguna forma de arreglarlo? Si alguien lo entiende, se agradecería mucho una respuesta.
P.D.: Esta injusticia ocurre sólo en el probador de estrategias, en tiempo real todo funciona bien.
Buenas noches. En su momento, el Service Desk dio una respuesta bastante definida sobre este tema: el terminal y el probador de estrategias son dos programas diferentes, y el trabajo de los Asesores Expertos/indicadores en el probador y en el terminal puede diferir significativamente. Lo que a menudo funciona en el terminal del cliente no funciona en el Probador de Estrategias. Por favor, escriba al Servicio de Atención al Cliente y proporcióneles pruebas y deje que lo arreglen.