Erreurs, bugs, questions - page 1674

 
L'émission d'un avertissement sans signification :
int val = 1;
if( (bool)val & 1 )
  Alert("sfdsf");
Attention : expression non booléenne t_t_t.mq4 112 19

Vous pouvez vivre avec, bien sûr, mais c'est ennuyeux. J'ai déjà fait un casting explicite, et ça ne s'arrête pas.
 

pavlick_:

Votre caste fait référence à val et l'avertissement à l'expression

 
Комбинатор:

Votre caste fait référence à val et l'avertissement à l'expression

Oui, c'est ça, merci. C'est ainsi que la plainte est réduite au silence :

if( (bool)(val & 1) )

Je me suis assis pendant une demi-heure sans pouvoir comprendre pourquoi.

int val = B'10';
if( (bool)val & B'10' )
  Alert("sfdsf");
(Je n'ai pas réussi à comprendre pourquoi l'alerte ne fonctionne pas ici)).
 

L'aide peut préciser que BarsCalculated renvoie la valeur renvoyée par l'indicateur OnCalculated avec le handle demandé.

Existe-t-il un moyen de savoir, sans événements personnalisés, combien de barres un indicateur avec une telle poignée a mis à jour ?

 
Est-il possible que la taille du tampon de l'indicateur lu via CopyBuffer soit inférieure au nombre de barres ?
 
Ajouter une précision à l'aide indiquant que si une valeur supérieure à rates_total est renvoyée dans OnCalculate, alors lors du prochain OnCalculate prev_calculated sera égal à zéro.
 
fxsaber:

Existe-t-il un moyen de savoir combien de barres l'indicateur a mis à jour avec cette poignée sans événements personnalisés ?

Une des solutions.
 

MT4 b1010

Le compilateur ne jure pas par PlotIndexSetInteger. La fonction ne fait pas ce qu'elle fait dans MQL5.

 
fxsaber:

Je n'ai pas pensé à la situation où l'indicateur renvoie des valeurs différentes avec les mêmes paramètres.

Que va-t-il se passer dans cette situation ? Une répétition de l'iCustom de l'indicateur donnera des résultats identiques ? Et si après cela, nous faisons ChartIndicatorAdd à tous ces éléments ?

Pas de réponse.

Si je crée un iCustom avec le même contenu à partir de différents endroits et à différents moments, l'indicateur correspondant ne sera lancé qu'une seule fois (au premier iCustom) ?

 
BlackTomcat:
Nous en avons discuté hier, page 1687. :) Mais vous feriez mieux de lire ce message à la 1686e page : https://www.mql5.com/ru/forum/1111/page1686#comment_2790746. Au fait, l'homme a répondu à votre question. Il se trouve que le schéma est le suivant. La demande d'appel de l'indicateur va au Terminal. C'est-à-dire que le conseiller expert ou le script n'appelle pas directement l'indicateur, le terminal agit comme un intermédiaire. Le terminal vérifie si cet indicateur existe déjà avec les paramètres spécifiés. Si c'est le cas, il renvoie au programme qui a appelé l'indicateur, un handle (lien) vers l'indicateur déjà existant. Et dans son sous-sol terminal il marque dans le compteur qu'il y a eu un autre appel de cet indicateur. En d'autres termes, il enregistre combien de poignées ont été retournées pour cet indicateur. Quand quelqu'un fait l'IndicatorRelease, cela ne signifie pas que les autres qui ont appelé le même indicateur avec les mêmes paramètres n'ont plus besoin de cet indicateur. Par conséquent, le Terminal diminue le compteur de un, mais laisse l'indicateur actif, car quelqu'un d'autre l'utilise. Cela continuera jusqu'à ce que le compteur soit remis à zéro. Lorsque le compteur est remis à zéro, le terminal efface définitivement l'indicateur de la RAM.
Si vous essayez de créer un code qui contiendra IndicatorRelease, mais qui n'appellera pas l'indicateur lui-même, vous ne pourrez pas le compiler, parce que vous devez passer un handle à IndicatorRelease, mais si vous n'appelez pas l'indicateur depuis le programme, vous n'obtiendrez pas le handle.

Malheureusement, après inspection, il s'est avéré que tout cela n'était que spéculation. S'il y a un compteur interne, il ne fonctionne pas comme vous l'avez décrit.

J'ai écrit un indicateur qui remplit son tampon de façon aléatoire. J'appelle cet indicateur via iCustom avec les mêmes paramètres d'entrée depuis différents endroits (MT5). J'obtiens des valeurs de tampon complètement différentes ! Ou bien il y a un bug dans MT5 et les indicateurs ne fonctionnent pas comme il est annoncé.