Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1118

 
Artyom Trishkin:

Il n'y a pas besoin de deviner. Vous devez réfléchir et comprendre ce qui est fait et dans quel but. Quand quelque chose doit être écrit et quand ça n'a pas besoin de l'être.

On pense que l'impression doit contenir une chaîne et que toute valeur numérique doit être convertie en chaîne.
Mais cet exemple a montré que le compilateur est de plus en plus lent. Et comment ne pas deviner quand le compilateur saute et quand il ne le fait pas.

 
Roman:

Il semblerait que l'impression doive être convertie en chaîne, donc toute valeur numérique doit être convertie en chaîne.
Mais cet exemple a montré que le compilateur est de plus en plus lent. Comment ne pas deviner quand le compilateur saute et quand il ne le fait pas.

Encore une fois - le code ici - qu'est-ce qui n'est pas clair ?

ZS. Si c'est à propos de ça :

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

... Je ne l'ai pas vérifié - je l'ai juste retapé dans le post.

Effectuer une conversion fonctionnelle en chaîne de caractères :

Print(string((uint)PeriodSeconds(PERIOD_MN1)*1000));
 

Les amis !

Je suis confronté au problème de la connexion d'une DLL à MQL. Je décris mon problème :

1. Au début, j'ai essayé d'écrire une bibliothèque .dll en C#. J'ai constaté que MQL4 ne "mange" pas de telles bibliothèques, puisque toutes les méthodes à l'intérieur de la dll sont fermées, si elles sont écrites en C#. J'ai commencé à chercher activement une solution au problème. J'ai trouvé plusieurs variantes sur Internet, comme la connexion de la bibliothèque "DLL Export", téléchargée depuis NuGet. J'ai essayé différentes manières, ça n'a pas marché. Je ne veux vraiment pas avoir une solution "fragile" à ce problème, par le principe "ça marche aujourd'hui et pas demain". J'ai essayé de cette façon, et il y a en fait beaucoup de comment ça fonctionne autrement :

using System.Runtime.InteropServices;
using RGiesecke.DllExport;

[DllExport("Good", CallingConvention.Cdecl)] // + заменял на просто [DllExport] - не помогает
public static string Good() {

   return "GHBBBGGDDDD !!!!! РУССКИЙ! :) " + 5.ToString();
}


2. Je me suis rendu compte que je devrais probablement écrire une bibliothèque C++ stable et fonctionnelle. Je l'ai branché dès la première fois, les requêtes de test sont passées sans problème. Mais lorsque j'ai commencé à essayer de retourner un message texte (à MQL) avec une méthode (de DLL), j'ai rencontré un nouveau problème - j'ai obtenu la réponse"?????‡?-" dans MQL. J'ai essayé de décoder le message, mais ça n'a pas marché ! J'ai essayé de retourner la valeur via un paramètre de fonction - j'ai obtenu "?". J'ai fait beaucoup de recherches et je n'ai toujours pas trouvé de solution. C'est la variante que j'ai retenue, mais elle renvoie des points d'interrogation :

extern "C" __declspec(dllexport) char* __stdcall ToString(char* &str)
{
        str = " - 889 - dsa - просто!";
        return "--- Привет! ---";
}


Je reçois une réponse sous la forme de :

Le décodage n'aide pas...


Ce qu'il faut essentiellement :

1) existe-t-il une véritable solution à ce problème via C# ? J'ai besoin d'une belle solution stable ! Les demi-mesures, même si elles fonctionnent aujourd'hui, mais risquent de ne plus fonctionner avec une nouvelle construction, ne sont pas une option.

2) S'il n'y a pas de solution C#, passez par le C++. Comment envoyer correctement des messages dans les deux sens sans perdre en qualité ? (MQL - DLL - MQL). J'ai besoin de la variante qui fonctionne également pour MT4 et MT5.

 
Artyom Trishkin:

Encore une fois - code ici - qu'est-ce qui n'est pas clair ?

Il n'est pas clair pourquoi les constantes de H1 et plus sont renvoyées qui ne correspondent pas à la période comme avant H1.

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H1=16385
2020.04.10 03:47:03.627 VP (EPM20,H4)   PERIOD_H4=16388

La même chose est renvoyée par la variable _Period.

 
Roman:

Il n'est pas clair pourquoi les constantes de H1 et plus sont retournées qui ne correspondent pas à la période comme avant H1

La même chose est renvoyée par la variable _Period.

 
Artyom Trishkin:

Artyom ne panique pas ;))
Pourquoi à M30 exactement les valeurs de TF sont affichées
1
5
30

Et sur H1, il commence par 16385
Eh bien, il n'est pas logique de renvoyer la valeur à minutes d'abord, puis à l'enfer.
Et cela ne correspond pas à la description de l'aide pour _Period en tant que valeur de retour de l'horizon temporel.

 
Roman:

Artyom ne panique pas ;))
Pourquoi à M30 exactement les valeurs de TF sont affichées
1
5
30

Et sur H1, il commence par 16385
Il n'est pas logique de renvoyer d'abord la valeur à minutes et ensuite à l'enfer.
Et cela ne correspond pas à la description de l'aide pour _Period en tant que valeur de retour de l'horizon temporel.

Valeur de la fenêtre temporelle. Pas le nombre de minutes. Pas le nombre de secondes, pas le nombre d'oies chez Baba Nyura, mais la valeur du délai.

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

La valeur de l'horizon temporel. Pas le nombre de minutes. Pas le nombre de secondes, pas le nombre d'oies chez Baba Nyura, mais la valeur du délai.

C'est de cela qu'il s'agit, que les constantes doivent être égales aux valeurs de l'horizon temporel !
Et porter le sens logique et mathématique de la correspondance.
Parce que ces valeurs sont utilisées dans les calculs.

M1 = 1
M5 = 5
M30 = 30
H1 = 60
H4 = 240
D1
= 1440

Sinon, la signification des valeurs retournées est perdue.
Il s'agit donc d'un bug à mon avis.

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 
Artyom Trishkin:

Je suis surpris que vous ayez la patience de répéter tout cela pendant si longtemps et le matin... Bien que vous soyez déjà le matin après une autre nuit blanche.))

Au moins, mettez-le en quarantaine pendant 24 heures pour qu'il lise attentivement la documentation. C'est une déception... C'est la première fois qu'un as de la variété du langage C dit une telle absurdité. Et c'est la première fois que tout cela est expliqué...

Imaginez que cela ait été résolu dans le Service Desk. Ils n'ont probablement pas ce genre d'équilibre là-bas, c'est pourquoi ils l'ont fermé.

Raison: