Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1126
![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
He guardado en formato csv, que no ha funcionado
Есть условие для открытия ордера BUY. Открывается ордер, как сделать переход к SELL условию после закрытия BUY ордера?
if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
{
int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
GlobalVariableSet("B_order",0); // Больше не ищем вход Buy
//-----?????
GlobalVariableSet("S_order",1); // Переходим к поиску Sell
return;
}
if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
{
int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
GlobalVariableSet("B_order",0); // Больше не ищем вход Buy
//-----?????
GlobalVariableSet("S_order",1); // Переходим к поиску Sell
return;
}
else if(GlobalVariableGet("S_order",1))// ищем вход Sell
{Условие для SELL}
Estoy totalmente confundido con estos bichos, he empezado a escribirlos y luego han empezado a ir por aquí y por allá. En breve:
Pregunta: Lo he probado en la demo con Alert y he comprobado cómo funciona. He hecho intencionadamente en mi EA la orden equivocada intentando abrirla, obtuvo el código de error 4051, es decir, puse esta función GetLastError() antes de abrir una orden y después de abrirla. Lo tengo: 1 tick desde el inicio del EA, Error call--> 0 --> intentó abrir una orden con condiciones erróneas --> Error call--> 4051, y cuando el 2º tick se ha disparado la primera llamada ya muestra el 4051 y mi EA no envía más peticiones hasta que haya tratado el EA. La función GetLastError( ) llama al último error desde el terminal o desde el servidor y ¿cómo se puede restablecer? Es decir, si por ejemplo "error general" código 2, y 5 min después el servidor funciona normalmente, el servidor me informa que no hay ningún error. En definitiva, confundido en esta lógica, ayuda a quien puede. Pensé que había llegado aquí recientemente correspondido, resulta que he entendido mal.
Estoy totalmente confundido con estos bichos, he empezado a escribirlos y luego han empezado a ir por aquí y por allá. En breve:
Pregunta: Lo he probado en la demo con Alert y he comprobado cómo funciona. He hecho intencionadamente en mi EA la orden equivocada intentando abrirla, obtuvo el código de error 4051, es decir, puse esta función GetLastError() antes de abrir una orden y después de abrirla. Lo tengo: 1 tick desde el inicio del EA, Error call--> 0 --> intentó abrir una orden con condiciones erróneas --> Error call--> 4051, y cuando el 2º tick se ha disparado la primera llamada ya muestra el 4051 y mi EA no envía más peticiones hasta que haya tratado el EA. La función GetLastError( ) llama al último error desde el terminal o desde el servidor y ¿cómo se puede restablecer? Es decir, si por ejemplo "error general" código 2, y 5 min después el servidor funciona normalmente, el servidor me informa que no hay ningún error. En definitiva, confundido en esta lógica, ayuda a quien puede. Pensé que había llegado aquí recientemente correspondido, resulta que he entendido mal.
Intente restablecer el error con ResetLastError();
¡¡¡¡¡¡¡¡¡EXCEPCIÓN!!!!!!!!! ¡Querida gente! ¡¡¡No te sorprendas de que te acosen los novatos!!! ¿Qué pasa con el motor de búsqueda en ???? ¡¡¡¡Soy una especie de experto aquí desde hace 2 semanas, deberías haber visto mi cara cuando decidí comprobar y averiguar más sobre OrderSend() en el buscador!!!! Pobres novatos. Bueno, vale, en la barra de direcciones lo cambio a 4 en lugar de 5. Ahí no estoy autorizado, vale, pulso enter y vuelvo a mql5. Si no estoy conectado a Mql4, el buscador no funciona.
Y también en el foro muchos listos escriben "para qué sirve el buscador" o "mira en el buscador", "somos un poco vagos", etc. sin ánimo de ofender
En la documentación:
GetLastError
Devuelve el contenido de la variable del sistema_ÚltimoError.
intGetLastError();
Valor devuelto
Devuelve el valor del últimoerror ocurrido durante la ejecución de un programa mql4.
Nota .
Después de llamar a la función, el contenido de la variable _LastError se borra.
Está claramente escrito en la nota que _LastError se borra a cero.
Leamos más sobre_LastError.
int _LastError
La variable _LastError almacena el valor del últimoerror ocurrido durante la ejecución del programa mql4. LafunciónResetLastError()puede poner el valor a cero.
También puede utilizar la funciónGetLastError() para obtener el código de error.
Dice: Puedes poner elvalor a cero con la funciónResetLastError(). ¿Por qué debería reiniciarse si dice que_LastError se pone a cero?
Bien, sigue leyendoResetLastError().
ResetLastError
Establece el valor de la variable predefined_LastError a cero.
voidResetLastError();
Valor devuelto
No hay valor de retorno.
Nota
GetLastError() borra la variable_LastError.
LafunciónGetLastError()borra la variable_LastError.
Entonces, ¿por qué necesitoResetLastError(); ?????
¿Y cómo voy a saber después qué error se ha producido si hay 0 después de la segunda llamada deGetLastError()? Porque borra_LastError.
Por cierto, en la demo ahoraGetLastError() muestra el mismo error en cada tick y no lo reinicia.
Es decir, tenemos el mismo error en el 1er tick y en el 2º tick, mi EA no envía la solicitud de apertura porque ya ha visto el último error
Anoche dormí un poco, no he bebido nada desde Nochevieja.
En la documentación:
GetLastError
Devuelve el contenido de la variable de sistema_LastError.
Ahora lea la documentación normal de MT5, ahora algunas funciones antiguas funcionan exactamente como está escrito, porque la documentación de mt4 está anticuada y hay muchas cosas que no están arregladas todavía.
GetLastError
Devuelve el contenido de la variable de sistema_LastError.
intGetLastError();
Valor devuelto
Devuelve el valor del último error ocurrido durante la ejecución del programa mql5.
Nota
Después de llamar a la función, el contenido de la variable _LastError no se borra. Se debe llamar a la funciónResetLastError() para poner a cero esta variable.
Ver también
Códigos de retorno del servidor comercial
He dormido toda la noche, no he bebido nada desde Noche vieja.
Bueno, yo lo soy desde 1997)
Verás, hay un tic y con él una señal, y si se produce un error, hay que procesarlo. Se procesa y se consulta de nuevo, pero antes de la consulta se puede poner a cero la variable con el error, entonces en la siguiente consulta si hay un error, volverá a la variable, pero si no hay error, será "0".
No es necesario poner a cero la variable, pero si hay un error, devolverá un nuevo valor. En cualquier caso, no debería interesarle el error que tuvo la última vez en el último tick, debería procesar sólo lo que tiene "ahora".