Comment faire en sorte que les objets dessinés par XY changent en douceur (MT4 vs MT5) - page 10

 
Vitaliy Kuznetsov:

Merci, bon modèle, il sera utile. Très et intéressant d'apprendre de vos travaux.

Dmitry, je vous considère toujours comme un programmeur capable de faire preuve de grandes compétences.

Et s'il ya des suggestions de code, des pensées constructives, avec plaisir (et pas seulement moi) adopterait votre expérience.

P.S. Il vaut mieux voir le code une fois, que d'en entendre parler 100 fois.

Ouaip, alignés, debout dans la file, tenus à bout de bras... Un code pour quoi ?

 
Nikolai Semko:

Je doute que cela puisse être fait en free-lance. Ceux qui peuvent le faire sont surchargés de travail jusqu'aux oreilles, et ceux qui sont libres ne sont probablement pas aussi bons que vous pour les kanvas.

C'est pourquoi je n'aime pas les objets, car ils ont leur propre vie dans leurs flux, sur laquelle vous n'avez aucun contrôle. Avec kanvas, au contraire, tout est entre vos mains. C'est pourquoi je dois écrire du code supplémentaire pour le testeur avec canvas pour ne pas ralentir lors du calcul des trames à chaque tick plus de 30 fois par seconde.
De plus, le travail avec les TFs et le chargement de l'historique est très déraisonnable et inefficace dans MT5. Seuls les M1 sont chargés, et sous une forme non emballée, tandis que les autres sont uniquement calculés à partir des M1. Par conséquent, si vous activez MN1 pour la première fois, le chargement de 100 barres prendra plus de 10 secondes. J'ai dû écrire moi-même le chargement de la barre et convertir M1 en forme emballée et avoir tous les TF calculés en mémoire. Tous mes TF avec M1 occupent une fraction de l'espace en RAM par rapport au M1 normal dans MT5.

Est-ce une pénitence ou un plaisir ?

 
Алексей Тарабанов:

Est-ce la repentance ou l'enlèvement ?

Tu vois, c'est l'inverse. Vous créez un programme - c'est un monde qui vit selon vos lois. Vous faites quelque chose d'orienté vers l'objet : vous donnez naissance à quelque chose comme une amibe, ou une glacière, vivant par elle-même.

 
Алексей Тарабанов:

Est-ce la repentance ou l'enlèvement ?

C'est un non-sens basé sur un ego inadéquat. Et très loin des réalités du travail dans MT5.

 
Nikolai Semko:

Tout d'abord, fixez votre indicateur avec des objets selon l'algorithme que je vous ai donné.

Nikolay, si ce n'est pas difficile, que pensez-vous du fait que l'indicateur fixe se déplace dans le temps dans le testeur. Si vous essayez de changer l'échelle avec la souris, elle est fixe.

C'est la même chose avec kanvas. Soit la carte n'est pas décalée, soit elle est décalée de manière incorrecte (après un certain temps), jusqu'à ce que vous changiez manuellement l'échelle de la carte. Les calculs et les alertes eux-mêmes sont corrects, mais les graphiques...

Il doit sûrement y avoir une solution, que je ne vois pas. Ou peut-être y a-t-il un problème avec le testeur ?

 
Vitaliy Kuznetsov:

Nikolaï, si vous le voulez bien, que pensez-vous de l'indicateur corrigé qui change au fil du temps dans le testeur ? Si vous essayez de changer l'échelle avec la souris, elle est corrigée.

Il en va de même pour les kanvas. Soit la carte n'est pas décalée, soit elle est décalée de manière incorrecte (après un certain temps), jusqu'à ce que vous changiez manuellement l'échelle de la carte. Les calculs et les alertes eux-mêmes sont corrects, mais les graphiques...

Il doit sûrement y avoir une solution, que je ne vois pas. Ou peut-être y a-t-il un problème dans le testeur ?

J'ajoute une ligne dans OnChartEvent

if (id == CHARTEVENT_CHART_CHANGE ) Draw (); 
suivi d'un événement de changement de graphique (une nouvelle barre est également un événement de changement de graphique)
  • J'ajoute à OnCalculate pour le mode testeur une ligne pour redessiner par exemple lorsqu'une nouvelle barre arrive, car OnChartEvent ne fonctionne pas dans le testeur :
    .
     if(rate_total != prev_calculated ) if (Canvas.tester) {ChartChanged (); Draw ();}
  • Si cela ne fonctionne pas dans MT4, cela signifie qu'il y a un problème avec l'événement CHARTEVENT_CHART_CHANGE. Je ne peux pas le vérifier maintenant, il n'y a pas encore de devis.



     
    Nikolai Semko:

    Merci pour le conseil. Je n'ai pas encore eu le temps de le faire, je vais essayer aujourd'hui.