Un bug dans la fonction OrderSend() ? - page 5

 
Sepulca:

Le statique fonctionne à 100%. Voici le test :

Et les résultats :


Eh bien, ça marche pour moi comme avant... Pas de changement ! J'ai même la fonction d'ouvrir une nouvelle barre:

bool isNewBar()
   {
      static datetime lastBar;                                   // Задаём переменную для времени открытия последнего бара
      datetime currBar;                                                  // Задаём переменную для времени открытия текущего бара
      currBar = iTime(Symbol(),PERIOD_M1,0);          // Находим время открытия текущего бара
      if(lastBar!=currBar)                                               // Если время открытия последнего бара не равно времени открытия текущего бара, то...
         {
            lastBar=currBar;
            return(true);
         }
      return(false);
   }

qui fonctionne également correctement. C'est pourquoi on s'en prend à mon code sans raison. Et la question était généralement correcte. Apparemment le testeur est défectueux, donc les lectures sont toutes fausses. Sur la M5, il est en quelque sorte plus propre, sur la M15 aussi le H1 est déjà semblable.

 
hoz:


Eh bien, ça fonctionne de la même manière qu'avant... Il n'y a pas de changement ! J'ai même une nouvelle fonction d'ouverture de bar :

qui fonctionne également très bien. C'est pourquoi mon code est critiqué sans fondement. Mais la question était correcte en général. Apparemment, le testeur est défectueux et les lectures sont fausses. Sur la M5, c'est un peu plus clair, et sur la M15 aussi, le H1 est déjà exécrable.


Je conseillerais d'écrire if(lastBar<currBar) tout de suite, bien que cela ne change presque rien. Je vais continuer à parcourir vos messages, je vais peut-être dire autre chose.
 
hoz:


Eh bien, ça fonctionne de la même manière qu'avant... Il n'y a pas de changement ! J'ai même une nouvelle fonction d'ouverture de bar :

qui fonctionne également très bien. C'est pourquoi mon code est critiqué sans fondement. Mais la question était correcte en général. Apparemment, le testeur est défectueux et les lectures sont fausses. Sur la M5, c'est un peu plus propre, sur la M15 aussi, la H1 est déjà exécrable.



Cela peut aider. Votre fonction start() est un peu retravaillée. Je ne l'ai pas approfondi, mais quand même :

int start()
{
   fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,1);
   
 /*  Print("Bid = ", Bid);
   Print("Ask = ", Ask);
   Print("fastMa = ", fastMa);
   Print("i_thresholdFromMa * pt = ", i_thresholdFromMa * pt);
   */
// Отслеживание открытия нового бара
   static datetime lastBarTime = iTime(NULL, 0, 1));    // Время проведения последних рассчётов, изначально принимаем предыдущий бар
   
   if (lastBarTime < iTime(NULL, 0, 0))         // Если случился новый бар
 // Рассчёт сигнала 
    {
     if("На этом баре случилось что-то, что вынуждает ждать следуещего бара")
      {
       ..........// Выполняем действия открытия/закрытия или что-то там ещё...
       lastBarTime = iTime(NULL, 0, 0);              // На текущем баре все необходимые действия выполнены, ждём следуещего бара..
      }
     else
      {
       "Ничего не случилось, ждем до следуещего тика"
      }
    }
                                       // .. успешно выполнены
  return (0);
}
 
Sepulca:



Cela pourrait aider. Votre fonction start() est un peu retravaillée. Je ne l'ai pas approfondi, mais quand même :


Eh bien ici, le temps de calcul est pris à partir de la barre précédente. Cela ne semble pas logique. Nous avons besoin du bar actuel.
 
PapaYozh:

Personnellement, je n'ai jamais rencontré un statik qui ne fonctionnait pas.

Voici un exemple d'expert, si vous voulez le vérifier sur un graphique :

1. Lancez le conseiller expert.

2. Changez le TF.

3. Assurez-vous que cc n'est plus 20.

 
hoz:


Eh bien, ça fonctionne de la même manière qu'avant... Il n'y a pas de changement ! J'ai même une nouvelle fonction d'ouverture de bar :

qui fonctionne également très bien. C'est pourquoi mon code est critiqué sans fondement. Mais la question était correcte en général. Apparemment, le testeur est défectueux et les lectures sont fausses. Sur la M5, c'est un peu plus clair, et sur la M15 aussi, le H1 est déjà exécrable.

En ce qui concerne votre situation :

Le temps a été initialisé une fois - lorsque vous démarrez l'EA, il ne sera pas initialisé à nouveau, donc lorsque vous passez de M1 à D1, vous devrez attendre environ un jour pour le rafraîchissement du graphique :(

 
tara:

S'applique à votre situation :

Le temps a été initialisé une fois - lorsque vous démarrez l'EA, il ne sera pas initialisé à nouveau, donc lorsque vous passez de M1 à D1, vous devrez attendre environ un jour pour que le graphique se rafraîchisse :(



Le conseiller expert travaille sur une TF spécifique. Pourquoi aurais-je besoin de l'échanger ?
 
tara:

3. Assurez-vous que la cc n'est pas redevenue 20.

Il s'agit d'une caractéristique documentée des EA.
 
TheXpert:
Il s'agit d'une caractéristique documentée des EA.


Qu'est-ce qui est statique alors ? C'est plutôt un Fatalic...


Au fait, où est-il documenté ?

 
hoz:

Le conseiller expert travaille sur une TF spécifique. Pourquoi aurais-je soudainement besoin de l'échanger ?

Vous pouvez simplement changer certains paramètres. La réaction ne se produira qu'après le premier tick d'une nouvelle barre sur le TF fixé.

Mais vous vous êtes vous-même demandé pourquoi l'EA est inexplicable sur un TF plus élevé :)

Raison: