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

 

Bon après-midi. Pouvez-vous me conseiller - la tâche consiste à tracer des lignes verticales toutes les minutes. Comment lier le dessin non seulement aux minutes, mais au prix d'ouverture de la minute. La difficulté réside dans le fait que le prix d'ouverture de la minute doit être identifié sur une heure non standard, c'est-à-dire pas une minute. J'ai écrit un bout de code, mais je ne comprends pas comment saisir le prix d'ouverture de la minute, si la variable induite est fixée à une heure non standard.

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]) ; // new_Minute

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max ;

...et ensuite le dessin standard utilisant des objets.

Peut-être que quelqu'un peut me dire ce que l'on peut faire, le cas échéant.

 
Lonely_man:

Bon après-midi. Pouvez-vous me conseiller - la tâche consiste à tracer des lignes verticales toutes les minutes. Comment lier le dessin non seulement aux minutes, mais au prix d'ouverture de la minute. La difficulté réside dans le fait que le prix d'ouverture de la minute doit être identifié sur une heure non standard, c'est-à-dire pas une minute. J'ai écrit un bout de code, mais je ne comprends pas comment saisir le prix d'ouverture de la minute, si la variable induite est fixée à une heure non standard.

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]) ; // new_Minute

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max ;

...et ensuite le dessin standard utilisant des objets.

Peut-être que quelqu'un peut me dire ce que l'on peut faire, le cas échéant.

La ligne verticale n'a pas de coordonnée - le prix.
 
paladin80:
Dans while, nous devons définir une condition qui peut accepter au moins deux valeurs, par exemple un drapeau (vrai ou faux). Si c'est une constante (vrai) et non une condition, alors while n'est pas nécessaire. Enlevez le while (vrai) et les parenthèses et vous obtiendrez le même résultat.


Si vous supprimez l'instruction while, comment fonctionnera l'instruction continue ?

Après tout, en cas d'erreur, nous devons revérifier les conditions et ouvrir des ordres.

 if (Fun_Error(GetLastError())==1)      // Обработка ошибок
 continue;                              // Повторная попытка
 return;                                // Выход из start()

L'instruction continue transfère le contrôle au début de l'instruction externe while ou for la plus proche, provoquant le début de l'itération suivante.

Peut-être que je ne comprends pas quelque chose ?

 

Bon après-midi.

J'ai une stratégie de trading formée pour ouvrir des ordres en attente sur une avant-dernière barre déjà formée [numéro 1]. C'est-à-dire qu'il ouvre des positions (ordres en attente pour le buystop et le sellstop) qui seront déclenchées si le prix se déplace de 20 pips au-delà du maximum/minimum de la fourchette de prix de la première barre (prix d'ouverture).

Il existe également une suppression automatique des ordres en attente qui n'ont pas été déclenchés, sur la base des éléments suivants : Si une nouvelle barre nommée 1 a été formée, le prix d'ouverture d'un ou de plusieurs ordres en attente ne coïncidera pas avec le maximum/maximum de la nouvelle barre actuelle 1 +/- 20 pips (très probablement, car les sommets/minimums de deux barres adjacentes coïncident rarement).

Mais pour une raison quelconque, il arrive que les deux positions soient ouvertes, mais que l'une d'entre elles soit fermée quelques secondes plus tard (bien que la nouvelle barre numéro 1 ne se soit pas encore formée).

Messieurs les experts, je suis un débutant et je ne prends peut-être pas en compte certaines subtilités. Pouvez-vous me dire où l'erreur est possible.

 RefreshRates();
for(int n=1;n<=OrdersTotal();n++)            //цикл перебора всех имеющихся ордеров
{
  if(OrderSelect(n-1,SELECT_BY_POS)==true)   //если найден ордер, то...
  {
    if((OrderType()==4)&& (OrderOpenPrice()!= High[1]+20*Point))                      // проверяем его тип (buystop/sellstop), если его тип buystop и цена покупки не совпадает с максимумом текущего 1-го бара, то..
      {
          OrderDelete(OrderTicket());                                                  // удаляем его
         
       }
    if((OrderType()==5) && (OrderOpenPrice()!= Low[1]-20*Point))                       // если его тип sellstop и цена продажи не совпадает с минимумом текущего 1-го бара, то ...
    {      
           
            OrderDelete(OrderTicket());                                                //удаляем его
         
    }
  }
}
Dossiers :
 

Lorsque l'on compare des nombres fractionnaires, ils doivent être normalisés à un chiffre significatif.

Lorsque vous supprimez des commandes, comptez à rebours à partir de la fin et non du début.

 
... c'est exact,- et aussi - interdire à l'expert de travailler jusqu'à ce qu'un nouveau barreau soit formé.
 
Pacman:


Si vous supprimez l'instruction while, comment fonctionnera l'instruction continue ?

Après tout, en cas d'erreur, nous devons revérifier les conditions et ouvrir des ordres.

L'instruction continue transfère le contrôle au début de l'instruction externe while ou for la plus proche, provoquant le début de l'itération suivante.

Peut-être que je ne comprends pas quelque chose ?

Ne vous inquiétez pas, les instructions while(true) sont très souvent utilisées lorsque ni le nombre d'itérations, ni les conditions de fin de boucle ne sont connus.

C'est pourquoi sa terminaison, disons lorsque de nombreuses conditions imbriquées dans la boucle donnée sont remplies, est interrompue par l'opérateur break.

Ou encore, il existe des hiboux (par exemple, les mcllts) qui ne fonctionnent pas par tic-tac et donc pas avec la fonction start, mais en continu et qui bouclent en permanence en utilisant l'opérateurwhile(true).

 
Equilibrium:
Bonjour, bonjour, s'il vous plaît aidez-moi, je ne peux pas déboguer mon Expert Advisor (les ordres d'ouverture et de fermeture ne fonctionnent pas comme prévu (en traversant une stochastique à chaque fois), s'ouvrent à la stochastique très rarement et je ne peux pas comprendre pourquoi ((((), aussi tous les ordres sont fermés seulement à stoplo ou takeprofit (erreur de numéro de ticket, aussi ne peut pas comprendre où l'erreur). merci pour toutes les réponses :

L'erreur Ticket est très probablement due au fait que votre variable Ticket est initialisée deux fois - au début et dans la fonction

Essayez un autre nom dans la fonction, au moinsTicket1 :)

 
Pouvez-vous me dire comment trouver le prix de la ligne de tendance sur chaque barre ?
 
sss2019:
Pouvez-vous me dire comment trouver le prix de la ligne de tendance sur chacune des barres ?

ObjectGetValueByShift().