Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 768

 
AlexeyVik:

Eh bien, mon heure locale est plus longue d'une heure que l'heure du serveur.

Alors, pouvez-vous expliquer ce qui prête à confusion dans ces valeurs ?

Il n'y a rien de déroutant dans ces valeurs, tout y est correct, mais ce n'est pas ce dont nous parlons.

Le problème du vendredi en particulier n'est pas pertinent si votre heure locale est plus longue de X heures que celle du courtier.

Mais imaginez que sur votre ordinateur local, il n'y ait pas +1, mais -1 heure de différence avec le courtier.

Et il y a cette simple condition :

if(TimeDayOfWeek(TimeCurrent()) == 5 && TimeCurrent() >= StringToTime("21:30"))
   Print("Настала пятница и время больше чем 21:30");

Dans ce cas :

1. le courtier aura le premier tick du vendredi, par exemple le tick d'aujourd'hui, qui a une heure de 2014.11.07 00:00

2. prenez le nombre de secondes écoulées entre le01.01.1970 00:00 et le tic-tac en question, c'est-à-dire2014.11.07 00:00

3. nous prenons le nombre de secondes écoulées du 01.01. 1970 00:00 au06.11.2014 21:30 (c'est la date d'hier, parce que nous prenons l'heure du PC local, qui au moment du tic-tac n'est pas vendredi, mais jeudi, qui est le 6ème jour, ou pour être plus précis, 2014.11.06 23:00, la différence d'1 heure)

Voilà, le nombre de secondes du point 2 est supérieur à celui du point 3.

Cela signifie que le premier tick du vendredi exécutera l'impression spécifiée dans le code, bien que si la fonctionStringToTime() prend la date du serveur du courtier, alors tout fonctionnera comme prévu, l'impression apparaîtra le vendredi seulement après que l'heure ait dépassé21:30.

 
Leonid123456:

Bonjour.

Il y a une tâche comme celle-ci. (on ne peut pas l'attacher à une coche)

Si un ordre en attente se déclenche {alors...}.

Dans mon EA, j'utilise Terminal.mqh pour calculer les ordres.

Terminal // Mas_Tip[0] ouvert Acheter

// si le nombre d'ordres d'achata augmenté de 1

if (Mas_Tip[0]+1)

{

fonction

}

Tout fonctionne. Mais il se déclenche à chaque nouveau tic-tac.

Comment attacher cet étui à une tique ? Et ensuite comparer la valeur du tick précédent et celle du tick donné.

Et pouvez-vous traduire la chaîne surlignée dans notre langage humain ? Ce qu'il devrait être et ce que vous obtenez en exécutant cette ligne...
 
AlexeyVik:
Pouvez-vous traduire la ligne surlignée dans notre langue ? Ce qui devrait être et ce que vous obtenez en exécutant cette ligne...

// si le nombre d'ordres d'achat a augmenté de 1, alors...

{

fonction, par exemple, ouvrir ou fermer d'autres ordres...

}

Ça n'a pas à être comme çaif (Mas_Tip[0]+1) nous pouvons faireif (Mas_Tip[0] >Mas_Tip[1]) // s'il y a plus d'ordres d'achat que de cellules. Ouvrez un dossier en cours, par exemple.

Le fait est qu'au prochain tick, cette donnée est à nouveau vraie.

 
Leonid123456:

// si le nombre d'ordres d'achat a augmenté de 1, alors...

{

fonction, par exemple, ouvrir ou fermer d'autres ordres...

}

if (Mas_Tip[0]+1)

Dans les parenthèses de si, il devrait y avoir un bool, c'est-à-dire vrai ou faux.

Ici, c'est évidemment int. C'est un nombre entier.

Bien sûr, vrai est 1 et faux est 0 (si je ne me trompe pas). Mais ce n'est toujours pas juste. Que retourneMas_Tip[0] ?

 
ikatsko:

if (Mas_Tip[0]+1)

entre parenthèses de if doit être un bool, c'est-à-dire vrai ou faux.

Mais ici, c'est évidemment int. C'est un nombre entier.

Bien sûr, vrai est 1 et faux est 0 (si je ne me trompe pas). Mais ce n'est toujours pas juste. Que retourneMas_Tip[0] ?

Nombre d'ordres d'achat ouverts.

 
Leonid123456:

// si le nombre d'ordres d'achat a augmenté de 1, alors...

{

fonction, par exemple, ouvrir ou fermer d'autres ordres...

}

Non, c'est ce que vous voulez. En fait, ce n'est pas le cas. Il y a une certaine valeur dans le tableau Mas_Tip[0], et si elle est supérieure à zéro, la condition if(Mas_Tip[0]) sera vraie. Et si nous ajoutons 1 à cette valeur, elle sera toujours vraie puisque le nombre d'ordres ouverts ne peut être égal à -1.

 
AlexeyVik:

Non, c'est comme ça que tu le veux. En fait, ce n'est pas le cas. Il y a une certaine valeur dans le tableau Mas_Tip[0] et si elle est supérieure à zéro, la condition if(Mas_Tip[0]) sera déjà vraie. Et si nous ajoutons 1 à cette valeur, elle sera toujours vraie puisque le nombre d'ordres ouverts ne peut être égal à -1.


J'ai essayé de le faire de cette façon

   bool  Fact_1 = false;                    // Глобальная перемен.
       bool  Fact_2 = false;                    // Глобальная перемен.
//--------------------------------------------------------------------
int start()                                     // Спец. функция start
  {
                          // Локальная перемен.
   if (Fact_2==true)                            //Если сообщение уже..
      return;                                   //..было, то выходим
 
   if (Mas_Tip[0]+1)
      Fact_1 = true;                            // Произошло событие 1
 
   
 
   return;                                      // Выход из start()
  }
//--------------------------------------------------------------------
                               // Пользовательс. ф-ия
  {
             // Сообщение
   Fact_2 = true;                               // Произошло событие 2
   return;                                      // Выход из польз.ф-ии

}

Il s'avère que c'est un événement ponctuel.

 
ikatsko:

if (Mas_Tip[0]+1)

entre parenthèses de if doit être un bool, c'est-à-dire vrai ou faux.

Mais ici, c'est évidemment int. C'est un nombre entier.

Bien sûr, vrai est 1 et faux est 0 (si je ne me trompe pas). Mais ce n'est toujours pas juste. Que retourneMas_Tip[0] ?

false est égal à 0 et true s'il n'est pas égal à 0.

Essayez cette ligne

bool b;
b = 7.40;
if(b) Print("b = ", b);
Le compilateur peut avertir d'une possible perte de précision, mais cela fonctionnera.
 

vous pouvez écarterMas_Tip[0]

Comment obtenir un événement. Un achat a été ouvert.

 
Leonid123456:

vous pouvez écarterMas_Tip[0]

Comment obtenir un événement. Un achat a été ouvert.

Mémoriser l'ancien comptage des achats dans une variable et le comparer avec la valeur actuelle renvoyée par la fonction de comptage des achats, comment faire autrement ?