AutoGraf Série 4 - Fonctionnalités MQL. - page 34

 

Si vous incluez le fichier via include, vous pouvez déclarer des variables externes et n'avez pas besoin de passer des paramètres. Pour éviter toute confusion avec les noms des variables et des fonctions, il est nécessaire d'utiliser des préfixes différents dans les noms pour chaque stratégie.

Désolé de m'immiscer, mais une si longue agonie pour une question aussi simple ne laisse pas indifférent :)

 
Integer >> :

Si vous incluez le fichier via include, vous pouvez déclarer des variables externes et n'avez pas besoin de passer des paramètres. Pour éviter toute confusion avec les noms des variables et des fonctions, il est nécessaire d'utiliser des préfixes différents dans les noms pour chaque stratégie.

Désolé, mais de si longues agonies sur une question aussi simple ne vous laissent pas indifférent :)

>> Merci. >> Nous allons faire un essai.

 
Integer писал(а) >>

Si vous incluez le fichier via include, vous pouvez déclarer des variables externes et n'avez pas besoin de passer des paramètres. Pour éviter toute confusion avec les noms des variables et des fonctions, il est nécessaire d'utiliser des préfixes différents dans les noms pour chaque stratégie.

Désolé de vous interrompre, mais de si longues agonies pour une question aussi simple ne laissent pas indifférent :)

Nous parlons de l'importation de fonctions dans une EA compilée (ex4).
 
SK. писал(а) >>
Nous parlons de l'importation de fonctions dans une EA compilée (ex4).

Je suis désolé, ce n'est pas ce que je voulais dire, comme d'habitude... Et l'importation à partir d' une bibliothèque compilée ?

-

Si le module principal est compilé, alors ce n'est pas un problème d'utiliser inculcator avec stratégie, tout sera compilé. Si le module principal est open source, mais que la stratégie est compilée, alors vous pouvez faire un adaptateur sous forme d'inculdnik open source.

 

Messieurs !

J'envisage le schéma de chaîne de connexion suivant :



La fonction AG_AT est un commutateur permettant de sélectionner les stratégies à joindre.

 

Mesdames et messieurs !

Veuillez répondre à une question.

Si la fonction AT n'est pas un commutateur, mais contient du code de stratégie, alors (bien que je comprenne que cela ne fait aucune différence), comment l'application distingue-t-elle que la fonction AT lui donne une instruction (par exemple, en se référant au terminal), plutôt que de faire des transactions elle-même ?

De la description à l'application :

Исполнение функции АТ связано с двумя основными возможностями.

La première est que la fonction AT peut négocier seule - générer des ordres de négociation et les envoyer au serveur. En même temps, la fonction ne peut pas traiter les données reçues de l'application (ou traiter une partie de ces données), mais elle peut effectuer ses propres calculs en utilisant toutes les capacités de MQL4, y compris l'appel au terminal pour le traitement des ordres, l'obtention des cotations actuelles, le calcul des critères de négociation, la gestion des objets graphiques, etc.

La deuxième fonctionnalité est directement liée à l'application AutoGraf 4. Cette fonction peut demander à l'application AutoGraf 4 d'installer tous les outils nécessaires avec des paramètres prédéfinis sur des ordres spécifiques ou un graphique de prix, de modifier les paramètres généraux de l'application, de supprimer des outils, d'afficher des messages à l'utilisateur, etc. (paramètres de sortie). (paramètres de sortie).

Si la fonction AT génère un ordre de transaction et qu'il n'y a aucune ligne de code à prendre en compte dans l'application, elle se négociera elle-même. L'application, dans ce cas, se contente de diffuser la commande au terminal sans aucune comptabilisation ni traitement.

Si c'est le cas, l'ordre passe par l'application dans les paramètres de la fonction AT transmis par le lien.

Est-ce que je comprends bien ?

 
Integer писал(а) >>

Je suis désolé, ce n'est pas ce que je voulais dire, comme d'habitude... Et l'importation à partir d' une bibliothèque compilée ?

-

Si le module principal est compilé, alors ce n'est pas un problème d'utiliser inculcator avec stratégie, tout sera compilé. Si le module principal est open source, mais que la stratégie est compilée, alors vous pouvez faire un adaptateur sous la forme d'un inculcateur open source.

Rien à redire, la discussion est pertinente.

--

Un peu de terminologie. Il existe deux concepts miroirs : l'exportation et l'importation. Ils sont utilisés par rapport à notre propre territoire.

Les exportations se font à l'extérieur de nos frontières. Par exemple, les exportations de gaz de la Russie vers l'Europe.

L'importation se fait de l'étranger vers nos frontières. Par exemple, l'importation de sable en Sibérie depuis l'Afrique.

Dans ce cas, nous parlons d'importations. Notre territoire ici est l'expert AG_exp.ex4. C'est la base de l'application AutoGraf 4 qui est fournie à l'utilisateur sous forme de fichier compilé. Le code source de l'Expert Advisor n'est pas fourni (bien sûr, puisque l'application est distribuée commercialement, bien qu'elle soit gratuite) et, par conséquent, aucun module ne peut être ajouté à l'Expert Advisor via inclide (par l'utilisateur-programmeur).

--

La tâche consistait à permettre à l'utilisateur de joindre à l'application AutoGraf 4 ses propres algorithmes de trading écrits en MQL4 et exécutés sous forme de fichiers de stratégies .ex4. Pour résoudre ce problème, l'Expert Advisor AG_exp.ex4 inclut un code qui importe dans l'Expert Advisor la fonction de trading automatique AG_AT qui est disponible à la fois en fichiers .ex4 et mq4. Par la suite, l'utilisateur peut décider lui-même de la manière d'organiser les codes. L'une des deux variantes est la plus pratique :

1. Pour écrire votre propre code directement dans la fonction AG_AT() et compiler le fichier AG_AT.mq4 avec le même nom, obtenez AG_AT.eq4.

Пример: http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm, примеры 1-15: http://autograf.dp.ua/Pages/2/26/267/2679/2679_1.htm

2. Écrivez votre propre code pour la nouvelle fonction dans un fichier de stratégie distinct, par exemple, Ma_Stratégie() dans le fichier Ma_Stratégie.mq4. Inscrivez dans AG_AT() l'importation de la fonction Ma_Stratégie() du fichier Ma_Stratégie.eq4 (version moderne). Примеры http://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm, http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm

.

Dans aucune de ces variantes, il n'est possible d'écrire des variables externes afin qu'elles soient disponibles pour l'utilisateur. La seule possibilité de spécifier des variables externes est de les écrire dans AG_exp.ex4 pendant la phase de conception, ce qui est fait. Les valeurs des variables sont transmises en transit par AG_AT() à l'utilisateur Ma_Stratégie() dans le tableau des instruments. C'est la technologie adoptée dans la dernière version d'AutoGraf 4 et elle fonctionne bien.

--

Que signifie tout cela pour l'utilisateur ? Cela signifie que tout utilisateur peut écrire sa propre stratégie et l'exécuter dans un environnement AutoGraf 4. En même temps, sa propre stratégie fonctionnera et toutes les fonctionnalités d'AutoGraf 4 seront à la disposition de l'utilisateur. En particulier, tous les outils de l'AutoGraf 4 ( !) tels que les pull-ups, les renversements, les sons, etc. peuvent être contrôlés à partir de la stratégie.

Pour les programmeurs professionnels, la technologie offre la possibilité de passer une variable de mot de passe personnalisable dans le fichier de stratégie. Cela signifie que les programmeurs peuvent écrire des stratégies pour AutoGraf 4 et les distribuer sur une base commerciale (par exemple uniquement pour un compte spécifique).

 
LeonidSB писал(а) >>

Messieurs !

J'envisage le schéma de chaîne de connexion suivant :

La fonction AG_AT est un commutateur permettant de sélectionner les stratégies à joindre.

Oui. Correct.

 
LeonidSB писал(а) >>

Mesdames et messieurs !

Veuillez répondre à une question.

Si la fonction AT n'est pas un commutateur, mais contient un code de stratégie, alors (bien que je comprenne que cela ne fait aucune différence), comment l'application distingue-t-elle que la fonction AT lui donne des instructions (par exemple, en se référant au terminal), plutôt que d'effectuer elle-même des transactions ?

La stratégie peut être transmise à l'application :

- les valeurs des paramètres réglables courants (SL, TP, Lots, etc.)

- Paramètres des instruments à installer ou à supprimer

La stratégie ne transmet pas les ordres d'ouverture et de fermeture à l'application (ceci est prévu dans AG 5 sur la base des capacités de MQL 5) et actuellement (dans AG 4) ceci n'est pas strictement requis. La stratégie peut et doit ouvrir/fermer des ordres en utilisant l'algorithme de l'utilisateur.

Si la fonction AT génère un ordre de transaction et qu'il n'y a pas de ligne de code à enregistrer dans l'application, la stratégie se négociera d'elle-même. L'application, dans ce cas, se contente de diffuser la commande au terminal sans aucune comptabilisation ni traitement.

Si c'est le cas, l'ordre passe par l'application dans les paramètres de la fonction AT transmis par le lien.

Est-ce que je comprends bien ?

Ce que vous appelez "une ligne de code à prendre en compte dans l'application" n'est pas très clair.

L'application comptabilise les commandes chaque fois qu'elle reçoit le contrôle en retour. À chaque itération d'un grand cycle, le tableau recalculé des ordres est transmis à AG_AT puis à la stratégie. Sur la base du nombre d'ordres, la stratégie peut calculer les actions de contrôle appropriées. L'application de la stratégie devrait être mise à jour plus fréquemment afin que la stratégie dispose toujours d'un tableau frais de comptabilisation des ordres.

Un ordre de transaction provenant de n'importe quelle partie du programme (application ou AG_AT ou une stratégie) va directement au terminal MT4 et directement au serveur. Après l'exécution de l'ordre sur le serveur, le contrôle retourne de la même manière au point d'envoi de l'ordre de transaction. Pendant que l'ordre est traité sur le serveur, tout est silencieux et attend la réponse - rien ne se passe (si je ne me trompe pas, dans MT5 cette technologie sera changée - nous n'attendrons pas, nous travaillerons :)

 
Merci !