Questions d'un "mannequin - page 75

 
kirill-demo:
J'ai créé mon Expert Advisor dans l'Assistant. Je ne connais pas très bien mql. Pourriez-vous m'expliquer ce qu'il faut faire en prenant l'exemple des enveloppes ?

La classe CSignalEnvelopes ne dispose pas d'un tel modèle de marché.

Conclusion : Nous devons améliorer le cours (ou écrire notre propre cours).

 
Quelle est la différence entre l'appel de fonctions depuis une dll dans MT4 et MT5 ? J'ai compilé la dll, elle fonctionne bien dans MT5, mais dans MT4 elle me donne une erreur :

2011.10.06 23:00:34 Exécuteur Solaris EURUSDm,M1 : ne peut pas appeler la fonction 'InfoOfTrading' de la dll 'Solaris.dll' (erreur 127)

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
joo:
Quelle est la différence entre l'appel de fonctions depuis une dll dans MT4 et MT5 ? Je compile une dll, elle fonctionne bien dans MT5, mais dans MT4 elle génère une erreur :

2011.10.06 23:00:34 Exécutant Solaris EURUSDm,M1 : ne peut pas appeler la fonction 'InfoOfTrading' de la dll 'Solaris.dll' (erreur 127)

Donnez-moi une description du prototype de fonction, s'il vous plaît. Vous avez probablement utilisé le modèle _stdcall pour MT5.

MT5 dispose d'un mécanisme plus souple pour lier les noms de fonctions DLL - il prend automatiquement en charge à la fois _stdcall (plus avancé avec la décoration des noms) et _cdecl (ancienne méthode classique). MetaTrader 4 ne supporte que les appels _cdecl.

Avez-vous lu l'article"Comment écrire une DLL pour MQL5 et partager des données en 10 minutes ?" Il explique en détail comment appeler les fonctions DLL.

 
Renat:

Veuillez fournir une description du prototype de fonction, s'il vous plaît. Très probablement, pour MT5, vous avez utilisé la conception _stdcall.

MT5 dispose d'un mécanisme plus souple pour lier les noms de fonctions DLL - il prend automatiquement en charge à la fois _stdcall (plus avancé avec la décoration des noms) et _cdecl (ancienne méthode classique). MetaTrader 4 ne supporte que les appels _cdecl.

Lire l'article"Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes ?"Vous y trouverez une description détaillée des appels de fonctions DLL.

J'ai essayé de le déclarer comme ça :

_DLLAPI void _cdecl InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

Et donc :

_DLLAPI void InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

au lieu de l'ancien :

_DLLAPI void __stdcall InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

Mais maintenant une erreur différente :

2011.10.07 01:35:05 Exécuteur Solaris EURUSDm,M1 : appel de la fonction 'InfoOfTrading' depuis la dll 'Solaris.dll' erreur critique


J'ai lu l'article.


Dans les paramètres du projet, le mode d'appel est explicitement spécifié :


Et dans MT5, cela fonctionne toujours sans erreur.

 
tol64:
En général, les signaux sont décrits dans l'aide exactement de la manière dont vous en avez besoin. Vous pouvez le voir ici. L'image montre les paramètres de l'indicateur CCI. Par conséquent, il est fort probable que votre Conseiller Expert ne sera pas basé uniquement sur les signaux de l'indicateur Enveloppes. Il y a aussi l'ICC.

Bien, désolé pour ça. J'ai posté la mauvaise photo. Mais ça ne change rien à l'affaire. Voici une photo de l'EE sur les enveloppes uniquement.

Que dois-je faire ? Comment puis-je le réparer ?

 

A propos, dans l'exemple surs de la livraison MT4 standard, l'appel est effectué via __stdcall :

MT4_EXPFUNC double __stdcall GetDoubleValue(const double dpar)
  {
   printf("GetDoubleValue takes %.8lf\n",dpar);
   return(dpar);
  }

et cela fonctionne bien.

 
Que quelqu'un m'explique ! !!
 
joo:

A propos, dans l'exemple surs de la livraison standard MT4 l'appel via __stdcall :

et cela fonctionne bien.


Dans l'exemple MT4 :

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall semble être supporté. Je ne suis pas sûr qu'il soit correct de décrire le passage des paramètres par & pour les quatre.
Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Renat:

L'exemple MT4 :

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall s'avère être supporté. Je ne suis pas sûr qu'il soit correct de décrire le passage des paramètres via & pour les quatre.

Je suis complètement désappris en deux ans avec 4. :)

1. il s'avère qu'une variable passée par référence ne peut pas être écrite dans une dll. Vous devez utiliser un tableau pour cela.

2. et il est obligatoire d'utiliser le fichier *.def.

Voici en fait 2 différences de travail avec les dlls de 4 et 5 que j'ai découvertes, il y en a peut-être d'autres.

 
Les amis, désolé si ce genre de question est déjà ennuyeux, pouvez-vous me dire comment remplir correctement l'onglet paramètres>mail ? J'ai du courrier sur mail.ru, cela fonctionnera-t-il ? Je ne sais pas quelle est l'adresse du serveur qui s'y trouve ... si elle ne convient pas, où enregistrer un serveur approprié ? Je veux faire des notifications par courriel...