Mon approche. Le noyau est le moteur. - page 90

 
fxsaber:

Cher fxsaber.

Je sais que toute donnée peut être échangée via des ressources.

Mais il faut d'abord les convertir en chaîne de caractères, puis, à l'aide de StringToChar(), les convertir en uint, et les enregistrer dans une ressource. Et le code pour cela est beaucoup plus simple.

MAIS, j'ai prouvé que cette méthode est plus lente que le transfert de la même chaîne, via la description d'objet.


Mes adversaires méprisent le type string et parlent d'utiliser une méthode mythique pour transférer toutes les données vers uint en une seule fois grâce à l'union.

En outre, les chaînes de caractères doivent également être converties en uint par le biais de l'union.


Et pourquoi les chaînes de caractères devraient être converties en uint via union alors qu'il existe StringToChar() ???

 
Maxim Kuznetsov:

En interne, il n'y a que des GlobalVariables et des fichiers pour l'échange de données entre les EA, les indicateurs et les scripts.

Les 4 points ci-dessus sont des "trucs" locaux à défaut de poisson. Ces quatre points utilisent des mécanismes qui ne sont pas conçus pour échanger des données arbitraires, et encore moins des tableaux de données.

п1. 100% conduit à un verrouillage temporaire du fil d'interface (oui, les objets y vivent et leurs "descriptions" aussi) et ne fonctionne pas dans l'optimiseur. Les descriptions d'objets servent à décrire les objets de manière lisible par l'homme,

p2. n2. ne fonctionne pas dans le testeur et l'optimiseur, et sert à notifier des événements

P3. p4. les ressources (même nommées) sont destinées à un stockage à long terme, et non à un échange rapide. Je ne peux rien dire sur la convivialité dans le testeur/optimiseur :-) J'utilise des ressources en lecture seule

il est inutile de parler de la vitesse des solutions courbes.

ps/ d'ailleurs vous pouvez utiliser des fichiers, plus précisément des pipes

Vous avez tout écrit correctement.

Mais les "hacks" sont notre tout.)

Dans le testeur, en mode optimisation, la connexion entre l'Expert Advisor et le moteur ne fonctionne pas. Il n'y a pas besoin de cela.


Pour un échange significatif de valeurs de paramètres lors d'événements, l'EA et le moteur doivent s'envoyer des données d'une taille maximale de 2000 caractères. Ce n'est pas grand-chose. Mais ce n'est pas tant que ça.


Le hack le plus utile est le numéro 1.

Типы оптимизации - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Типы оптимизации - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
В данном режиме происходит полный перебор всех возможных комбинаций значений входных переменных, выбранных для оптимизации на соответствующей вкладке. Быстрая (генетический алгоритм) В основу данного типа оптимизации заложен генетический алгоритм подбора наилучших значений входных параметров. Данный тип оптимизации значительно быстрее полного...
 
Реter Konow:

Mes adversaires dédaignent le type string et parlent d'utiliser la méthode mythique de transfert de toutes les données en une seule fois vers uint, via union.

En outre, les chaînes de caractères doivent également être converties en uint via union.

Lecode ci-dessus qui convertit plusieurs types à la fois (y compris non seulement les chaînes de caractères mais aussi un tableau de chaînes de caractères) en uint et inversement.

Mais je ne pense pas que ce soit utile dans cette discussion.


SZY Si vous voulez vraiment utiliser des chaînes de caractères.

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

Bibliothèques : HistoryTicks

fxsaber, 2018.12.04 09:11

// Пример передачи/обмена данных между программами через поле комментария чартов

#include <fxsaber\HistoryTicks\Data_String.mqh> // https://www.mql5.com/ru/code/20298

void OnStart()
{
  int ArrayIn[] = {0, 1, 2, 3, 4, 5};  
  ChartSetString(0, CHART_COMMENT, DATA_STRING::ToString(ArrayIn));    // Записали данные в комментарий чарта

  int ArrayOut[];    
  DATA_STRING::FromString(ChartGetString(0, CHART_COMMENT), ArrayOut); // Прочли данные из комментария чарта
  
  ArrayPrint(ArrayOut);
}
 
fxsaber:

Le code ci-dessus traduit plusieurs types à la fois (y compris non seulement les chaînes de caractères, mais aussi un tableau de chaînes de caractères) en uint et inversement.

Mais je ne pense pas que ce soit utile dans cette discussion.

Donc, vous pouvez traduire un tableau de chaînes de caractères en uint grâce à l'union ?

Et est-ce plus rapide que viaStringToChar() ?

Si vous le pouvez, donnez un petit exemple simple. Je n'arrive pas à déchiffrer votre code.

 
Реter Konow:

Vous pouvez donc convertir un tableau de chaînes de caractères en uint via l'union ?

Et est-il plus rapide queStringToChar() ?

Si possible, veuillez donner un petit exemple simple. Je n'arrive pas à déchiffrer votre code.

L'exemple était dans ce fil ici.

Pour le reproduire, vous devez vous lier à la bibliothèque référencée dans le code d'exemple.

Мой подход. Ядро - Движок.
Мой подход. Ядро - Движок.
  • 2018.12.19
  • www.mql5.com
В этой ветке, я хочу рассказать о своем подходе в программировании. Заранее предупреждаю, - здесь не будет обсуждений GUI...
 
fxsaber:

...

ZS Si vous voulez vraiment passer par les lignes

Quelle est la taille maximale des commentaires ?

 
Реter Konow:

Vous l'avez bien écrit.

Mais les "hacks" sont notre tout)).

Dans le testeur, en mode optimisation, le lien entre le conseiller expert et le moteur ne fonctionne pas. Vous n'en avez pas besoin.


Pour un échange significatif de valeurs de paramètres lors d'événements, l'EA et le moteur doivent s'envoyer mutuellement des données d'une taille maximale de 2000 caractères. Ce n'est pas trop. Mais ce n'est pas non plus un peu.


Le hack le plus pratique est le numéro 1.

Avec ce "hack le plus convivial", il est possible de marcher sur le "râteau des enfants", à savoir les modèles qui sont très appréciés des utilisateurs et utilisés lors du rechargement.
 
fxsaber:
...


ZS Si vous voulez vraiment passer par les lignes

Le commentaire du graphique a une taille limitée. Ou pas ? Je suis tombé dessus par hasard.

 

Une autre question sérieuse.

Je ne l'ai pas essayé moi-même, mais on peut douter de l'efficacité d'un échange rapide via les ressources.

Échange rapide, - 16 millisecondes d'aller-retour sur une base constante.

Le disque ne sera-t-il pas surchargé ?

 
Maxim Kuznetsov:
Avec ce "hack le plus pratique", vous pouvez marcher sur un "râteau enfantin", à savoir les modèles, très appréciés des utilisateurs et utilisés lors du rechargement.

Veuillez expliquer.

ZS. Les objets avec des noms spéciaux seront utilisés pour la communication. Afin d'éviter toute coïncidence avec les objets de l'utilisateur.