Que faut-il ajouter pour une prise en charge supplémentaire des calculs mathématiques universels dans MQL5 et MQL5 Cloud Network ?

 

Tout le monde ne sait pas que le testeur MetaTrader 5 permet de tester non seulement les stratégies de trading mais aussi de résoudre toute une classe de problèmes universels. À cette fin, il existe un mode spécial "Calculs mathématiques", qui désactive la livraison des données de l'environnement de marché, ce qui permet de réduire considérablement la quantité de données transférées.

Actuellement, nous avons mis en œuvre un certain nombre de fonctions importantes pour la construction d'un réseau de calcul universel :

  • Mode de fonctionnement "Calcul mathématique" pour désactiver l'environnement du marché.
  • Transmission des données initiales par le biais de la pièce jointe #property tester_file "mon_file.dat", qui nous permet de traiter des données initiales de n'importe quelle taille et de renvoyer les résultats.
  • Transmission des données sources sous forme de pièces jointes #ressources.
  • Mode serveur de calcul sur le terminal et transfert des tableaux de données des agents sous forme de trames. Les agents peuvent renvoyer toutes les données au terminal via FrameAdd, tandis que la partie serveur du même Expert Advisor est lancée du côté du terminal dans une fenêtre séparée pour recevoir les résultats via les points d'entrée OnTesterPass avec extraction des données via les fonctions FrameXXX. Les données obtenues peuvent être enregistrées sur le côté du terminal, visualisées dans un graphique, etc. Vous pouvez en apprendre davantage à ce sujet dans la rubrique"Contrôle en temps réel des processus d'optimisation et transfert de données massives des agents dans MetaTrader 5".
  • Fonctionnement des agents locaux et distants (sans MQL5 Cloud Network) avec un serveur séparé utilisant les tuyaux nommés.
  • Location d'un vaste réseau d'agents pour accélérer les calculs.
  • Créez votre propre ferme de calcul dans votre réseau sur des agents distants.

Bien sûr, cela s'accompagne de : la sécurité de MQL5, sa rapidité, le recenseur génétique, etc.

D'où la question suivante : quelles autres caractéristiques devraient être incluses pour améliorer les capacités du réseau de calcul ?

 
Renat:

D'où la question suivante : quelles autres fonctionnalités devraient être activées pour améliorer les capacités du réseau de calcul ?

Permettre l'utilisation d'OpenCL en mode "calcul mathématique" dans le nuage.
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 
TheXpert:
Permettre l'utilisation d'OpenCL en mode "calcul mathématique" dans le nuage.

Cela a été discuté à de nombreuses reprises - c'est architecturalement impossible en raison de la façon dont les pilotes Windows fonctionnent. Tant que les fonctions de calcul sont une partie protégée des pilotes vidéo, il n'y a pas de solution. À l'heure actuelle, même si vous vous connectez à Windows via Remote Desktop, vous constaterez qu'il n'y a pas d'accès à OpenCL.

Dès que les fabricants de cartes vidéo déplaceront les fonctions de calcul vers une interface séparée, indépendante des pilotes vidéo, il y aura du bonheur. Pour l'instant, seul Nvidia Tesla va dans cette direction.

 
Dans la fonctionOnTesterInit()

Ajoutez le transfert de données brutes à l'agent, non pas comme une ressource attachée, mais comme un ensemble de données générées au cours de l'optimisation.

Environ :

void OnTesterInit()
  {
   // здесь формируем массив данных (например ArrayPass[])
   // и передаем сформированный массив агенту для расчетов
   return(ArrayPass);
  }

.

...

S'il vous plaît.

 
Et qui doit transmettre ces données et comment exactement ?

Ce sont les détails techniques de qui, quoi et comment qui sont intéressants.
 
Renat:
1. qui et comment exactement doit-on transférer ces données ?

2. ce sont les détails techniques (qui, quoi et comment) qui nous intéressent.

1. La transmission devrait naturellement être faite par l'utilisateur, comme je l'ai suggéré plus haut -"Environ comme ceci :", vous savez mieux que qu iconque.

2. Qui est qui et comment, je ne peux pas le décrire).

A quoi servent les agents ? - Pour résoudre les problèmes.

Quelles sont les tâches que nous résolvons ? - Je ne sais pas, l'essentiel est qu'ils les résolvent.

Nous avons besoin d'entrées et de sorties pour résoudre ces tâches.

Cela semble clair avec la sortie, mais ce n'est pas clair avec l'entrée.

J'ai peut-être manqué quelque chose ? Comment transmettre les données d'entrée (calculées sur la base des données de sortie précédentes) à l'agent ?

 
her.human:

1. La transmission devrait naturellement être faite par l'utilisateur, comme je l'ai suggéré plus haut -"Environ comme ceci :", vous savez mieux que qu iconque.

2. Qui est qui et comment, je ne peux pas le décrire).

Le fait est que nous avons besoin de propositions exactement élaborées sur le plan technique, en deux étapes au moins. "Je ne sais pas quoi ni comment" n'est pas suffisant.

 
her.human:

Comment transmettre les données d'entrée (calculées à partir des données de sortie précédentes) à l'agent ?

Cela a déjà été demandé, contrôler la progression de l'optimisation serait parfois très utile.

Mais de nombreuses questions se posent en y regardant de plus près (à moins que l'optimisation ne soit effectuée sur un seul agent local).

 
Renat:

Le fait est que nous avons besoin de propositions techniquement solides, en deux étapes au moins. "Je ne sais pas quoi ni comment" n'est pas suffisant.

Vous devriez le dire - "les propositions sont acceptées sous la forme de termes de référence", sinon cela est perçu comme "nous écouterons les idées".
 
Komposter, pas aussi catégorique, mais tout de même un peu plus technique.

Pour notre part, nous pensons à une communication indépendante entre agents sans terminal. Par exemple, l'un des agents pourrait générer les données initiales et les envoyer aux autres par fordcast.
 
Renat:
Pour notre part, nous réfléchissons à une communication indépendante entre les agents sans l'intervention du terminal. Par exemple, l'un des agents peut générer des données initiales et les envoyer aux autres par fordcast.

C'est un peu différent. Je voulais contrôler le cours de l'optimisation.

C'est-à-dire générer des jeux de paramètres au fur et à mesure de l'optimisation et les envoyer aux agents pour exécution.

Naturellement, il y aura beaucoup de questions. Je ne suis pas prêt à y répondre.