Erreurs, bugs, questions - page 2000

 
fxsaber:

Donc ce n'est pas à propos de ArrayResize, c'est à propos de ArrayInitialize. ArrayResize garantit des zéros dans MT4.

Et si vous le lisez attentivement ? Permettez-moi de le citer à nouveau.

L'initialisation d'un tableau avec l'expressionArrayInitialize(array, init_val) ne signifie pas l'initialisation des éléments de la réserve allouée pour ce tableau avec la même valeur. Lorsque la fonction ArrayResize() augmente ensuite la taille du tableau dans la réserve actuelle, les éléments dont les valeurs ne sont pas définies et le plus souvent ne sont pas égales àinit_val sont ajoutés à la fin du tableau.

ArrayInitialize - Операции с массивами - Справочник MQL4
ArrayInitialize - Операции с массивами - Справочник MQL4
  • docs.mql4.com
ArrayInitialize - Операции с массивами - Справочник MQL4
 
Stanislav Korotky:

Et si vous le lisez attentivement ? Je vais le citer à nouveau.

L'initialisation d'un tableau avec l'expressionArrayInitialize(array, init_val) ne signifie pas l'initialisation des éléments de la réserve, allouée pour ce tableau. Lorsque la fonction ArrayResize() augmente ensuite la taille du tableau dans la réserve actuelle, les éléments dont les valeurs ne sont pas définies et le plus souvent ne sont pas égales àinit_val sont ajoutés à la fin du tableau .

Ils l'ont juste sécurisé pour qu'il soit plus difficile d'expliquer qu'il n'y a pas de init_val à cet endroit. Mais, bien sûr, vous pouvez le remplacer par "dont les valeurs sont nulles".
 
Stanislav Korotky:

Et pourquoi inventer des scénarios aussi irréalistes, essentiellement des erreurs de programmeurs MQL ? Évidemment, l'initialisation complète n'est effectuée qu'une fois, ou si un pompage de données est détecté. Dans ce cas, il serait plus efficace que ce soit le noyau qui s'en charge.

Où ai-je parlé de double initialisation ? C'est à peu près la même chose, mentionnée ci-dessus, le remplissage de tous les éléments dans une boucle, dont je parlais. S'il est présent, l'initialisation est inutile et ne fait que gaspiller des ressources.

Et si vous ne comptez pas toutes les barres, occupez-vous vous-même de les remplir de zéros.

 
Stanislav Korotky:

C'est si la formule est appliquée sur toutes les barres. Et si ça ne s'applique qu'au dernier ? J'ai, par exemple, beaucoup d'indices qui me permettent de définir le nombre de barres à calculer, car les calculs peuvent être lourds. Une initialisation est nécessaire.

En général, si vous ne voulez pas le faire, ne le faites pas. Je ne discute plus de ce sujet. ;-)

Voici des mots en or... Mais il est préférable de dire "lorsque nous ne sommes pas obligés de le faire, nous ne le ferons pas". Ou vice versa "nous ne le ferons que là où c'est nécessaire".

 
fxsaber:

Seuls les nouveaux éléments du tableau sont initialisés. Et le but est toujours le même : des résultats identiques d'une exécution à l'autre, même s'il y a une erreur dans le code (souvent pas la vôtre).J'ai donné un exemple avec la bibliothèque mathématique ci-dessus.

Les déchets sont mauvais.

Je n'arrive même pas à trouver des mots décents pour le commenter.

Si on vous demande de vous en enduire... Je ne pense pas que vous le feriez. Disons que la première fois, vous ne savez pas ce que c'est, puis la deuxième fois ?

Pourquoi demandez-vous aux développeurs de vous protéger de la merde ? Protégez-vous. Ou si vous avez des arguments irréfutables pour justifier sa nécessité, alors ne les cachez pas au public.

Vous savez, mql3 était un endroit où vous pouviez écrire tellement d'erreurs que cela vous faisait dresser les cheveux sur la tête... Mais l'EA n'a pas d'importance, il fonctionne de toute façon... Est-ce qu'il fonctionne bien ? Qui s'en soucie ?

Pour une raison quelconque, il n'y a pas d'argument pour sortir du tableau. Et il semblerait que ce soit un moindre mal que la poubelle dans un tableau ou une variable. Eh bien, nous n'avons plus un tel indice dans le tableau comme avant, alors soyez mon invité et continuons à travailler. les mains, retournons au travail. Tout s'est arrangé...

 
Alexey Viktorov:

Alors pourquoi exigez-vous des développeurs qu'ils vous protègent de la merde ? Protégez-vous. Ou s'il existe des arguments convaincants pour le faire, alors ne les cachez pas au public.

Il n'y a pas eu de demandes, l'irréfutabilité est démontrée.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.09.12 16:17

#property strict

void OnStart()
{
  uchar Array[];
  
  const int Size = ArrayResize(Array, 10000);
  
  bool Res = false;
  
  for (int i = 0; (i < Size) && (!Res); i++)
    Res = Array[i];
    
  Print(Res);
}

Dans MT4, il retournera toujours false, car sans déchets, il n'y a que des zéros. Dans MT5, c'est vrai.

Ainsi, le même code dans le testeur MT4 montrera toujours des résultats identiques d'une exécution à l'autre. Dans un testeur MT5, ce ne sera pas le cas.

 
fxsaber:

Il n'y avait pas d'exigence, l'irréfutabilité est démontrée

Qui interdit d'ajouter une seule ligne ?

  uchar Array[];
  const int Size = ArrayResize(Array, 10000);
  bool Res = false;
  ArrayInitialize(Array, 0);
  for (int i = 0; (i < Size) && (!Res); i++)
    Res = Array[i];
  Print(Res); 

Ou bien ne savez-vous pas que faux est 0, tout le reste est vrai quel que soit le signe ? Vous prenez des valeurs dans les réserves d'un tableau et vous voulez vous assurer qu'il y a 0. Dans ce cas, il est raisonnable d'initialiser le tableau avec des zéros, mais pourquoi alourdir le système avec un nullage forcé quand ce n'est pas nécessaire ?

Désolé, mais cet exemple est totalement absurde.

 
Alexey Viktorov:

Qui interdit d'ajouter une seule ligne ?

Il ne s'agit pas de moi.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

fxsaber, 2017.09.12 16:52

Il est effrayant de penser qu'une bibliothèque mathématique (Include\Math -code source de 7 Mo) n'a pas été initialisée à un ou deux endroits ! Et comment résoudre cette erreur qui, dans le testeur MT5, donne des exécutions uniques différentes et dans MT4 les mêmes exécutions ?

 
fxsaber:

Il ne s'agit pas de moi.

La seule chose qui reste à faire est d'abandonner toutes les bibliothèques des autres. Et je n'ai jamais regardé ou utilisé aucune de ces bibliothèques. Il est plus facile d'écrire tout ce dont vous avez besoin que de fouiller dans une pile pour vérifier les bugs... Et pour n'utiliser que deux ou trois fonctions...

 
Alexey Viktorov:

La seule chose qui reste à faire est de rejeter toutes les bibliothèques des autres. Et je n'ai jamais regardé celui-là, encore moins l'utiliser. Il est plus facile d'écrire tout ce dont on a besoin que de fouiller dans un tel tas pour vérifier qu'il n'y a pas de bogues... Et pour n'utiliser que deux ou trois fonctions...

Je n'ai pas la compétence pour faire de telles déclarations.