Et faisons-en un "dessin animé" (multidevises) - page 5

 

Je me suis réjoui trop tôt. La compilation ne présente aucune erreur, mais dans le testeur de stratégie, lorsque l'ordre est ouvert, le prix n'arrive pas à l'indicateur par le biais de cette fonction. Je l'appelle ainsi : OP=PriceOpenLastPos() ; mais dans le code, OP reste égal à zéro.

Est-ce un problème du testeur qui ne transmet pas de valeurs à l'indicateur qui s'accroche dans la fenêtre en mode visualisation ?

 
Angela писал(а) >>

Je me suis réjoui trop tôt. La compilation ne présente aucune erreur, mais dans le testeur de stratégie, lorsque l'ordre est ouvert, le prix n'arrive pas à l'indicateur par le biais de cette fonction. Je l'appelle ainsi : OP=PriceOpenLastPos() ; mais dans le code, OP reste égal à zéro.

Est-ce un problème du test, il ne passe pas les valeurs à l'indicateur qui s'accroche dans la fenêtre en mode visualisation ?

L'indicateur ne peut pas voir ce qui se passe dans le testeur. Mais s'il y avait des ordres ouverts, il les montrerait.

 
ALex2008 писал(а) >>

Veuillez répondre)

//-------Поиск ордеров
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 >> :

Je l'ai réparé... Mais le problème reste(.

Supprimer les commandes La fonction DellAllOrders() ne fonctionne pas...

//-------Удаление всех ордеров
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);
  }

Je pense que j'aurais dû ajouter





OrderDelete(Ticket);

Comme ça.... ?

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

Je l'ai réparé... Mais le problème reste(.

DellAllOrders() ne fonctionne pas.

//-------Удаление всех ордеров
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());
  }
}
Supprime également les ordres en attente.
 
Vinin >> :
Supprime aussi les reports.

Merci)

>> Je pense que tout devrait fonctionner maintenant.

//-------Удаление всех ордеров, открытых и отложенных
void DellAllOrders(){
      if( WorkOrders()){
      if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10);
      else OrderDelete( Ticket);}
  }
J'ai également remarqué une erreur lors de la re-sauvegarde de l'EA (je pense que ce sera la même chose si je redémarre simplement le terminal)...
ajout d'une vérification avant de fixer le 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);
  }
 
Les gens... Regarde... Peut-être qu'il y a un autre problème, quelque chose à régler ?
 
ALex2008 >> :
Les gens... Regarde... Peut-être qu'il y a un autre problème, quelque chose à régler ?
OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Ask+ Profit, 0, 0,0, Green);

>> Est-ce que c'est comme ça que c'est censé fonctionner, ou est-ce que c'est

Enter+ Profit
 
Swan >> :

>> C'est comme ça que c'est censé se passer ?

C'est vraiment une erreur) C'est un pendule, c'est ça ! !! >> Merci. Je l'ai retravaillé.

 
ALex2008 >> :

L'erreur est vraie) Ce n'est pas critique cependant... >> Merci.

erreur 130 tout le temps.

StopLevel doit être vérifié, pour StopLoss et Enter.


>> et icho.

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

>> faut-il choisir le plus grand ?