[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 648

 
Sigue sin funcionar... ¿Puedes darme más detalles para los tontos? Veamos... ¿Qué debo poner delante de mi código? ¿Qué variables? No puedo llamar a la función... ¿Escribiste varias maneras de resolver este problema o es sólo una manera? Me encanta esto...
 
r772ra:

Puedes hacerlo.....
Esta variante no funcionará correctamente, porque NewBar da true sólo en el primer tick de la barra. Para que funcione correctamente es necesario colocar las líneas FunNewBar(); if(!NewBar) return; dentro de la condición de apertura de la operación, y después de la apertura exitosa.
 
alsu:
Esta variante no funcionará correctamente, porque NewBar sólo da true en el primer tick de la barra. Para que funcione correctamente, debemos colocar la línea FunNewBar(); if(!NewBar) return; dentro de la condición de apertura de la operación, y después de la apertura exitosa.
Aunque también en este sentido no es del todo correcto. En resumen, la variante de r772ra debe ser corregida y, mejor, deberíamos utilizar un enfoque fundamentalmente diferente, por ejemplo, observar la hora de la última orden abierta en el historial y compararla con la hora de la barra actual - será mucho más fiable.
 
alsu:
Aunque no será del todo correcto. En resumen, la variante de r772ra debe ser corregida, y mejor utilizar un enfoque fundamentalmente diferente, por ejemplo, observar la hora de apertura de la última orden en el historial y compararla con la hora de la barra actual - será mucho más fiable

Es algo así.

int BarOfLastOrder(int magic)
{
   int i,ot=OrdersTotal();
   
   for(i=ot-1; i>=0; i--);
   {
      OrderSelect(i,SELECT_BY_POS);
      if(OrderMagicNumber()==magic) return(iBarShift(0,0,OrderOpenTime()));
   }
   
   return(-1);
}

int start()
{

   ........

   int bar_of_last_order = BarOfLastOrder(magic); // указать магик, который использует советник

   switch(bar_of_last_order)
   {
      case 0:
         //последний ордер открыт на текущем баре
         ...
         break;
      case -1:
         //ордеров нет
         // здесь break не ставим, если ситуация "нет ордеров" и "последний ордер открыт не на текущем баре" нужно обрабатывать одинаково
         // в противном случае написать обработку и break;
      default:
         //последний ордер открыт не на текущем баре
         ...
         break;
   }

   .........

}
 
Gracias. Lo intentaré...
 
7sintez:
Gracias. Lo intentaré...
ajustado el código
 
alsu:
ajustado el código
¡¡¡Aha!!! Voy a intentar hacer algo al respecto ahora...
 

¡¡¡Sí!!! Lo hice a través de

{
static datetime New_Time=0;
Nueva_barra=false;
if(¡Tiempo_nuevo!=Tiempo[0])
{
Nueva_Hora=Hora[0];
New_Bar=true;
}
}

 
7sintez:
¡¡¡Muchas gracias!!! ¿Funcionará si pongo la señal en la primera barra menos desde la apertura?

 
Muchas gracias a todos por su ayuda. Los códigos aún no los he utilizado, los he copiado en el bloc de notas. Los investigaré cuando tenga tiempo. ¡Gracias una y otra vez amigos!