CopyTicksRange () ne fonctionne pas correctement dans MQL5. a - page 4

 
Alexey Viktorov #:

Une ligne de retour au dialogue :

Lafonction doit fonctionner comme les développeurs l'ont prévu, et non comme les utilisateurs le souhaitent. On veut une chose, on veut une autre, et on veut des bêtises.

C'est la raison pour laquelle les développeurs ne vous répondent pas. Et je ne suis pas un avocat, j'essaie de vous apporter une vérité simple, ne dégoûtez pas les autres si vous ne pouvez pas le faire vous-même. Vous, par contre, vous avez allumé le "ne pas......... céder..." et vous inventez des mythes sur les béquilles.

C'est vraiment tout !¤¤¤¤ Les développeurs ne vous répondront pas... n'espérez pas trop.

Je sais que vous le ferez, alors je vais écrire. La fonction doit fonctionner comme décrit dans la documentation et rien d'autre. S'il y a des nuances, écrivez-les dans la documentation et vous n'aurez pas de problème.

Je n'ai pas l'intention de vous convaincre de quoi que ce soit. Vous feriez mieux de faire connaître aux développeurs des vérités simples. Je suis sûr que vous n'avez jamais travaillé dans une équipe de programmeurs - vous êtes un programmeur autodidacte typique, sans base de connaissances solide. Bien que j'aie travaillé et géré des projets sérieux, nous avions l'habitude de renvoyer les gens qui communiquaient avec des vérités banales non soutenues par l'expérience et les connaissances. Je n'ai pas besoin de vous comme intermédiaire pour communiquer avec les développeurs. J'ai reçu une réponse de leur part il y a environ deux ans - "faites des béquilles, tout fonctionne ici". J'espère que l'auteur de cette phrase a déjà été licencié car les programmeurs ne sont pas Dieu et font souvent des erreurs.

Nous avions un poste de testeur - vous ne pouvez même pas imaginer combien de bogues peuvent être trouvés dans quelques pages de code chez un programmeur trop confiant et inexpérimenté.

 
RusPro #:

Dans votre exemple, cela fonctionne, car les conditions d'appel sont différentes - l'heure de début est toujours égale au début de la barre existante (c'est-à-dire que les ticks sont connus pour exister) et vous lisez tout l'historique des ticks de la dernière barre en une seule fois.

Au fait, une de mes béquilles fonctionne comme la vôtre. J'obtiens également les temps des barres existantes dans un premier temps, puis je les découpe en segments continus maximaux et j'obtiens les ticks. Mais un autre problème se pose - s'il n'y a pas assez de tableau de réception pour les données, la reprise du reste est une danse au tambourin (dont j'ai parlé plus haut).

De plus, travailler avec des tableaux dynamiques est beaucoup plus lent et il faut tenir compte d'une éventuelle fragmentation de la mémoire.

Avez-vous lu tous les documents jusqu'au bout ?

Примечание

Функция CopyTicksRange() предназначена для запроса тиков из строго указанного диапазона, например, за конкретный день истории.

Et tout fonctionne rapidement avec les tableaux dynamiques.

Comparez votre ping et oubliez la vitesse des dyn. arrays :)

Il ne s'agit pas d'un canal MMB dédié

Ajouté par

Si vous avez besoin de vitesse, alors pourquoi vous êtes-vous "assis" sur BCS, ces trous du cul limitent délibérément la vitesse du login standard FORTS.

de 30 transactions par sec. à 10 tr. par sec. !

Ajouté

Et il est préférable d'écrire dans la section "Négociation de la bourse".

 
RusPro #:

Sur le forex, les mêmes erreurs. Courtier Alpari, compte d'essai. Symbole EURUSD

Le symbole personnalisé a été créé sur la base de l'EURUSD, le nom a été laissé tel quel.

Si nous parlons du fonctionnement des CopyTicks dans le Strategy Tester, je suis incompétent, car je n'ai jamais demandé un historique des ticks dans le Strategy Tester.

Je ne peux parler que du mode de combat.

 
prostotrader #:

Lisez-vous les documents dans leur intégralité ?

Oui, je lis les descriptions des fonctions jusqu'au bout, et si j'ai des doutes, je consulte aussi les forums. Chacun a une notion différente de la rapidité. La dynamique est plus lente par définition car la mémoire est constamment redistribuée. Le deuxième inconvénient est la fragmentation - parfois vous faites une erreur avec la dynamique et alors la mémoire n'est pas suffisante pour fermer le terminal :))).

Le ping n'a rien à voir avec ça, après le premier téléchargement, les ticks sont déjà donnés par la base, en théorie, bien sûr :) On m'a appris que le programme doit être accéléré par l'optimisation, mais pas par la base matérielle - c'est automatique. Et quelle différence cela fait-il, quelle est la connexion - aujourd'hui c'est une, demain une autre - cela ne dépend pas de l'algorithme.

J'ai mon propre courtier, c'est pourquoi je travaille avec eux depuis plus d'un an. Ma tâche consiste maintenant à tester les mathématiques sur les ticks, et non sur le trading ou le freelancing.

 
RusPro #:

De plus, travailler avec des tableaux dynamiques est beaucoup plus lent et il faut tenir compte d'une éventuelle fragmentation de la mémoire.

Veuillez fournir des mesures pour cette affirmation. Je prête beaucoup d'attention aux problèmes de performance des conseillers experts.

 
fxsaber #:

Si nous parlons de l'opération CopyTicks dans le Tester, je ne suis pas compétent, car je n'ai jamais demandé l'historique des ticks dans le Tester.

Je ne peux parler que du mode de combat.

Je ne parle pas du testeur, mais d'un compte de démonstration. Parce qu'il est problématique de vérifier Alpari sur un compte réel pendant le week-end.

 
RusPro #:

Je ne parle pas du testeur, mais du compte de démonstration. Le testeur, pas le testeur, mais le compte de démonstration.

Oui, si vous demandez des ticks dans un intervalle où il n'y en a pas, cela ne donne pas zéro, mais pour toute la journée.

On a l'impression que c'est fait délibérément. Mais je ne sais pas pourquoi.


L'enquête a montré que le problème se produit lorsque From frappe l'heure après le dernier tick de la semaine commerciale. Je pense que c'est un bug.

Sur les personnages réels et personnalisés, il se comporte de manière identique.


Évidemment, si je demande des ticks à partir du dernier tick de la demande précédente, le problème ne se produira pas. Mais si vous faites une demande avec SymbolInfoTick_time_msc, le bug peut se produire. Par conséquent, il est préférable de ne pas encore le faire.

 

fxsaber #:

Mais si vous faites une requête avec SymbolInfoTick_time_msc, le bug peut apparaître. C'est pourquoi il est préférable de ne pas encore le faire.

Il a été testé combien de fois ?

Si vous n'aimez pas SymbolInfoTick, utilisez

int  CopyTicks( 
   string           symbol_name,           // имя символа 
   MqlTick&         ticks_array[],         // массив для приёма тиков 
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков 
   ulong            from=0,                // дата, начиная с которой запрашиваются тики 
   uint             count=0                // количество тиков, поставьте 1
   );
CopyTicks

de

[Date à partir de laquelle les ticks sont demandés. Spécifié en millisecondes depuis le 01.01.1970. Si le paramètre from=0, alors le dernier compte de ticks est transmis .

 
Alexey Viktorov #:

Combien de fois cela a-t-il été vérifié ?

N'aime pas l'utilisation de SymbolInfoTick

Merci, excellent pour travailler avec les tiques. Cela n'invalide pas l'existence du bug.

 
Alexey Viktorov #:

Combien de fois cela a-t-il été vérifié ?

N'aime pas l'utilisation de SymbolInfoTick

il a été testé pendant deux ans !

Quel têtu ! Lisez ce qui a été écrit ci-dessus - CopyTicks a les mêmes problèmes. Si vous aimez chercher des moyens de faire fonctionner une fonction boguée ou trouver des solutions de contournement boguées, alors ne vous donnez pas la peine - il ne s'agit pas de cela.