[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 167

 
Créer une variable booléenne globale ou statique comme flag. Lorsque la condition s'est produite et que le drapeau=vrai, ouvrez l'ordre et rendez le drapeau=faux. Maintenant, si l'ordre se ferme, un nouvel ordre ne s'ouvrira pas. Lorsque la condition a disparu, remettez le drapeau = Vrai.
 
Roger:
Crée une variable booléenne globale ou statique de type flag. Lorsque la condition est atteinte et que le drapeau=vrai, ouvrez un ordre et rendez le drapeau=faux. Désormais, si l'ordre est fermé, un nouvel ordre ne sera pas ouvert. Lorsque la condition a disparu, remettez le drapeau = Vrai.

Comment puis-je savoir si une commande a été ouverte mais fermée en raison de la condition N ? Parce qu'il existe de nombreuses conditions, et que la présence de la condition N ne garantit pas que l'ordre a été clôturé.

C'est-à-dire que j'ai besoin de savoir que l'ordre a été exécuté, mais qu'il a été clôturé il y a n bougies parce que la condition N s'est déclenchée. Et si la condition N a disparu, et qu'il ne s'est pas écoulé plus de n bougies depuis la fermeture de l'ordre, nous devons rouvrir l'ordre.

 
Xaoss1990:

Comment puis-je savoir si une commande a été ouverte mais fermée en raison de la condition N ? Parce qu'il existe de nombreuses conditions, et que la présence de la condition N ne garantit pas que l'ordre a été conclu.

C'est-à-dire que j'ai besoin de savoir que l'ordre a été conclu mais qu'il a été clôturé il y a n bougies à cause du déclenchement de la condition N. Et si la condition N a disparu et qu'il ne s'est pas écoulé plus de n bougies depuis la clôture de l'ordre, nous devons rouvrir l'ordre.


Soyez plus actif en utilisant Alert(), Print() avec Logic !
 
Xaoss1990:

Veuillez nous conseiller, messieurs !

Imaginez la situation : un arrêt est déclenché, en raison du déclenchement de la N-ième condition. Mais après quelques chandeliers, la N-ième condition est tombée. À l'aide de cette fonction, vous pouvez rouvrir l'affaire après que la Nième condition soit remplie. En d'autres termes, vous devez déterminer qu'un stop a été déclenché il y a un certain nombre de barres, et parce que la N-ième condition est tombée, rouvrez la transaction !


si par programme - lors de l'ouverture d'un ordre - il y a un magik et un commentaire - vous pouvez crypter l'information sur la condition dans laquelle l'ordre est ouvert, dans le magik ou le commentaire.

en général, le stop n'est pas déclenché par une condition, mais lorsque le prix atteint un niveau de prix - cet ordre peut être fermé par une condition

 
Xaoss1990:

Comment puis-je savoir si une commande a été ouverte mais fermée en raison de la condition N ? Parce qu'il existe de nombreuses conditions, et que la présence de la condition N ne garantit pas que l'ordre soit fermé.

Autrement dit, j'ai besoin de savoir que l'ordre a été exécuté, mais qu'il a été clôturé il y a n bougies en raison du déclenchement de la condition N. Et si la condition N a disparu et que pas plus de n bougies se sont écoulées depuis la fermeture de l'ordre, je dois rouvrir l'ordre.

Vous ne voulez pas trop compliquer les choses ? Après tout, la commande aurait pu être fermée si la condition X avait été présente, bien que la condition N ait également pu être présente.

La solution dépend beaucoup de votre logique de gestion des positions, par exemple pour trouver les ordres qui ont été fermés au plus tard à n chandeliers et pour vérifier l'événement N au moment où l'ordre est fermé et au moment actuel.

 
 int CountH,NewCountH,CountL,NewCountL;
 double ResistH,ResistL;
 
 //========================
 
 int start(){

 //--------------------------
   double bid = Bid;
   double UPPprice = bid+3000.0*Point;
   double LOWprice = bid-3000.0*Point;
   NewCountH=0;
   ResistH=0;
   NewCountL=0;
   ResistL=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountL++;
       } 
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+5*Point;
    }
 //----------------------------
 
 return(0);
 }
Comment rendre ce cycle plus "facile" ? Il faut beaucoup de temps pour compter.
 
DhP:

Comment rendre ce cycle plus "facile" ? Il faut beaucoup de temps pour compter.


peut-être quelque chose que je ne comprends pas, mais voilà :

          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountL++;
la même condition
 
abolk:


peut-être que je ne l'ai pas bien compris, mais voilà :

la même condition - à tout moment, CountH est égal à CountL

Non, si le prix est supérieur à l'offre, alors CountH compte, s'il est inférieur, alors CountL compte.
 
DhP:
Non, si le prix est supérieur à l'offre, alors CountH ? si inférieur, alors CountL


il est possible d'accélérer le calcul:

réduire i<=6000

 
abolk:


Il est possible d'accélérer le calcul :

a) Réduire i<=6000
b) Calculer uniquement au début de la mesure

a) Réduire le nombre de i peut être fait, mais n'est pas souhaitable. C'est ainsi que l'on prend les barres pour l'année.

b) Au début d'une mesure... C'est probablement une option. Fonctionne sur la M15.

Cependant, dans tous les cas, il compte presque 2 secondes.