[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 188

 
hoz:

Oui, et alors ?

Il existe un certain nombre de limitations lorsque l'on travaille en mode visualisation
 

Qu'est-ce que j'ai fait de mal !!!!

J'ai trouvé cette solution à mon problème

int start()
  {
     double Price=Ask+300*Point;    
     double SL=Price-300*Point;    
     double TP=Price+150*Point;
     bool New_Bar;
                          
     if (Time[0])                                                                           //   если образовался новый бар               
         int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP ); //   выставить отложенный ордер
     return ;
     Fun_New_Bar();                                                                      
     if ( New_Bar==true)                                                // если образовался следующий бар
        OrderDelete(Ticket);                                          // удалить отложенный ордер
  
//+------------------------------------------------------------------+
     void  Fun_New_Bar();                            //НО ПО ОТНОШЕНИЮ К ЭТОЙ СТРОКЕ КОМПИЛЯТОР ПИШЕТ ОШИБКУ       '(' - function definition unexpected  
       {                                                                           
          static datetime New_Time=0;
          New_Bar=false;
                                
         if( New_Time!==Time[0])                       
            New_Time=Time[0];                         
         New_Bar=true;                             
      }

/* désolé, j'ai légèrement modifié le post - pour que le Vinin soit lisible */

 
Merci pour votre préoccupation. Quel bouton dois-je appuyer pour obtenir le code dans ce format ?
 
solnce600:

Qu'est-ce que j'ai fait de mal !!!!

J'ai trouvé cette solution à mon problème

/* désolé, j'ai changé un peu le post - pour rendre le Vinin lisible */

Cette ligne
 if (Time[0])

signifie : "si l'heure de la dernière mesure est différente de zéro". Il est donc toujours différent de zéro.

En outre, la variable

bool New_Bar;

est définie dans la fonction start(), elle ne sera donc pas visible dans d'autres fonctions. De plus, la fonction Fun_New_Bar() que vous avez essayé de définir à l'intérieur du corps de start(), vous ne pouvez pas le faire en MQL, toutes les fonctions doivent être déclarées au niveau du module global. La déclaration de New_Bar doit également être placée à cet endroit.

 

De plus, pendant une exécution de la fonction start() (si elle n'est pas bouclée), vous ne pouvez pas définir la formation d'une barre et ensuite attendre la formation de la barre suivante : start() par définition est appelée et se termine à chaque tick (avec des nuances, mais en général c'est ainsi).

Je conseille de relire l'aide et d'éliminer les lacunes dans l'exécution des programmes MQL, et de voir un exemple d'écriture d'un programme bouclé, non bouclé aussi.

 
solnce600:
Merci pour votre réflexion. Quel bouton dois-je appuyer pour obtenir le code dans ce format ?

SRC----------------------------\|/

--------------------------------------- V

 
Il a le droit.
 
alsu:
Cette ligne
 if (Time[0])

signifie : "si l'heure de la dernière mesure n'est pas égale à zéro". Il est donc toujours différent de zéro.


Merci. Mais je ne comprends pas où est le "PAS" dans cette ligne. La non-égalité est indiquée par le symbole !==.

Ce que je voulais dire, c'est que dès que l'heure d'ouverture d'une nouvelle barre apparaît, c'est-à-dire dès qu'une nouvelle barre apparaît, l'ordre est ouvert.

Et c'est bien le code qui ouvre un ordre à l'ouverture de chaque cinq barres

 int start()

  {
 double Price=Open[0]+300*Point;	
 double SL=Price-300*Point;	
 double TP=Price+150*Point;
 if (Time[0])                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
  

 
 }


 

J'ai décidé de prendre ce qui me semblait être une voie plus simple.

Pas pour supprimer l'ordre en attente - mais pour placer un ordre en attente seulement si une bougie de cinq minutes n'est pas terminée

C'est-à-dire que l'ordre en attente ne doit être placé que lorsque deux conditions sont remplies. Si la première condition est remplie

 if (Time[0])

- Je l'ai vérifié, l'ordre est fixé.

Comment dois-je définir la deuxième condition, c'est-à-dire définir un ordre en attente uniquement si 5 minutes ne se sont pas encore écoulées. if (---------- && ? ????????)

int start()

  {
 double Price=Open[0]+300*Point;    
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 
  
 
 
                          
   if (Time[0]&& ?????????  )                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
 return(0);
 
  }
 

J'ai besoin de connaître la plus petite et la plus grande fractale pour les n dernières barres, qu'est-ce qui ne va pas ici ? Aidez-moi !

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }