Erreurs, bugs, questions - page 1974

 

Erreur d'exécution

class B {};
struct A {
template<typename T> void f()       { Print( __FUNCSIG__ ); } //2
template<typename T> void f() const { Print( __FUNCSIG__ ); } //1
        void g()       { f<B>(); }
};
void OnStart()
{
        A a;
        a.g();
}
En conséquence, la méthode const (1) est appelée au lieu de const (2). Si vous intervertissez les lignes (1) et (2) (mais pas les indices), ce n'est pas const - comme prévu
 

Bonjour ! Pouvez-vous me dire pourquoi une simple condition n'est pas remplie ?

if ( Bid > High[iHighest(Symbol(),0,MODE_HIGH,30,1)] )

Le journal des erreurs ne s'affiche pas. J'ai écrit Comment(Bid) ; et j'ai remarqué que lorsque Bid devient supérieur à High[...], son commentaire s'arrête.

Et la condition de ce genre est remplie :

if ( Bid > High[10] )
 
giros:

Bonjour, Pouvez-vous me dire pourquoi une simple condition n'est pas remplie :

Le journal des erreurs ne s'affiche pas. Prescribed Comment(Bid) ; et remarqué que lorsque Bid devient plus que High [...], son commentaire s'arrête.

Et la condition de ce genre est remplie :


Joignez tout le code, il n'y a pas d'erreurs dans ce que vous avez montré...

 
Vladimir Pastushak:

Joindre le code entier, il n'y a pas d'erreurs dans ce que vous avez montré...

J'ai simplifié le code au maximum pour trouver l'erreur, l'erreur se trouve exactement dans la ligne de condition de comparaison Bid > High [...].
Voici le code complet, et même s'il n'est pas exécuté, vous pouvez le copier et le vérifier :

void OnTick()
  {
   if ( Bid > High[iHighest(Symbol(),0,MODE_HIGH,20,1)] )
      {int Buy = OrderSend(Symbol(),OP_BUY,1,Ask,30,0,0,NULL,12345,0,clrBlue);}
  }
 
giros:

J'ai simplifié le code au maximum pour trouver l'erreur, l'erreur se trouve exactement dans la ligne de condition de comparaison Bid > High [...].
Voici tout le code, et même s'il n'est pas exécuté, vous pouvez le copier et le vérifier :


Et quel résultat attendez-vous ?

 
giros:

J'ai simplifié le code pour trouver l'erreur. L'erreur se trouve dans la ligne de condition de comparaison Bid > High[...].
Voici le code complet, et même s'il n'est pas exécuté, vous pouvez le copier et le vérifier :


Votre état ressemble à ceci

Si le prix de l'offre est supérieur au plus haut des 20 dernières bougies, à l'exception de la barre zéro. Et ensuite ouvrir des ordres sans s'arrêter.


Si votre enchère actuelle est inférieure au plus haut prix, alors aucune action...

 
Vladimir Pastushak:

Quel résultat attendez-vous ?

Dans ce cas précis, j'attends l'ouverture d'un ordre d'achat.

Dans le cas général, j'attends l'exécution de l'opérateur {...}.

 
giros:

Dans ce cas précis, j'attends l'ouverture d'un ordre d'achat.

Dans le cas général, j'attends - l'exécution de l'opérateur {...}.


Lisez attentivement votre condition

 
giros:

Dans ce cas précis, j'attends l'ouverture d'un ordre d'achat.

Dans le cas général, j'attends l'opérateur {...}.


J'ai votre condition qui fonctionne clairement, les commandes s'ouvrent...

 
Vladimir Pastushak:

Quel résultat attendez-vous ?

Eh bien, pour s'abstraire du résultat spécifique et trouver la raison de la non-réalisation de la condition, je propose un code encore plus simple, il ne fonctionne pas non plus :

void OnTick()
  {
   if ( Bid > High[iHighest(Symbol(),0,MODE_HIGH,20,1)] )
      {Comment("Oshibki Net");}
  }

Le commentaire "Oshibki Net" n'apparaît pas. Vous pouvez le copier et le vérifier dans votre terminal.
Qui sait, dites-nous s'il vous plaît, où est l'erreur dans ce code ? Pourquoi la condition if ne fonctionne pas.

Raison: