Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 412
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
Hola, tengo un problema de principiante...
No consigo que el sistema compare el valor de cierre de la última barra con los máximos y mínimos de un periodo determinado, por ejemplo
los últimos 20 compases. ¿Qué estoy haciendo mal?
Lo he comprobado con Alert y por alguna razón desconocida el probador muestra el valor máximo del cálculo del último tick, pero da este valor
Es el mismo número de veces que los ticks, por lo que la orden no se abre.
La segunda cuestión es cómo hacer que mi EA espere a que se abra la siguiente barra (período de 30m). En la prueba de puntos de control todo está bien, pero si uso ticks,
entonces el EA se abre en la misma barra justo después de haber cerrado en el stop loss...
Además, ¿cómo puedo cerrar una operación independientemente de un tick o no? Por ejemplo, para un periodo de 30m quiero cerrar la orden 5 segundos antes del final de la barra (29.55, 59.55)
Basado en todos los datos en ese momento. En esta etapa el problema es que si no se produce un tick en 5 segundos, por lo tanto no
(En teoría esto es una mierda, pero en la realidad el siguiente tick puede aparecer en unos pocos candelabros por alguna razón.
puede estar en algunas velas por alguna razón.
Gracias de antemano.1. No he visto nada sobre las últimas 20 barras en el código.
2. Cómo determinar el primer tick de una nueva barra
3. ¿Cómo puedo cerrar una orden sin comprobar si ha sido un tick o no?
Tenemos que evitar trabajar con OnTick y trabajar con OnTimer. Establecer el temporizador con un intervalo de 1 segundo y comprobar el tiempo en él. El temporizador no depende de los ticks.
o_oops no sabía que el terminal también pincha donde está el error, la primera vez que doy un error crítico.
Lo escupe.
Por supuesto que escupirá, accedes al 3er elemento de un array con dimensión 2 - mas[2]++
Alexey Volchanskiy:
Так у тебя в комменте стоит управляющий символ "\n " - это символ перевода строки. Если его убрать, многострочия не будет.
Es una broma. Ahora añade un comentario al final de la línea... y el texto se desplaza hacia la derecha. ;-)
Buenas noches. Tratando de escribir un simple EA en el cruce de tenkan y kinjun. Aquí está el código:
void OnTick()
void OnTick()
{
TradeSignal_20();
}
int SeñalDeComercio_20()
{
int sig=0;
if(h_ich==INVALID_HANDLE)
{
h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
return(0);
}
si no
{
if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
}
//--- comprobar la condición y establecer el valor de sig
if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
Si no, sig=0;
if (ich1_buffer[1]>ich2_buffer[1])
if (ich1_buffer[2]<ich2_buffer[2])
Alert(Symbol()+": compra");
if (ich1_buffer[1]<ich2_buffer[1])
if (ich1_buffer[2]>ich2_buffer[2])
Alerta(Símbolo()+": venta");
//--- devolver la señal de comercio
retorno (sig);
}
//+------------------------------------------------------------------+
¿Cómo puedo hacer que la alerta se llame sólo una vez y no constantemente?
1. No he visto nada sobre las últimas 20 barras en el código, da detalles.
2. Cómo determinar el primer tick de una nueva barra
3. ¿Cómo se puede cerrar una operación, independientemente de que se haya marcado o no?
Tienes que evitar trabajar con OnTick y trabajar con OnTimer, establecer el temporizador con un intervalo de 1 segundo y comprobar el tiempo en él. El temporizador no depende de la llegada de ticks.
Buenas noches. Tratando de escribir un simple EA en el cruce de tenkan y kinjun. Aquí está el código:
void OnTick()
void OnTick()
{
TradeSignal_20();
¿Cómo puedo hacer que la alerta se llame sólo una vez y no todo el tiempo?Aquí, ¿cómo comparo el precio de cierre con el máximo de las últimas 20 barras? Y si el último precio es igual o mayor que el máximo de las últimas 20 barras, entonces hay una señal de apertura.
Creo que el problema está en referirse a la barra cero, es decir, a la barra actual. Debemos definir el inicio de una nueva barra, lo di en la respuesta anterior y realizar todas las comparaciones sólo en el primer tick de una nueva barra. Y cambiar la indexación. Tenemos que asegurarnos de que la última barra cerrada no está en iHighest. Y ahora tienes una referencia a la barra actual que se forma en cada tick, los resultados serán de lo más extraños.
double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20,2)]; if(Close[1] > SMMA && Close[1] > BB_UP && Close[1] >= HIGHEST) { ***********
Veamos el código de
Creo que el problema está en la referencia a la barra cero, es decir, la barra actual. Tienes que definir el inicio de una nueva barra, lo he citado en la respuesta anterior y sólo en el primer tick de la nueva barra hacer todas las comparaciones. Y cambiar la indexación. Debemos asegurarnos de que la última barra cerrada no está en iHighest. Y ahora tienes una referencia a la barra actual que se forma en cada tick, los resultados serán de lo más extraños.
Gracias, parece que ha servido de algo :) aunque juraría que hice exactamente lo mismo y no funcionó...
Me aconsejó OnTimer() pero por alguna razón no me coopera. Estudié toda la ayuda y no encontré ninguna explicación clara ni ejemplos, así que me quedé perplejo.
Es decir, este código trivial no se ejecuta, aunque esté todo especificado en la referencia... Buscando en Google este programa me encontré con que dicen que OnTimer() no funciona en la prueba
modo. Aunque este momento parece haberse eliminado con mql5. Ayuda para entenderlo :) Gracias.
Imminence:
Buscando en Google este programa me encontré con que dicen que OnTimer() no funciona en modo de prueba. Se ha solucionado con mql5. Ayúdame a entenderlo). Gracias.
¡Correcto, en MT4 en el probador el temporizador no funciona y no está documentado! Escribí a servicedesk y me dijeron que nunca lo harían. Salí de esto llamando a OnTimer en OnTick. Tengo el temporizador ajustado a un segundo.
Así, si en el probador los ticks llegan más de 1 vez/seg, se saltan los que sobran; si son menos frecuentes, se genera la serie con un múltiplo de 1seg. Este tiempo se encuentra en la estructura TimeCurrStruct, y mi clase principal en cualquier modo toma el tiempo sólo de esta estructura. En mi opinión, esta es la única manera de tratar este fallo. Aquí hay una función, he eliminado las cosas innecesarias, sólo la carne ))
¿No puedes pulsar el botón SRC?