Y hagamos una "caricatura" de ello (multidivisa) - página 5

 

Se alegró demasiado pronto. La compilación no tiene errores, pero en el Probador de Estrategias, cuando se abre la orden, el precio no llega al indicador a través de esta función. Lo llamo así: OP=PriceOpenLastPos(); pero en el código, OP sigue siendo igual a cero.

¿Es un problema del probador que no pasa valores al indicador que cuelga en la ventana en modo de visualización?

 
Angela писал(а) >>

Se alegró demasiado pronto. La compilación no tiene errores, pero en el Probador de Estrategias, cuando se abre la orden, el precio no llega al indicador a través de esta función. Lo llamo así: OP=PriceOpenLastPos(); pero en el código, OP sigue siendo igual a cero.

¿Es un problema del test, no pasa valores al indicador que se cuelga en la ventana en modo de visualización?

El indicador no puede ver lo que ocurre en el probador. Pero si hubiera órdenes abiertas, las mostraría.

 
ALex2008 писал(а) >>

Por favor, responda)

//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);
  }
  return(false);  
}
 
Vinin >> :

Lo he arreglado... Pero el problema sigue siendo(.

La función DellAllOrders() no funciona...

//-------Удаление всех ордеров
void DellAllOrders(){
      if( WorkOrders())OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
  }
  
//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type = OrderType();
      Ticket=OrderTicket();
      return(true);}
  return(false);
  }

Creo que debería haber añadido





OrderDelete(Ticket);

¿Como este....?

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      OrderDelete( Ticket);}
  }
 
ALex2008 писал(а) >>

Lo he arreglado... Pero el problema sigue siendo(.

DellAllOrders() no funciona.

//-------Удаление всех ордеров
void DellAllOrders(){
  for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      if (OrderType()<=OP_SELL) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10);
      else OrderDelete(OrderTicket());
  }
}
Elimina también las órdenes pendientes.
 
Vinin >> :
Borra también los aplazamientos.

Gracias)

>> Creo que todo debería funcionar ahora.

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      else OrderDelete( Ticket);}
  }
También he notado un error al volver a guardar el EA (creo que será lo mismo si simplemente reinicio el terminal)...
se ha añadido una comprobación antes de fijar el stoploss...


if(WorkOrders())
      if ((Type<=1)&& (Stop==0))SetStop();



//-------Поиск ордеров
bool WorkOrders(){
      for (int i=OrdersTotal()-1; i>=0; i--){
      if (!OrderSelect( i, SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      Type  = OrderType();
      Ticket=OrderTicket();
      Stop  =OrderStopLoss();
      return(true);}
  return(false);
  }
 
Gente) Mira... ¿Quizás haya algo más que no funciona, algo que hay que ajustar?
 
ALex2008 >> :
Gente) Mira... ¿Quizás haya algo más que no funciona, algo que hay que ajustar?
OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Ask+ Profit, 0, 0,0, Green);

>> ¿Es así como se supone que debe ser?

Enter+ Profit
 
Swan >> :

>> ¿Es así como se supone que funciona, o es

Es realmente un error) Es un péndulo, ¡¡¡eso es!!! >> Gracias. Lo he rehecho.

 
ALex2008 >> :

El error es cierto) Pero no es crítico... >> Gracias.

error 130 todo el tiempo.

StopLevel debe ser revisado, para StopLoss y Enter.


>> y icho.

if(b0<b1) StopLoss=b1;
else StopLoss=b0;

>> ¿se debe elegir el más grande?