[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 358

 
solnce600:

Bonjour à tous !

J'essaie d'utiliser la fonction pour supprimer TOUS les ordres en attente dans le testeur à partir des fonctions de Kim.

Lorsque j'essaie de le compiler, j'obtiens une erreur indiquant que la variable "clDelete " n'est pas définie.

'clDelete' - variable non définie C:\Program Files\Alpari NZ MT4\experts\Positive.mq4 (94, 38)

Dites-moi, s'il vous plaît, comment et où il doit être défini ?

Merci.

D'abord, inversez la boucle :

    for (i = k - 1; i <= 0; i--)

et donner à la fonction OrderDelete() ce qu'elle veut.

 
TarasBY:

Énumération des tableaux :

- Si je comprends bien vos "désirs".

Igor, merci beaucoup !

D'après ce que j'ai compris, il n'y a pas de fonction spéciale, il faut donc recourir à la force brute.

 
Chiripaha:

Igor, merci beaucoup !

D'après ce que je comprends, il n'y a pas de fonction spéciale, donc c'est forcément exagéré.

Il n'existe pas de fonction standard.
 
solnce600: 'DeleteOrders' - la fonction ne renvoie aucun résultat C:\Program Files\Alpari NZ MT4\experts\Orders.mq4 (68, 5)

Votre fonction (auto-écrite) DeleteOrders() ne renvoie RIEN ! Regardez dans votre code - comment vous l'appelez.
 

Merci beaucoup pour votre réponse rapide.

La boucle a été déployée.

Maintenant, il génère une autre erreur

DeleteOrders' - la fonction ne renvoie aucun résultat

Et de quoi la fonction OrderDelete(OrderTicket()) a-t-elle besoin comme paramètre passé, à part OrderTicket() et à part la couleur de la flèche (dont je n'ai pas besoin) ?

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
   for (i = k - 1; i <= 0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
 
TarasBY:
Votre fonction (auto-écrite) DeleteOrders() ne renvoie RIEN ! Regardez votre code - comment vous l'appelez.
C'est-à-dire qu'il devrait y avoir des lignes TRUE ou FALSE à la fin du code de votre fonction personnalisée ?
 
TarasBY:
Votre fonction (auto-écrite) DeleteOrders() ne renvoie RIEN ! Regardez dans votre code - comment vous l'appelez.

Insertion de lignes à la fin du code de la fonction qui retourne vrai

Modification de l'appel de fonction

R = DeleteOrders(true) ;
if(R ==true )

Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0,1)-1500*Point,1,iHigh( Symbol (), 0,1),iHigh( Symbol (), 0,1)-1610*Point, "jfh",123 );//ENA
//Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0,1)-1000*Point,1,iHigh( Symbol (), 0,1)+330*Point,iHigh( Symbol (), 0,1)-1100*Point, "jfh",123 );//ENA
if (Ticket>0)
X=iHigh( Symbole (), 0,1) ;
if (OrderSelect (ot-1,SELECT_BY_POS)
if ( OrderType ()==OP_SELLSTOP)
DT = OrderOpenTime () ;

}
}

return(0) ;

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot ;

if (sy=="") sy=Symbol() ;
for (i = k - 1 ; i <= 0 ; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType() ;
if (ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn)
{
int W = OrderDelete(OrderTicket()) ;
if (W==true)
return(true) ;

Renvoie la même erreur.

DeleteOrders" - la fonction ne renvoie aucun résultat

Pouvez-vous me dire quelle est mon erreur ?

Merci.

 
solnce600:

Insertion de lignes à la fin du code de la fonction qui retourne vrai

Modification de l'appel de fonction

R = DeleteOrders(true) ;
if(R ==true )

Le type de fonction a été oublié :

void bool DeleteOrders (string sy="", int op=-1, int mn=-1)
 
TarasBY:

Le type de fonction est oublié :

Tout est OK ! !! Merci beaucoup ! !!
 
solnce600:
Tout est OK !!! Merci beaucoup !!!

Ce n'est pas OK... La fonction de Kim supprime les ordres dont le symbole, le type et le magicien que vous lui passez comme paramètres. Et c'est un type de vide. Tu passes un 1 dedans. Et qu'est-ce que vous en attendez ?
Raison: