[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1095

 
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.
 

¿Qué debo hacer con Ilan6 para que empiece a comerciar? ¿Cuánto dinero empieza a funcionar y si funciona con un céntimo?

 
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);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

¿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


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...

 
kolyango:

Regla de ejecución de la sentencia for


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

 
kolyango:

Regla de ejecución de la sentencia for


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?