[¡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 104

 

El número del día del mes se añade al comentario del pedido. ¿Cómo puedo calcular cuántas órdenes (cerradas) hubo durante el día con el comentario de este día?

No sé cómo hacerlo.

comentario = Day();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("cuenta de pedidos = ",f,");
return(f);
}

 
Para serega393
¿Su comentario detrás de la función es una cadena o un número entero?
La función parece estar compuesta correctamente. Poner una impresión de todas las variables entrantes en el interior para ver una imagen clara.
 
serega393 писал(а) >>

El número del día del mes se añade al comentario del pedido. ¿Cómo puedo calcular cuántas órdenes (cerradas) hubo durante el día con el comentario de este día?

No sé cómo hacerlo.

comentario = Day();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("cantidad de pedido = ",f,");
return(f);
}

comment = TimeDay(iTime(Symbol(),Period(),0)) ;
Y lo mismo cuando se envían pedidos.
 
StatBars >> :
Y lo mismo cuando se envían pedidos.

>> Es mejor así:

   comment = TimeDay(TimeCurrent());
Es más rápido, más fácil y más fiable.
 

bool UseTF = true;


int start()
{

string comment = TimeDay(TimeCurrent());

if (OpenOrdersDayHistory(Symbol(), OP_SELL, 123, comment) > 0)
{
UseTF = false;
Print("No");
}
else
{
UseTF = true;
Print("Yes");

}

if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green);
}
return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("cuenta de pedidos = ",f,");
return(f);
}

Aquí lo pruebas. No lee las órdenes en la historia.

 

Buenas tardes a todos.

No he conseguido "marcar" correctamente la apertura de las órdenes pendientes en mi código. He leído el tutorial, la ayuda y otras cosas. Probablemente la respuesta esté ahí, pero no consigo descubrirla...


Este es el problema. Tengo un periodo de tiempo durante el cual busco el precio máximo y mínimo y asigno estos valores a dos variables globales. Entonces tenemos que abrir una orden pendiente a ese precio. No puedo decidir el precio. Quiero especificar correctamente el intervalo del precio actual.

1.Pregunta - ¿Cómo es la función del precio de la barra actual, por ejemplo, a las 6 de la mañana?

2 ¿Cómo se especifica el parámetro del ticket para cerrar el pedido?

¿O otra forma de cerrar una de las dos órdenes abiertas anteriormente?

Tengo que probarlo así...


for (int i=1; i<=TotalPedidos(); i++)

{

if(OrderSelect(i,SELECT_BY_POS)==true)

{

int T=OrderTicket();

int Cur_Hour2=Hora(); // hora del servidor en horas

double Cur_Min2=Minuto(); // Tiempo del servidor en minutos

double Cur_time2=Cur_Hour2 + Cur_Min2/100; // Hora del servidor

Alert(Cur_time2);

if (Cur_time2>=Time_of_buy_sell_2)

OrderClose(T,1,Ask,3,Red);

}

return; // Salir de start()


Por favor, no juzgue estrictamente:)

 
TheXpert писал(а) >>

Es mejor así:

Y más rápido, y más fácil, y más fiable.

Estoy de acuerdo, pero mi énfasis estaba más en lo otro.

 
serega393 писал(а) >>

Prueba esto. No lee las órdenes en la historia.

Lee todo con normalidad. Comprueba qué comentario tienes después de cerrar. Algunos corredores añaden sus propias entradas al comentario cuando se cierra una orden.

 
int start()
{
   string comment = TimeDay(TimeCurrent());   
   if ( OpenOrdersDayHistory(Symbol(), OP_BUY, 123, comment) <3)   
   {      
      UseTF = true;      
      Print("Yes");   
   }
   else   
   {      
      UseTF = false;      
      Print("No");   
   }    
   
   if ( UseTF == true)   
   {      
      int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+100*Point, comment, 123, 0, Green);   
   }
   return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{   
   int n;   
   int f = 0;   
   int total = OrdersHistoryTotal();    
   for ( n = total - 1; n >= 0; n--)   
   {      
      OrderSelect( n, SELECT_BY_POS, MODE_HISTORY);
      Print(OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic," ",StringFind(OrderComment(), comment,0)>=0);
      if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && StringFind(OrderComment(), comment,0)>=0)          
            f++;   
   }    
   Print("колл-во ордеров = ", f,"");   
   return( f);
} 
 
¿Puedes sugerir un EA que cierre todas las posiciones (y también las no rentables) cuando se alcance un determinado beneficio y elimine todas las órdenes pendientes no ejecutadas?
Razón de la queja: