No escribí de inmediato un EA sin indicadores, no hay indicadores, sólo órdenes de compra y venta y así sucesivamente - y luego los períodos que han cambiado en el probador y el resultado final sigue siendo nada no entiendo
5drakon: No escribí de inmediato un EA sin indicadores, no hay indicadores, sólo órdenes de compra y venta y así sucesivamente - y luego los períodos que han cambiado en el probador y el resultado final sigue siendo nada no entiendo
No se puede decir nada sin el propio Asesor Experto. Sólo estoy adivinando.
5drakon: No escribí de inmediato un EA sin indicadores, no hay indicadores, sólo órdenes de compra y venta y así sucesivamente - y luego los períodos que han cambiado en el probador y el resultado final sigue siendo nada no entiendo
Sí, deberíamos mirar el propio código. ¿No tiene algún tipo de estrategia, en base a cuyos cálculos abre y cierra órdenes?
¿Puede decirme dónde está el error? Si hay una orden de mercado para vender nuestro instrumento financiero, entonces la cerramos y si no hay una orden de compra, entonces abrimos una orden de compra. Aquí todo es normal con el cierre, pero no los abre una vez, sino con cada tic.
extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { int sells=0; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке sells++; } } if (sells==0) { OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } //--------------------------------------------------------------------------------------------
¿Puede decirme dónde está el error? Si hay una orden de mercado para vender nuestro instrumento financiero, entonces la cerramos y si no hay una orden de compra, entonces abrimos una orden de compra. Aquí todo es normal con el cierre, pero no los abre una vez sino con cada tic.
extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { int sells=0; for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке sells++; } } if (sells==0) { OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } //--------------------------------------------------------------------------------------------
¿O es mejor hacerlo? Si no hay órdenes de venta, no abriremos una orden de compra.
extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } } //--------------------------------------------------------------------------------------------
Al pasar el control a la sentencia for, ejecuta la Expresión_1. Mientras la Condición de la sentencia for es verdadera: pasar el control a la primera sentencia del cuerpo del bucle, y después de que se hayan ejecutado todas las sentencias del cuerpo del bucle, ejecutar la Expresión_2 y pasar el control a la cabecera para comprobar si la Condición es verdadera. Si la condición de la sentencia for es falsa: pasa el control a la sentencia que sigue a la sentencia for.
Dígame: ha llegado un tick, la condición del operador for es verdadera, el control se pasa más allá - todo esto sucederá durante un tick, es decir, todos estos operadores se ejecutarán durante 1 tick o no.
extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } } //--------------------------------------------------------------------------------------------
¿O exactamente qué operadores se ejecutarán durante este tic? ¿Todas las anteriores o cuáles se ejecutarán en el siguiente tick? Explica...
Al pasar el control a la sentencia for, ejecuta la Expresión_1. Mientras la Condición de la sentencia for es verdadera: pasar el control a la primera sentencia del cuerpo del bucle, y después de que se hayan ejecutado todas las sentencias del cuerpo del bucle, ejecutar la Expresión_2 y pasar el control a la cabecera para comprobar si la Condición es verdadera. Si la condición de la sentencia for es falsa: pasa el control a la sentencia que sigue a la sentencia for.
Dígame: ha llegado un tick, la condición del operador for es verdadera, el control se pasa más allá - todo esto sucederá durante un tick, es decir, todos estos operadores se ejecutarán durante 1 tick o no.
¿O exactamente qué operadores se ejecutarán durante este tic? ¿Todas las anteriores o cuáles se ejecutarán en el siguiente tick? Explica...
La función start() se ejecuta cuando llega el primer tick. Si llegan otros ticks mientras se ejecuta la función, se saltarán.
La función de inicio se ejecutará completamente según su lógica
Al pasar el control a la sentencia for, ejecuta la Expresión_1. Mientras la Condición de la sentencia for es verdadera: pasa el control a la primera sentencia del cuerpo del bucle, y después de que se hayan ejecutado todas las sentencias del cuerpo del bucle, ejecuta la Expresión_2 y pasa el control a la cabecera para comprobar si la Condición es verdadera. Si la condición de la sentencia for es falsa: pasa el control a la sentencia que sigue a la sentencia for.
Dígame: ha llegado un tick, la condición del operador for es verdadera, el control se pasa más allá - todo esto sucederá durante un tick, es decir, todos estos operadores se ejecutarán durante 1 tick o no.
extern double LOT = 0.01; //-------------------------------------------------------------------------------------------- int start() { for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue; OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White); Alert (GetLastError()); // Выводит сообщение об ошибке OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green); Alert (GetLastError()); // Выводит сообщение об ошибке return(0); } } } //--------------------------------------------------------------------------------------------
¿O exactamente qué operadores se ejecutarán durante este tic? ¿Todas las anteriores o cuáles se ejecutarán en el siguiente tick? Explica...
Lo tengo resuelto. Todos los operadores se ejecutarán si la condición se agota.
¿Cómo puedo hacer que este código compruebe si ya tenemos una orden de compra o no antes de comprar? Si no hay órdenes de compra en el mercado, ¿sólo entonces se ejecuta la compra?
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
No escribí de inmediato un EA sin indicadores, no hay indicadores, sólo órdenes de compra y venta y así sucesivamente - y luego los períodos que han cambiado en el probador y el resultado final sigue siendo nada no entiendo
No se puede decir nada sin el propio Asesor Experto. Sólo estoy adivinando.
¿Qué debo hacer con Ilan6 para que empiece a comerciar? ¿Cuánto dinero empieza a funcionar y si funciona con un céntimo?
No escribí de inmediato un EA sin indicadores, no hay indicadores, sólo órdenes de compra y venta y así sucesivamente - y luego los períodos que han cambiado en el probador y el resultado final sigue siendo nada no entiendo
Sí, deberíamos mirar el propio código. ¿No tiene algún tipo de estrategia, en base a cuyos cálculos abre y cierra órdenes?
¿Puede decirme dónde está el error? Si hay una orden de mercado para vender nuestro instrumento financiero, entonces la cerramos y si no hay una orden de compra, entonces abrimos una orden de compra. Aquí todo es normal con el cierre, pero no los abre una vez, sino con cada tic.
//--------------------------------------------------------------------------------------------
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------
¿Puede decirme dónde está el error? Si hay una orden de mercado para vender nuestro instrumento financiero, entonces la cerramos y si no hay una orden de compra, entonces abrimos una orden de compra. Aquí todo es normal con el cierre, pero no los abre una vez sino con cada tic.
//--------------------------------------------------------------------------------------------
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------
¿O es mejor hacerlo? Si no hay órdenes de venta, no abriremos una orden de compra.
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
Regla para la ejecución de la sentencia for
Dígame: ha llegado un tick, la condición del operador for es verdadera, el control se pasa más allá - todo esto sucederá durante un tick, es decir, todos estos operadores se ejecutarán durante 1 tick o no.
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
¿O exactamente qué operadores se ejecutarán durante este tic? ¿Todas las anteriores o cuáles se ejecutarán en el siguiente tick? Explica...
Regla de ejecución de la sentencia for
Dígame: ha llegado un tick, la condición del operador for es verdadera, el control se pasa más allá - todo esto sucederá durante un tick, es decir, todos estos operadores se ejecutarán durante 1 tick o no.
¿O exactamente qué operadores se ejecutarán durante este tic? ¿Todas las anteriores o cuáles se ejecutarán en el siguiente tick? Explica...
La función start() se ejecuta cuando llega el primer tick. Si llegan otros ticks mientras se ejecuta la función, se saltarán.
La función de inicio se ejecutará completamente según su lógica
Regla de ejecución de la sentencia for
Dígame: ha llegado un tick, la condición del operador for es verdadera, el control se pasa más allá - todo esto sucederá durante un tick, es decir, todos estos operadores se ejecutarán durante 1 tick o no.
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
¿O exactamente qué operadores se ejecutarán durante este tic? ¿Todas las anteriores o cuáles se ejecutarán en el siguiente tick? Explica...
Lo tengo resuelto. Todos los operadores se ejecutarán si la condición se agota.