Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 494
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Hasta ayer, mi EA sólo ha abierto una orden y la siguiente no se abrirá hasta que yo ponga una orden. Ahora, ¿cómo hacer que mi EA abra órdenes cuando la barra anterior ha abierto por encima (por debajo) del canal?
Si analiza este fragmento de código, entonces, según este código, si la función CountTrades() devuelve cero, se ejecutará la condición if (CountTrades()==0) CheckForOpen(), y se llamará a la funciónCheckForOpen(). En el siguiente tick, si la orden se ha abierto, la funciónCountTrades() debe devolver 1, y entonces se cumple la condición else
Si parece que CountTrades()<max_trades, se ejecutará de nuevo la funciónCheckForOpen(). Según el código, el valor de la variable max_trades es igual a 3. Así, tendrá 4 órdenes abiertas.
Si el EA no abre las órdenes correctamente, entonces compruebe la lógica, en la que se definen las condiciones bajo las que se deben abrir las posiciones en la función CheckForOpen(). Y también comprobar las condiciones de tiempo si (CurrTime < EaStartTime || CurrTime >= EaEndTime). En su lugar, utilizaría la función if (TimeHour(TimeCurrent()) = hora de inicio && TimeMinute(TimeCurrent()) = minutos de inicio ). La hora y los minutos se establecen en variables de tipo int o uint.
Si la barra libre número 1 está por encima/debajo del canal.
Así, tendrá 4 órdenes abiertas.
Si el EA no abre las órdenes correctamente, entonces compruebe la lógica, donde se especifican las condiciones bajo las cuales se deben abrir las posiciones en la función CheckForOpen(). Y también comprobar las condiciones de tiempo si (CurrTime < EaStartTime || CurrTime >= EaEndTime). En su lugar, utilizaría la función if (TimeHour(TimeCurrent()) = hora de inicio && TimeMinute(TimeCurrent()) = minutos de inicio ). La hora y los minutos se establecen en variables de tipo int o uint.
Quería abrir 3 órdenes pero no era lo que pretendía; quería hasta tres, pero una orden por cada barra nueva.
No hay problema con el tiempo, funciona en un periodo de tiempo estrictamente especificado.
Quería hasta tres órdenes, pero una orden por cada barra nueva. Hay veces que varias barras seguidas dan señales positivas.
No hay problema con el tiempo, funciona en un periodo de tiempo estrictamente especificado.
.mq4, obtuvo el archivo .ex4. Pero no funciona en el probador de estrategias. Final
era escribir un EA para MT4. En MQL5, tengo .mq5 y
archivos .ex5. Y el archivo .ex5 abrió oficios. La cuarta versión es diferente de
La cuarta versión tiene algunas diferencias con respecto a la quinta, y aún no soy un buen programador de MQL, por eso obtuve malos resultados.
No he entendido lo que está mal ahora, el archivo de registro del probador se ha guardado. Я
Intentaré traducirlo. Mientras tanto te pido que me digas
¿qué pasa con el código del programa? Mientras respondes, intentaré
para descubrirlo.
Me sorprendió encontrar en mi cuarta versión del editor la opción de escribir
Estaba a punto de escribirlo. Pero yo no lo escribí. Adjunto
archivos de registro del probador y una captura de pantalla. 05:30 MSC.![Registro del probador Registro del probador](https://c.mql5.com/3/86/20160112.log)
![Karputov Karputov](https://c.mql5.com/3/86/2016.01.13_05_59_2tq16pbq6_165639q46_u23.png)
![Karputov Karputov](https://c.mql5.com/3/86/2016.01.13_05_59_u4gpi8dpe_ibhw03kfe_b32.png)
2016.01.13_05:14AM HORA DE MOSCÚ. ¡Hola, señor Karputov! He escrito en MQL4
.mq4, tiene un archivo .ex4. Pero no funciona en el probador de estrategias.
¿Dónde puedo encontrar las descripciones de los errores?
No entiendo qué es lo que no le gusta al compilador, ¿por qué me avisa?
comprobar la precedencia de los operadores para detectar posibles errores; utilizar paréntesis para aclarar la precedencia
if(Low[X]>PriceBuy && High[X]>PriceBuy ||
Low[X]<PriceBuy && High[X]<PriceBuy)
calcBarX++;
y aquí
la expresión no tiene ningún efecto
for(calc_day;calc_day>0; calc_day--)
{
if(iLow(Symbol(),TF_3Day,calc_day)<iLow(Symbol(),TF_3Day,calc_day+1)) calc_day_OK++;
else break;
}
¿Dónde puedo encontrar las descripciones de los errores?
No entiendo qué es lo que no le gusta al compilador, ¿por qué me avisa?
En realidad, además del texto del error, el compilador también informa del número de la línea de código donde se encuentra el error y su posición en la línea.