Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 414
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
escupe
posible pérdida de datos debido a la conversión del tipo .mq4 1697 29
tipo Doble en SL.
El compilador es estricto hoy en día, debería ser así, MarketInfo devuelve el tipo double
El compilador es estricto hoy en día, debería ser así, MarketInfo devuelve el tipo double
La variable "sumbol" es correcta, la tengo como variable en la envoltura del modificador.
Gracias puse(int) y todo está bien.
No sé cómo lo hice antes; mi experiencia en la redacción de EAs es de 21 días))
No sé cuánto tiempo he estado escribiendo mis EAs y no sé cómo hacerlo correctamente).
Leanid Aladzyeu:
No sé cómo solía escribir los EAs (hace 21 días que los escribo )). Y mi EA está haciendo persistentemente su camino a la cima de los EAs libres))
Pues entonces tienes mucha suerte, hasta la versión 600 el antiguo MQL4 era horrible )) Por favor, envíenme el enlace al MQL4 Expert Advisor.
Por alguna razón da un error en la última línea.
'}' - no todas las rutas de control devuelven un valor Expert4.mq4
Toda función no vacía debe terminar con el operador de retorno.
Sólo estoy mirando este código del video tutorial, pero puede ser para una build antigua.
#include#include <stderror.mqh>
//+------------------------------------------------------------------+//|Experto4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#enlace de la propiedad ""
#versión de la propiedad "1.00"
#propiedad estricta
int señal = 1;
int inicio()
{
si (señal == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue);
}
return(0);
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
err = 0;
bool exit_loop = false;
int ticket = -1;
int Reintento = 10;
int cnt = 0;
if (cmd = OP_BUY || cmd = OP_SELL)
{
while(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
err = GetLastError();
switch(err)
{
caso ERR_NO_ERROR:
exit_loop = true;
romper;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
romper;
caso ERR_PRICE_CHANGED:
RefreshRates();
continuar;
por defecto:
exit_loop +true;
romper;
}
si (cnt> Reintento)
exit_loop = true;
if (!exit_loop)
{
Sleep(1000);
RefreshRates();
}
si no
{
if(err != ERR_NO_ERROR)
{
Imprimir ("ERROR: " + err);
}
}
if(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
return(ticket);
}
Print("Error: la apertura de la orden falló después de" + cnt + "intentos");
return(-1);
}//mientras
}//si
}/salir
Aquí....
}
}
return(ticket);
}
Insertar correctamente el código en el foro
Por alguna razón da un error en la última línea.
'}' - no todas las rutas de control devuelven un valor Expert4.mq4
Toda función no vacía debe terminar con el operador de retorno.
Acabo de ver este código en el video tutorial pero puede ser para builds antiguos.
#include#include <stderror.mqh>
//+------------------------------------------------------------------+//|Experto4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#enlace de la propiedad ""
#versión de la propiedad "1.00"
#propiedad estricta
int señal = 1;
int inicio()
{
si (señal == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue);
}
return(0);
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
err = 0;
bool exit_loop = false;
int ticket = -1;
int Reintento = 10;
int cnt = 0;
if (cmd = OP_BUY || cmd = OP_SELL)
{
while(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
err = GetLastError();
switch(err)
{
caso ERR_NO_ERROR:
exit_loop = true;
romper;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
romper;
caso ERR_PRICE_CHANGED:
RefreshRates();
continuar;
por defecto:
exit_loop +true;
romper;
}
si (cnt> Reintento)
exit_loop = true;
if (!exit_loop)
{
Sleep(1000);
RefreshRates();
}
si no
{
if(err != ERR_NO_ERROR)
{
Imprimir ("ERROR: " + err);
}
}
if(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
return(ticket);
}
Print("Error: la apertura de la orden falló después de" + cnt + "intentos");
return(-1);
}//mientras
}//si
}/salir
Insertar correctamente el código en el foro
Vuelvo a tener un retraso, no consigo que encaje.
Está bien, ¿qué navegador utilizas? Intenta cambiar a otro. Tengo FFox. He dado la respuesta en los comentarios del código al final.