Erreurs, bugs, questions - page 2394

 
SEM:

Bonjour !

La dernière version(build 2007, 25 Feb 2019) a découvert deux bogues :

1) 1) Lorsque l'on ouvre le programme (ou que l'on change de profil), de nombreux graphiques (41 au total) affichent un éternel "Waiting for update".

2) 2) Lors de la fermeture du programme, celui-ci ne se ferme pas complètement, le gestionnaire de tâches montre que le programme n'est pas fermé, bien que visuellement il ne soit plus affiché.

3) Bug controversé (sur la version de décembre 2018 tout fonctionnait bien, aucune erreur), peut-être un bug dans l'indicateur, au démarrage du programme ou au changement de profil, l'indicateur n'est pas calculé correctement, vous pouvez voir sur les données rendues que certaines données ne sont pas calculées correctement. Lorsque vous réappliquez le modèle ou les propriétés de l'indicateur d'ouverture et de fermeture, les données sont correctement calculées.

4) Pour une raison quelconque, les agents ont cessé de fonctionner dans le nuage après la mise à jour (le compte est répertorié). Tests passés 586, temps passé 0 heures 0 minutes.

Erreur de rendu des graphiques, cela arrive aussi avec les indicateurs standards, seul le redémarrage du terminal et la fermeture forcée via le gestionnaire de tâches sont utiles.

Quelle peut être l'erreur ? L'historique des symboles est chargé.

erreur

 
SEM:

Erreur de rendu des graphiques, se produit avec les indicateurs standard, seul le redémarrage du terminal, et la fermeture forcée via le gestionnaire de tâches aide.

Quelle pourrait être l'erreur ? L'historique des symboles est chargé.


Principalement dans les indicateurs où je travaille avec des objets (étiquettes, etc.). Peut-être est-ce lié au grand nombre de tableaux d'indicateurs. En moyenne, environ 40 "INDICATOR_DATA" et "INDICATOR_CALCULATIONS". À propos, si ma mémoire est bonne, dans de telles situations, même après une compilation réussie, le terminal ne mettait pas à jour les indicateurs, mais je n'en suis pas sûr.

Le code a été optimisé pour traiter les données provenant du plus petit nombre possible de ces matrices par unité de temps, avec le même nombre de matrices ou plus.

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
 
Ilya Malev:

Je ne suis pas au courant de ces subtilités, car je n'ai pas été impliqué dans le développement de mon propre TS sur MT5 dans le passé. Comment se fait-il que les prises soient des places de marché, quelles sont les nouvelles ? Si vous ne savez pas comment cela est nouveau, c'est juste la même chose que l'ordre limite, si vous êtes dans les lacunes, ils doivent être exécutés à la première cotation, c'est-à-dire, dans le cas de limites glisser dans le plus. Un courtier de qualité peut l'autoriser sur le compte réel. Mais bien sûr, ce n'est pas une règle. Mais si le spread par barre était maximal, il compenserait le profit sur les limites.

Probablement le moyen le plus rapide de vérifier le slippage dans le testeur de stratégie.

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

Bibliothèques : TradePanel_Csharp

fxsaber, 2019.03.05 10:10

Démo

Voir la colonne SlipPage

La colonne SlipPage indique le slippage à l'ouverture (par limite) et à la fermeture (par prise) en pips. Nous pouvons parfaitement voir comment le Testeur en mode ticks réels surestime le bénéfice.

 
Est-ce possible dans d'autres compilateurs ?
void OnInit()
{
  OnInit2(); // Пропишите внизу OnInit
}

#define OnInit OnInit2
Actuellement, le compilateur donne
'OnInit2' - function not defined        Test3.mq5       3       3
1 error(s), 0 warning(s)                2       1


Je voudrais qu'il donne

'OnInit2' - function not defined        Test3.mq5       3       3 Пропишите внизу OnInit
1 error(s), 0 warning(s)                2       1
 
fxsaber:
Les autres compilateurs disposent-ils de cette fonctionnalité ?


Je voudrais qu'il produise

Les compilateurs ont généralement un lien statique entre les pointeurs et les appels de fonction ou les variables (c'est ainsi que ça se présente ?), c'est-à-dire que tous les décalages de pointeur sont calculés au moment de la compilation.

Dans votre exemple, tout se passe comme à l'ancienne, #define et #ifndef ( _DEBUG ? ).

 
Igor Makanu:

dans les compilateurs, c'est peu probable, dans les interprètes, c'est très probablement possible, les compilateurs utilisent généralement la liaison statique des pointeurs aux appels de fonction ou aux variables (cela devrait ressembler à cela ? ), c'est-à-dire que tous les décalages de pointeur seront calculés au moment de la compilation.

Dans votre exemple, tout se passe comme avant, #define et #ifndef ( _DEBUG ? ).

Je voulais juste que le compilateur complète le message d'erreur par un commentaire de ligne.

 
Vjacheslav Lapaev:

J'y suis également confronté. Je ne peux pas dire que c'est dans la dernière version, mais dans les précédentes - c'est sûr. Principalement dans les indicateurs, où je travaille avec des objets (étiquettes, etc.). Probablement que c'est lié à un grand nombre de tableaux d'indicateurs. en moyenne, environ 40, à la fois "INDICATOR_DATA" et "INDICATOR_CALCULATIONS". À propos, si ma mémoire est bonne, dans de telles situations, même après une compilation réussie, le terminal ne mettait pas à jour les indicateurs, mais je n'en suis pas sûr.

Le code a été optimisé pour traiter les données provenant du plus petit nombre possible de ces matrices par unité de temps, avec le même nombre de matrices ou plus.

Merci pour le tuyau ! C'est dommage, bien sûr, que le programme soit instable, il n'y avait pas une telle erreur dans la version de décembre.
 
Ilyas:

Je ne suis pas entré dans le code présenté, laissez-moi essayer de deviner - le problème est que les deux EAs fonctionnent avec la même ressource graphique.

Voici un exemple d'utilisation de la classe CAppDialog de la bibliothèque standard.

Si vous utilisez cette classe, la méthode Minimize() est toujours appelée lors du changement de graphique.

Je n'ai pas voulu le comprendre, j'ai juste écrit mon propre OnClickButtonMinMax(), c'était plutôt désordonné, mais ça a fonctionné sans problème.

CAppDialog::OnClickButtonMinMax()
  {
   if(Width()<200) Minimized_state=false;
   if(Minimized_state)
     {
      Minimize();
     }
   else
     {
      Maximize();
      ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true);
      ObjectSet(TS2.Name()+"Label",OBJPROP_BACK,true);
      ObjectSet(CP.Name()+"Label",OBJPROP_BACK,true);
     }
  }

il y a un autre bug dans la classe CAppDialog, après Minimize() et Maximize() la propriété OBJPROP_BACK de la classe CCheckBox est modifiée, et les cases à cocher deviennent avec une bordure "carrée", j'ai fixé ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true) dans ce code rapidement ; ...

 
Vjacheslav Lapaev:
Salut !

Étant donné : deux graphiques dans le terminal mt5, par exemple EURUSD H1, EURUSD H1. Que les tableaux portent respectivement les numéros 1 et 2, avec une numérotation de gauche à droite.

Si le "panneau" (pratiquement n'importe lequel) est placé sur le graphique qui a le numéro 1, alors, après la transition vers le graphique 2 et le retour au graphique 1, le panneau est minimisé - minimisé dans le coin supérieur gauche.

En même temps, si le "panneau" est placé dans le diagramme 2, avec l'existant, bien sûr, le diagramme 1, alors après la transition vers le diagramme 1 et le retour au diagramme 2, la minimisation - minimisation du "panneau" vers le coin supérieur gauche ne se produit pas :).

Qui peut expliquer quel est le problème et comment y faire face ?

J'ai supprimé ma réponse précédente

La fenêtre s'effondre parce qu'elle ne tient pas sur le graphique.
Si vous quittez le mode "graphique vers la fenêtre entière du terminal", vous verrez la taille réelle des graphiques.

Afin d'éviter que la fenêtre du graphique ne s'effondre sur le graphique, vous devez augmenter la taille des graphiques.
Après cela, vous pouvez étendre le graphique à l'ensemble du terminal et essayer de passer de l'un à l'autre.

 
Igor Makanu:

Voici un exemple d'utilisation de la classe CAppDialog de la bibliothèque standard.

Si vous utilisez cette classe, la méthode Minimize() est toujours appelée lors du changement de graphique.

Je n'ai pas voulu le comprendre, j'ai juste écrit mon propre OnClickButtonMinMax(), c'était plutôt désordonné, mais ça a fonctionné sans problème.

il y a un autre bug dans la classe CAppDialog, après Minimize() et Maximize() la propriété OBJPROP_BACK de la classe CCheckBox est modifiée, et les cases à cocher deviennent avec une bordure "carrée", j'ai fixé ObjectSet(TS1.Name()+"Label",OBJPROP_BACK,true) dans ce code rapidement ; ...

Vous avez raison.

J'ai étudié le code présenté et j'ai modifié ma réponse.

Le problème est que dans l'application MDI, seule une fenêtre active est maximisée, tandis que les autres fenêtres se trouvent au-delà de la taille maximale et ont une taille "normale".

Lors du changement d'onglet, la nouvelle fenêtre active est étendue et la fenêtre précédemment active est réduite à sa taille normale.

L'EA capte le changement de taille du graphique, détecte que la barre ne tient pas et réduit la fenêtre.

Nous allons examiner et éventuellement modifier ce comportement dans SB.