Erreurs, bugs, questions - page 1882

 
Vladimir Karputov:


Avez-vous appuyé sur F11 par hasard ?

Plein écran

Activez/désactivez le mode plein écran. L'activation de cette option désactive les barres d'outils, la barre d'état et ferme toutes les fenêtres de service. La barre de titre de MetaEditor, le menu principal, la fenêtre d'édition du code et les onglets de fichiers restent à l'écran.

Merci beaucoup ! Je suis malade de cette situation depuis une quinzaine de jours. Oui, j'ai dû appuyer accidentellement sur f1.
 
fxsaber:

Vous devez obtenir un historique des barres/tick pour plusieurs milliers d'unités récentes à la fois pour tous les symboles dans Market Watch (plusieurs centaines). Et le mettre à jour en temps réel.

L'architecture de MT5 est-elle optimisée pour de tels screencasts ? Le nouveau type de programme sera-t-il capable de résoudre de telles tâches sans béquilles ?

De quoi ai-je besoin pour lever tous les caches de l'état froid et les rendre réels ?

Et comment faire pour qu'un testeur reste en vie lorsqu'il exécute un screener ?


Si vous voulez obtenir un screener comme Finwiz, avec des indicateurs techniques, ils se plaignent aussi que chaque poignée mange beaucoup de mémoire, que MC promet de se battre avec elle. Ainsi, s'il est destiné à être utilisé avec une certaine périodicité de révision du marché, il a besoin de beaucoup de mémoire, et pour la première exécution, de beaucoup de temps.
 
kaus_bonus:

Je ne sais pas pourquoi vous avez besoin d'un screener dans le testeur.
Il s'agit d'un multivolume à la fois pour une centaine de symboles, où chaque OnTimer analyse l'historique des tics de tous les symboles.
 
fxsaber:
Il s'agit d'une colonne multiple à la fois par une centaine de symboles, où chaque OnTimer analyse l'historique des tics de tous les symboles.


moyen normal de se suicider))

lors de l'exécution dans le testeur, toutes les données de tick sont re-préparées ?! 1 mois/titre est environ 100 MB. si l'aperçu du marché entier, alors...le disque doit être en caoutchouc, mais combien de temps cela prend-il ?

Si vous vous souvenez que le cache de l'agent de test est effacé après 5 minutes d'inactivité de l'agent, imaginez un peu : vous avez préparé des données pendant une heure ou deux, vous êtes parti pendant 5 minutes et c'est tout, vous devez recommencer.

 
kaus_bonus:

moyen normal de se suicider))

D'où les questions. Si je comprends bien, le testeur se débrouille bien dans l'infrastructure S#. Je peux me tromper.
 

Il semble que je sois habitué à MT5, car je ne me souviens pas du tout de la journalisation de l'exécution d'OrderSend dans MT4.

Depuis quelle version de MT4 cette manipulation non autorisée du journal existe-t-elle ? Dans MT5, seules l'impression et les actions spéciales similaires de l'utilisateur (+erreurs d'exécution et bouton d'auto-trading) peuvent y effectuer des enregistrements. Ou est-ce que c'était toujours comme ça dans MT4 ?

 
fxsaber:

Vous devez obtenir un historique des barres/tick pour plusieurs milliers d'unités récentes à la fois pour tous les symboles dans Market Watch (plusieurs centaines). Et le mettre à jour en temps réel.

L'architecture de MT5 est-elle optimisée pour de tels screencasts ? Le nouveau type de programme sera-t-il capable de résoudre de telles tâches sans béquilles ?

De quoi ai-je besoin pour lever tous les caches de l'état froid et les rendre réels ?

Réchauffer les caches
#define _CS(A) ((!IsStopped()) && (A))
#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"

void OnStart()
{
  ulong FullCycle = 0;
  MqlTick Ticks[];
  
  while (_CS(true))
  {
    const ulong StartTime = GetMicrosecondCount();
    
    for (int i = SymbolsTotal(true) - 1; _CS(i >= 0); i--)
      Comment(TOSTRING(SymbolsTotal(true)) + TOSTRING(SymbolName(i, true)) +
              TOSTRING(i) + TOSTRING(CopyTicks(SymbolName(i, true), Ticks)) +
              TOSTRING(MQLInfoInteger(MQL_MEMORY_USED)) + TOSTRING(MQLInfoInteger(MQL_MEMORY_LIMIT)) +
              TOSTRING(FullCycle));
              
    FullCycle = GetMicrosecondCount() - StartTime;              
  }
}

Nous pouvons clairement voir dans l'exécution du script que CopyTicks n'est pas asynchrone. MQL_MEMORY_USED est mensonger.

Et surtout, quelque chose fait trébucher les caches (Metaquotes-Demo).

Veuillez fonctionner avec au moins une centaine de symboles dans Market Watch.

De plus, le problème des caches uniquement sur certains caractères est perceptible. Les autres sont bien.

Il semble être coincé dans CopyTicks sur ces caractères.

 
Konstantin:

1. Quand y aura-t-il une description du syndicat dans la documentation ?

2) Peut-il remplacer les structures simples?

3. la conversion du type d'union sera-t-elle prise en charge comme décrit pour les structures dans la documentation ?

1. Ajout d'une union

2. Pas vraiment - il est possible d'obtenir une représentation différente des données.

3. non

 

MT5 1598

void OnStart()
{
  string Array[];
  
  ArrayInitialize(Array, "");
}

Journal du compilateur

'ArrayInitialize' - no one of the overloads can be applied to the function call Test2.mq5       5       3
could be one of 8 function(s)   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
   built-in 'ArrayInitialize'   Test2.mq5       5       3
1 error(s), 0 warning(s)                2       1

Les signatures des fonctions seront-elles visibles dans le journal ?

 

Test répété pour la vitesse de levée du cache des tableaux CopyXXX par les fonctions de la dernière version 1596 par rapport à la discussion précédente : https://www.mql5.com/ru/forum/1111/page1871#comment_4867939.

Description de l'état
MetaTrader 4 build 1065
MetaTrader 5 x64 build 1580
construire 1596
Matériel et système d'exploitation
Windows 10 Pro x64, Intel Xeon E5-2690 v3 @ 2.60GHz, RAM : 32GB, Disque SSD
Serveur de commerce
MetaQuotes-Démo
MetaQuotes-Démo
Limiter les barres sur les graphiques dans les paramètres
10 000
10 000
Limiter les barres dans l'historique dans les paramètres 10 000 000
Aucune limite
Nombre réel de barres sur EURUSD, M1
3,382 millions
6,538 millions
Symbole et période vérifiés
EURUSD, M1
Graphiques ouverts
GBPUSD, M1 seulement, le script est aussi lancé dessus
Les résultats sont froids, après le démarrage du terminal
#0 pass, 1000 records in 680 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc
#0 pass, 1000 records in 113497 msc
#1 pass, 1000 records in 3 msc
#2 pass, 1000 records in 3 msc
#0 pass, 1000 records in 18288 msc
#1 pass, 1000 records in 7 msc
#2 pass, 1000 records in 2 msc
Les résultats sont chauds, le deuxième passage se fait immédiatement après le premier.
#0 pass, 1000 records in 13 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc
#0 pass, 1000 records in 14 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc
#0 pass, 1000 records in 13 msc
#1 pass, 1000 records in 2 msc
#2 pass, 1000 records in 2 msc

Les scripts de test sont joints dans le commentaire de la source.

Le temps de levée du disque graphique (6,5 millions de barres sur le disque, 10 000 barres levées et 1 000 dernières barres demandées, démarrage à froid) a été réduit de 113 à 18 millisecondes. Les demandes suivantes ont déjà été exécutées en 2 microsecondes.