Erreurs, bugs, questions - page 1145

 
Fry:

Hum... Merci. J'ai regardé l'EURUSD dans le DC - c'est OK. Je compte régulièrement à partir de zéro.

Je ne peux pas répéter cette expérience maintenant (la Bourse de Moscou est fermée), mais c'était le cas sur le marché actif dans la journée :

ExpCount (Si-6.14,M1) OnTick_count=697
TicksCount (Si-6.14,M1) OnCalculateCount=1326

Littéralement quelques minutes. Y a-t-il un problème avec le courtier ?

Non, cela ne dépend pas du courtier. Le terminal reçoit un flux de ticks qui est donné à la fois aux indicateurs et aux Expert Advisors.

Cela signifie généralement que l'indicateur fonctionne rapidement et reçoit tous les ticks. Cependant, l'expert risque de prendre du retard dans ses calculs et ne pourra pas quitter le manipulateur avant l'arrivée du prochain tick. Vous avez cité un code simple à titre d'exemple, mais en réalité, vous avez calculé des ticks sur un Expert Advisor en fonctionnement qui a effectué de nombreux calculs. Au moins, il n'était pas aussi vide que dans l'exemple.

Par conséquent, le conseiller expert saute les ticks qui sont arrivés plus vite que son gestionnaire. Si vous ne sautez pas les tics dans ce cas, vous pouvez facilement mettre l'expert au travail dans le dur passé. Par exemple, en raison de ses coûts, le conseiller expert recevra des cotations périmées pendant plusieurs secondes/minutes à partir de la file d'attente des tick et lira un profil de marché complètement périmé.

 
Renat:

Non.

Cela signifie généralement que l'indicateur fonctionne rapidement et reçoit tous les ticks. Le conseiller expert, quant à lui, est très probablement lent dans ses calculs et n'a pas le temps de quitter le gestionnaire avant l'arrivée du prochain tick.

Par conséquent, l'expert sautera les tics arrivant plus vite que son manipulateur. Si vous ne sautez pas les tics dans ce cas, vous pouvez facilement mettre l'expert au travail dans le dur passé. Par exemple, en raison de ses coûts, le conseiller expert recevra des cotations périmées pendant plusieurs secondes/minutes à partir de la file d'attente des tick et lira un profil de marché complètement périmé.

Merci. Je l'ai. Je m'en doutais à cause de la file d'attente. Je n'arrivais pas à croire que cette file d'attente vide ralentissait autant alors que presque la moitié du flux passe.
 
Renat:

Nous n'avons pas d'erreur.

Vous avez essayé d'insérer une URL non documentée dans la page du clip à partir de votre navigateur au lieu d'une URL d'insertion documentée et prise en charge. Nous ne pouvons pas suivre chaque petit changement dans le moteur de page de YouTube et découper l'URL partageable en fonction de l'URL de la page.

Pouvez-vous expliquer pourquoi https://www.youtube.com/watch?v=XXXXXX est considéré comme "documenté" et https://www.youtube.com/watch?v=XXXXXX comme "non documenté" ?

C'est la ligne régulière à vérifier : ^https?:\/\/(www\.)?youtube\.com\/watch\?v=\S+$

 
Roffild:

Pouvez-vous expliquer pourquoi https://www.youtube.com/watch?v=XXXXXX est "documenté" et https://www.youtube.com/watch?v=XXXXXX est "non documenté" ?

Voici la ligne régulière à vérifier : https?:\/\/(www\.)?youtube\.com\/watch\?v=\S+.

Si nous parlons de reconnaissance d'URL en arrière-plan dans le corps du message, il ne s'agit pas de régularité, nous ne sommes tout simplement pas en train de parcourir les ressources HTTPS à la recherche de données structurées.

Si nous parlons de la fonction habituelle d'intégration des clips YouTube qui se trouve dans le panneau de l'éditeur, elle produit toujours des liens HTTP à partir de YouTube pour les partageurs comme http://youtu.be/ZI67sr0RXzU, même si vous y accédez via HTTPS.


Quand je parle d'URL documentée, je parle uniquement de ce qui est inséré dans le bouton spécial "Vidéo", où nous n'acceptons que les urls spéciales rendues pour le blindage de YouTube. Mais si vous utilisez des liens dans le texte d'un article, nous essayons de reconnaître les données structurées dans cette page pour faire un aperçu.

Voici à quoi ressemblent les données structurées de la vidéo :

        <meta property="og:site_name" content="YouTube">
    <meta property="og:url" content="https://www.youtube.com/watch?v=ZI67sr0RXzU">
    <meta property="og:title" content="MetaTrader 5 Strategy Tester 3D Visualization">
    <meta property="og:image" content="http://i1.ytimg.com/vi/ZI67sr0RXzU/maxresdefault.jpg">

      <meta property="og:description" content="MetaTrader 5 Strategy Tester 3D Visualization">

      <meta property="og:type" content="video">
          <meta property="og:video" content="https://www.youtube.com/v/ZI67sr0RXzU?version=3&amp;amp;autohide=1">
        <meta property="og:video:type" content="application/x-shockwave-flash">
        <meta property="og:video:width" content="960">
        <meta property="og:video:height" content="720">
et c'est ainsi qu'il est affiché :
MetaTrader 5 Strategy Tester 3D Visualization
MetaTrader 5 Strategy Tester 3D Visualization
  • www.youtube.com
MetaTrader 5 Strategy Tester 3D Visualization
 

Salutations, messieurs les développeurs. Et si on donnait la possibilité d'initialiser les constantes statiques directement dans le corps de la structure/classe, comme cela est implémenté en C++ :

struct TStruct {   static const int a = 10; };

C'est généralement beaucoup plus pratique et clair, plutôt que de supprimer l'initialisation en dehors de la classe, ce qui fait perdre des lignes de code supplémentaires.

Maintenant, le compilateur génère une erreur : '=' - utilisation illégale de l'affectation

 
Fry:
Merci. Je l'ai. Je me doutais que c'était la queue. Je n'arrivais pas à croire que ce truc était si lent, avec presque la moitié du débit qui passe.
Peut-être que ce ne sont pas les freins, mais le flux de ticks du serveur commercial. Si les ticks proviennent du serveur "en pack", alors OnTick() du Conseiller Expert est appelé une fois par "pack" et non pour chaque tick qui le compose.
 
meat:

Salutations, messieurs les développeurs. Et si on donnait la possibilité d'initialiser les constantes statiques directement dans le corps de la structure/classe, comme cela est implémenté en C++ :

C'est généralement beaucoup plus pratique et clair, plutôt que de supprimer l'initialisation en dehors de la classe, ce qui fait perdre des lignes de code supplémentaires.

Maintenant, le compilateur génère une erreur : '=' - utilisation illégale de l'affectation

Il existe des constructeurs à cet effet qui fonctionnent également pour les structures.
 
Renat:
Il existe des constructeurs pour cela, qui fonctionnent également pour les structures.

Les constructeurs sont conçus pour initialiser les membres locaux d'un objet. Et nous parlons de variables statiques de classe. Ils sont initialisés soit en dehors du corps de la classe, soit dans le corps de la classe à l'endroit de la déclaration (si ce sont des constantes) - c'est le deuxième cas dont je parle, il fonctionne en C++, et en MQL il produit une erreur.

 
meat:

Salutations, messieurs les développeurs. Pourquoi ne pas rendre possible l'initialisation des constantes statiques directement dans le corps de la structure/classe, comme c'est le cas en C++ ?

En fait, dans les plus, l'initialisation des membres statiques est effectuée en dehors de la classe. Seules les constantes de type intégral peuvent être initialisées en interne.
 
TheXpert:
En fait, dans les plus, l'initialisation des membres statiques est déplacée en dehors de la classe. Seules les constantes de type intégral peuvent être initialisées à l'intérieur de la classe.
En fait, nous parlons exactement de constantes. Il fonctionne bien en C++.
Raison: