Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 202
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
=
Este parece ser el caso, si entiendo correctamente el principio de sustitución.
Puntos y comas adicionales después de los corchetes. Y no está claro a qué más se refiere.
Es una pena que aparentemente no haya una forma fácil de automatizar la expansión de la macro para ver qué pasa. A no ser que pueda inventar mi propio guión.
Gracias. Hay una razón por la que no hay punto y coma después de "while" en la macro.
Las macros son algo bueno, pero la línea entre el bien y el mal, en su caso, es aún más fina que con una mujer))) Hay que tener mucho, mucho cuidado con ellos. Y sí, en mi ejemplo, no ';', sino exactamente else, que empezó a referirse a if, que está en la macro, después de quitar ;.
Yo soy muy bueno con las macros, así que para un caso como el tuyo he dejado de usarlas desde hace un año y medio, es óptimo:
Excepto que no encuentro nada sobre inline aquí.
Y no sé C++.
¡Buenas tardes! ¡Por favor, ayuda!
Hay un código bastante sencillo para abrir y modificar una orden. Las funciones OrderSend, OrderSelect y OrderModify se ponen en un bucle con un pequeño retraso entre los intentos. Para minimizar los errores de comunicación, etc.
Sucede lo siguiente: la orden se abre normalmente, luego se modifica con éxito el StopLoss y se modifica con éxito el TakeProfit. Pero cuando establezco el TP, el StopLoss se anula. No puedo entender la razón.
Aquí está esta parte del código:
send = 5; //número máximo de intentos para establecer una orden
tick=0;
sendschet=0; //contador de intentos
while(!tick && sendschet<=send)
{
tick=OrderSend(Symbol(),OP_SELL,NormalizeDouble(lot,2),Bid,150,0.0,0.0,komm,MagNum,0,Yellow);
envía a la gente;
Sleep(1000); //Demora 1 segundo antes del siguiente intento
}
select = 5; //número máximo de intentos para seleccionar un pedido
slschet=0; //contar para la selección de pedidos
while(!OrderSelect(tick,SELECT_BY_TICKET) && slschet<=select)
{
slschet++;
Sleep(500); //Demora 0,5 segundos antes del siguiente intento
}
if(slschet<select) //los intentos fueron menos que el máximo, significa que la orden fue seleccionada con éxito
{
modify = 5; //número máximo de intentos para modificar la orden
mdschet=0;
while(!OrderModify(tick,OrderOpenPrice(),NormalizeDouble(SL,Digits),OrderTakeProfit(),0,Yellow)
&& mdschet<=modificar)
{
mdschet++;
Sleep(500); //Demora 0,5 segundos antes del siguiente intento
}
*Aquí todo está bien - SL está ajustado
mdschet=0; //restablecer el contador antes de cambiar el TP
while(!OrderModify(tick,OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(TP,Digits),0,Yellow)
&& mdschet<=modificar)
{
mdschet++;
Dormir(500);
}
}
*Donde el TP se establece normalmente, pero el SL ya es igual a 0.0. Entonces resulta que OrderStopLoss() es igual a 0.0.
Sin embargo, la selección de pedidos no ha cambiado.
Si añadimos OrderSelect una vez más entre la configuración de SL y TP, todo parece funcionar. Pero contradice la lógica.
Gracias de antemano por su ayuda en este asunto.
¡Buenas tardes!
Por favor, ayúdenme a lidiar con el cambio de tamaño de un array dinámico.
Digamos que estoy configurando un array:
Luego en la primera subrutina del bucle, posiblemente varias veces (no hay preguntas al respecto -- hasta ahora funciona como se pretende):
En la siguiente subrutina añadiré elementos en la primera dimensión del bucle. No sé con cuánta antelación. Sé que es más lento que si se declara la dimensión de antemano. Pero creo que hasta 500 incorporaciones al año no harán la diferencia.
La pregunta es, ¿cómo puedo averiguar el tamaño existente del array en esta subrutina? Tomarlo como tamaño base y añadirle un nuevo valor.
¿Tomar ArraySize() y dividir por 8? ¿O hay alguna otra función que me convenga más?
Gracias de antemano.
¡Buenas tardes!
Por favor, ayúdenme a lidiar con el cambio de tamaño de un array dinámico.
Digamos que estoy configurando un array:
Luego en la primera subrutina del bucle, posiblemente varias veces (no hay preguntas al respecto -- hasta ahora funciona como se pretende):
En la siguiente subrutina añadiré elementos en la primera dimensión del bucle. No sé con cuánta antelación. Sé que es más lento que si se declara la dimensión de antemano. Pero creo que hasta 500 incorporaciones al año no harán la diferencia.
La pregunta es, ¿cómo puedo averiguar el tamaño existente del array en esta subrutina? Tomarlo como tamaño base y añadirle un nuevo valor.
¿Tomar ArraySize() y dividir por 8? ¿O hay alguna otra función que me convenga más?
Gracias de antemano.
ArrayRange()
ArrayRange()
Buenas tardes.
No he operado en MT4 desde hace mucho tiempo, decidí probarlo de nuevo. Anteriormente utilizaba el script (adjunto), pero ahora no se ejecuta, por favor, vea qué ha fallado.
¡Hola!
¿Existe alguna forma de conocer inmediatamente CopyHigh el número de elementos de un array en cualquier periodo de tiempo?
Lo responderé yo mismo, quizás alguien se encuentre con la pregunta a través de un buscador.
Lo responderé yo mismo, quizás alguien se encuentre con la pregunta a través de un buscador.
También Bars(), iBars()
Con Bars(), no se puede averiguar el número de elementos de la matriz en cualquier período de tiempo, sino sólo en el gráfico actual.