Erreurs, bugs, questions - page 600

 
papaklass:

Urain, sergeev merci pour les réponses.

Je sais comment écrire des index dans un tableau, mais je pensais qu'il y avait quelque chose de plus rapide.

C'est la première fois que j'entends parler du tri "à bulles". Si vous le pouvez, veuillez me donner plus de détails et mieux avec un exemple simple. Je vais quand même lire vos liens.

Merci encore pour les réponses.

http://ru.wikipedia.org/wiki/Сортировка_пузырьком

Au fait, l'article met en œuvre le tri par secousses des index (mais je l'appelle tri par bulles par habitude).

Le secoueur se distingue de celui à bulles par le fait que le premier passe dans un sens, alors que le second alterne, ce qui accélère le tri en réduisant les passages, car les bulles non seulement flottent mais coulent aussi.

Сортировка пузырьком — Википедия
  • ru.wikipedia.org
Сортировка простыми обменами, сортиро́вка пузырько́м (англ.  ) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²). Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяются более...
 

Devinez trois fois quel indicateur je suis venu vous demander ? La bonne réponse est iFractals. Inattendu, n'est-ce pas ?

La section d'aide de Custom Indicators https://www.mql5.com/ru/docs/customind indique :"Par exemple, si current rates_1000 et prev_calculated=999, nous n'avons peut-être besoin d'effectuer des calculs que pour une seule valeur de chaque indicateur tampon. " Mais tout ceci s'applique à la première forme - courte - de l'appel de la fonction OnCalculate(). Si, par contre, plusieurs tampons indicateurs interviennent dans le calcul, ce formulaire ne fonctionnera pas.

Exécutons dans M1 le code de l'exemple iFractals de l'aide, où la deuxième forme - complète - de l'appel de fonction OnCalculate() est utilisée. Mais avant cela, à l'intérieur de cette fonction, nous allons corriger

Comment(comm);

à

Print(comm);

afin de ne pas perdre de vue toute ligne avec sortie (si on la laisse telle quelle, visuellement toujours 1 sera visible, car les autres valeurs sont rares et immédiatement remplacées par 1, donc il semble que 1 soit toujours en sortie). Après l'exécution, nous voyons que les valeurs non unitaires se produisent toutes les minutes, c'est-à-dire à chaque nouvelle barre, ce qui indique sans équivoque que l'indicateur est redessiné toutes les minutes.entièrement malgré le fait que le code utilisealgorithme économique. Les sceptiques peuvent ajouter plusieurs lignes de code, en dessinant, par exemple, des lignes verticales sur chaque fractale, puis les retirer après le premier dessin et attendre que l'ensemble complet des mêmes lignes apparaisse après une minute avec une nouvelle barre. Pour une raison quelconque, il ne s'agit pas de dessiner seulement la dernière fractale ou ligne.

Question aux développeurs : est-ce que l'indicateur a été écrit négligemment ou il n'y avait pas de but de rendre seulement la dernière - nouvelle - valeur calculée de la fractale ? ou ai-je joyeusement confondu un bloc de code avec des calculs values_to_copy avec un algorithme économique qui n'existe pas du tout ? ou dans la forme complète de l'appel de fonction OnCalculate() est-il impossible d'utiliser l'analogue de const int begin pour fixer le début de données significatives ?

Veuillez noter qu'aucun remplissage des "trous" de l'histoire, chargement de barres du passé et autres événements qui remettent à zéro prev_calculé, ne se produit pendant l'expérience ! C'est-à-dire qu'il n'y a aucune raison de recalculer les valeurs de l'ensemble de l'indicateur.

Bien sûr, je me ferais quelque chose de tolérable pour cet algorithme notoirement économe, mais l'avis officiel des développeurs sur cette question et les corrections si nécessaire, apparemment, sont importants ici.

Документация по MQL5: Пользовательские индикаторы
Документация по MQL5: Пользовательские индикаторы
  • www.mql5.com
Пользовательские индикаторы - Документация по MQL5
 

Demande convaincante aux développeurs (d'ailleurs, je ne suis pas le premier à le demander) : veuillez remplacer l'ancienne version de l'indicateur Fractals par la nouvelle. (Pour votre information : dans l'ancienne version, la fractale la plus récente peut apparaître sur la dernière barre (ce qui peut entraîner son redessin indésirable), tandis que dans la nouvelle version, la fractale la plus récente peut apparaître jusqu'à trois barres avant la dernière barre). Bien sûr, nous pouvons dessiner manuellement une ancienne ou une nouvelle version sur un graphique si nous le souhaitons, mais lorsque nous essayons de faire référence à la poignée iFractals dans notre code, l'ancienne version fonctionnera toujours. Combien de temps perdu à essayer de s'enthousiasmer et à ne pas me frapper le visage contre la table en essayant de localiser ce supposé bug...

P.S. : Je n'ai pas mis à jour l'ensemble, seulement par le biais de Live Update. Peut-il en être la raison ? Des conseils ? Si c'est le cas, je ferai une mise à jour complète.

 
x100intraday:

Demande convaincante aux développeurs (d'ailleurs, je ne suis pas le premier à le demander) : veuillez remplacer l'ancienne version de l'indicateur Fractals par la nouvelle. (Pour votre information : dans l'ancienne version, la fractale la plus récente peut apparaître sur la dernière barre (ce qui peut entraîner son redessin indésirable), tandis que dans la nouvelle version, la fractale la plus récente peut apparaître jusqu'à trois barres avant la dernière barre). Bien sûr, nous pouvons dessiner manuellement une ancienne ou une nouvelle version sur un graphique si nous le souhaitons, mais lorsque nous essayons de faire référence à la poignée iFractals dans notre code, l'ancienne version fonctionnera toujours. Combien de temps perdu à essayer de s'enthousiasmer et à ne pas me frapper le visage contre la table en essayant de localiser ce supposé bug...

P.S. : Je n'ai pas mis à jour l'ensemble, seulement par le biais de Live Update. Peut-il en être la raison ? Des conseils ? Si c'est le cas, je ferai une mise à jour complète.

Qu'est-ce qui vous empêche d'utiliser iCustom(...) ?
 
Valmars:
Qu'est-ce qui vous empêche d'utiliser iCustom(...) ?
Rien en principe. Mais la version périmée du même indicateur - n'est pas le cas, par définition, la version périmée devrait être supprimée au niveau de la distribution, et cela, à mon avis, devrait être la préoccupation des développeurs. Et si nous laissons l'ancien, ce ne devrait pas être le défaut,mais le nouveau, plus correct. Personnellement, je ne qualifierais pas l'ancienne version d'alternative ; il s'agit en fait d'une version manifestement incorrecte qui peut vous attirer de nombreux ennuis à l'avenir.
 
x100intraday:

Demande convaincante aux développeurs (d'ailleurs, je ne suis pas le premier à la demander) : veuillez remplacer l'ancienne version de l'indicateur Fractals par la nouvelle. (Pour référence : dans l'ancienne version, la fractale la plus récente peut apparaître sur la dernière barre (ce qui peut entraîner son redessin indésirable), tandis que dans la nouvelle version, la fractale la plus récente peut apparaître jusqu'à trois barres avant la dernière barre).

1. De quelle nouvelle version s'agit-il ?

2. Qu'est-ce qui vous empêche de sonder 3 barres au lieu de 2 ?

 
J'ai une question : est-il possible d'obtenir les données de l'indicateur pour différentes paires de devises et pas seulement pour celle sur laquelle l'indicateur est installé.
#property copyright "2010, Graff"
#property link      "http://www.mql5.com"
............
hwd_EURUSDf=iMA("EURUSD",0,Fast*k,shift,smootMode,price);
hwd_GBPUSDf=iMA("GBPUSD",0,Fast*k,shift,smootMode,price);
.......
if(CopyBuffer(hwd_EURUSDf,0,i,1,buff)<=0) return(-1);
if(CopyBuffer(hwd_GBPUSDf,0,i,1,bufs)<=0) return(-1);

etc. Quelque chose ne fonctionne pas. Ci-dessus, un morceau de code de CCFp.mq5, que j'ai installé pour l'auto-test. Mon propre indicateur (écrit sur le même principe, c'est à dire Handles->CopyBuffer)

Ne fonctionne pas (Print(buff[i]) montre une merde.

S'il vous plaît : Si vous avez la solution, s'il vous plaît envoyez-moi le code ! MT5 bild 555/.

 
alexx_v:

Je viens d'entendre le terminal se reconnecter avec le serveur après une pause, j'ai regardé et c'est le cas, il y a un nouveau pépin :


alexx_v:

Je viens d'entendre le terminal se reconnecter avec le serveur après une pause, j'ai regardé, et c'est le cas, il y a un nouveau pépin :


Cette image est-elle sur MT4 ou MT5 ?
 
sergeev:

1. De quelle nouvelle version s'agit-il ?

2. Qu'est-ce qui vous empêche de sonder 3 barres au lieu de 2 ?

1. Il y a deux indicateurs Fractals apparemment identiques dans les indicateurs standard : dans la section avec les indicateurs de Bill Williams et dans la section Personnalisée. En les comparant, nous constatons que le premier a tendance à redessiner certaines des fractales fraîches sur la dernière barre, tandis que le second n'a pas cet inconvénient car la fractale est vérifiée dans la boucle en utilisant son propre algorithme pour i<rates_total-3, c'est-à-dire avec une barre en moins, tandis que les fractales elles-mêmes sont formées algorithmiquement en vérifiant seulement deux barres adjacentes et, si nécessaire, elles sont complètement confirmées seulement quand une nouvelle, troisième, barre apparaît. Je connais l'emplacement des fractales correctes : C:\Program Files\MetaTrader 5\MQL5\Indicators\Examples\Fractals.mq5, mais iFractals ne le sait pas, maisiFractals connaît le chemin vers l'ancienne version que j'ai du mal à trouver. Prend-il l'ancien code de C:\Program Files\MetaTrader 5\MQL5\Include\Indicators\BillWilliams.mqh?

Fractale douteuse (prématurée) vs fractale qui ne peut être affirmée qu'avec une nouvelle mesure

2. Rien, cette solution est évidente et je l'utilise déjà presque. Mais voilà le truc. Si nous ne regardons pas en profondeur dans le projet et ne prenons en compte que les fractales, alors oui - il n'y a rien de mal avec le recâblage ; mais si nous faisons des constructions TA graphiques basées sur des fractales de saut et effectuons des transactions automatiques basées sur celles-ci, alors dans certains cas de fausses opérations (ouverture de position trop précoce) se produisent, parce qu'aucun recâblage des fractales n'a encore eu lieu et que la correction des constructions n'a pas été effectuée, mais le signal d'entrée sur le marché a déjà fonctionné. Lorsque le redécoupage fractal et la reconstruction de l'outil graphique auront lieu, tout sera corrigé, sauf la position ouverte prématurément. Ce n'est pas la solution la plus agréable de paralyser la position en fermant, réduisant ou ouvrant la position opposée - cela nécessite des filtres supplémentaires, des vérifications, qui contredisent un signal douteux et diminuent donc la fréquence des transactions, ainsi que l'ajout d'autres ballasts compliquant l'indicateur.

En principe, on peut céder à soi-même et accepter d'utiliser la moins première fractale, et non la dernière, qui est encore douteuse et peut être redessinée. Mais pour moi, c'est un exemple typique de béquille, qui s'accumule parfois dans son propre code et qui ne devrait pas exister, si possible... et je ne parle même pas de la lenteur à obtenir les informations correctes du marché et à faire des constructions.

 
goblin:
J'ai une question : est-il possible d'obtenir les données de l'indicateur pour différentes paires de devises, et pas seulement celle sur laquelle l'indicateur est installé.

etc., quelque chose ne fonctionne pas. Ci-dessus, un morceau de code de CCFp.mq5, que j'ai installé pour l'auto-test. Mon propre indicateur (écrit sur le même principe, c'est-à-dire Handles->CopyBuffer)

Ne fonctionne pas (Print(buff[i]) montre une merde.

Demande : Si vous avez la solution, s'il vous plaît donnez-moi le code ! MT5 bild 555/

Oui, il semble que j'ai résolu le problème tout seul.

Question aux admins : Je l'ai téléchargé du site, dans l'exemple d'aide j'ai utilisé (xxx=iMA(.....)), mais MA n'est pas dans les indicateurs, il est dans les inclus. Est-ce un test d'intelligence ?

Je suis désolé pour le temps !