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

 
evillive:
se souvenir de l'ancien nombre de Byes et le comparer avec le nombre actuel, comment faire autrement ?
C'est exactement ce qui ne fonctionne pas.
 
Leonid123456:
C'est exactement ce que je ne peux pas faire.
créer une variable entière, lui attribuer le nombre d'achats et ensuite recompter les achats et comparer avec la valeur de cette variable n'est pas possible ?
 
evillive:
créer une variable entière, lui attribuer le nombre d'achats, puis, une fois de plus, lorsque je veux compter les achats et les comparer avec la valeur de cette variable, cela ne fonctionne pas ?
Merci !
 
tuner:

Il n'y a rien de mal à ces valeurs, elles sont toutes correctes, 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 de votre 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 :

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.

Oui... Je n'ai pas compris immédiatement le problème. J'ai toujours fait en sorte que le fichier local soit plus grand que le fichier serveur et je n'ai pas rencontré ce problème. La seule solution est de prendre en compte le jour et de ne pas utiliser la représentation du temps réduit.
 
AlexeyVik:
Oui... Je n'ai pas compris le problème tout de suite. Le mien est toujours plus grand que celui du serveur et je n'ai jamais rencontré ce problème. La seule solution est de tenir compte de la journée et de ne pas utiliser la représentation en temps réduit.

Eh bien, oui, en tant qu'option pour alimenter la fonction avec la bonne heure, ainsi que la date extraite de TimeCurrent(), dans ce cas le problème ne devrait pas sembler être

Soit dit en passant, mon heure locale est toujours plus grande que celle du courtier, mais néanmoins ce problème de la manière décrite ci-dessus est apparu vendredi dernier à la même heure sur deux courtiers différents (un démo, le second réel). La raison pour laquelle cela s'est produit reste un mystère. Cependant, le code a déjà été remplacé par un autre, donc ce problème ne devrait pas se reproduire.

 
tuner:

Eh bien, oui, en tant qu'option pour alimenter la fonction avec la bonne heure, ainsi que la date extraite de TimeCurrent(), dans ce cas le problème ne devrait pas sembler être

Soit dit en passant, mon heure locale est toujours plus grande que celle du courtier, mais néanmoins ce problème de la manière décrite ci-dessus est apparu vendredi dernier à la même heure sur deux courtiers différents (un démo, le second réel). La raison pour laquelle cela s'est produit reste un mystère. Cependant, le code a déjà été remplacé par un autre, donc ce problème ne devrait pas se reproduire.

Oui, il existe plusieurs variantes. Par exemple, vous pouvez vérifier vendredi soir l'heure locale au lieu de l'heure du serveur. Mais dans ce cas, si vous vous trompez dans le temps informatique, vous pouvez avoir de gros problèmes.
 
evillive:
créer une variable entière, lui attribuer le nombre d'achats, puis compter à nouveau les achats et comparer avec la valeur de cette variable n'est pas possible ?

Pouvez-vous me donner un exemple de code ?

Après la comparaison, la variable doit être réécrite, sinon le même code sera exécuté à l'infini. (disons que c'était 6 et que c'est devenu 7, je dois écrire dans la variable que c'est devenu 7 après la comparaison)

 
Leonid123456:

Pourriez-vous nous donner un exemple de code ?

Après la comparaison, la variable doit être réécrite, sinon le même code sera exécuté à l'infini. (disons qu'il y en avait 6 et que maintenant il y en a 7, nous devrions écrire dans la variable qu'il y en a 7 après comparaison).


Ne vous embêtez pas, voici la fonction de Kim que j'utilise et qui fonctionne dans toutes les versions :

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
  } } } } }
  return(kp);
}
//+----------------------------------------------------------------------------+

Et ceci en plus :

  int BuyPos = NumberOfPositions(Symbol(),OP_BUY, Magic);
  int SellPos = NumberOfPositions(Symbol(),OP_SELL,Magic);

Il vous suffit de vérifier en fonction de vos objectifs :

if(BuyPos >= n) 
 
borilunad:

Ne vous embêtez pas, voici une fonction Kim que j'utilise et qui fonctionne dans toutes les versions :

Et c'est en plus :

Il vous suffit de vérifier en fonction de vos objectifs :

Merci beaucoup !
 
borilunad:

Ne vous embêtez pas, voici une fonction Kim que j'utilise et qui fonctionne dans toutes les versions :

Et c'est en plus :

Il vous suffit de vérifier en fonction de vos objectifs :

Je l'ai branché. Il fonctionne indéfiniment...

J'ai pu résoudre le problème en utilisant la dernière méthode de cet article https://www.mql5.com/ru/articles/1399.