Erreurs, bugs, questions - page 2931

 
fxsaber:

C'est le genre de fonctionnalité qui, même si vous la connaissiez, vous oblige à faire remonter toute la couche dans votre tête.

Ici, je faisais une détermination de présence auto-déclarée. Ça semblait fonctionner quand on changeait de TF.

Je ne suis pas vraiment rentré dedans, mais à en juger par ces lignes :

    const int Total = ::IndicatorParameters(handle, Type, Params);
    ::IndicatorRelease(handle);

    uchar Bytes[];

    for (int i = 1; i < Total; i++)
    {
      ::ArrayCopy(Bytes, _R(Params[i].double_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].integer_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].string_value).Bytes, ::ArraySize(Bytes));
    }

Le nom de l'indicateur (dans le 0e paramètre) n'est pas utilisé pour créer la signature, ce qui est assez étrange.

 
fxsaber:

Sur 10, on constate que la consommation de mémoire du terminal est élevée. Sur Windows Server, c'est beaucoup moins.

Apparemment, le calcul de la consommation de mémoire dépend du système d'exploitation.

Au contraire, la réservation de la mémoire sur les axes des serveurs est plus optimale.
 
Stanislav Korotky:

Je ne suis pas vraiment rentré dedans, mais à en juger par ces lignes :

le nom de l'indicateur (dans le paramètre 0) n'est pas utilisé lors de la création de la signature, ce qui est assez étrange.

return("::" + (string)::ChartID() + (string)INIT_SYNC::crc64(Bytes) + ::MQLInfoString(MQL_PROGRAM_NAME));
 
fxsaber:

Oui, je l'ai rencontré. Validate lance la première passe, les suivantes ne le font pas. Le bouton de démarrage ne démarre pas.

Débogué - il fonctionne. J'ai fait le débogage dans la version, tout est censé être parfait, mais ça ne fonctionne pas.


Maintenant je lance spécialement la version debug. Il appuie sur le bouton Start sans aucun problème.

Je n'ai pas pu trouver la raison de ce bug.

J'ai vu cette réponse récemment.

Si j'ai bien compris, ce sont mes agents locaux qui ne démarrent pas, pourquoi ne pas avoir trouvé la solution. Il semble mieux démarrer dans les dernières versions du terminal.

 
fxsaber:

Sur 10, on constate que la consommation de mémoire du terminal est élevée. Sur Windows Server, c'est beaucoup moins.

Apparemment, le calcul de la consommation de mémoire dépend du système d'exploitation.

J'ai l'impression que le serveur n'est pas tout à fait correct sur Windows Server.

Ou, plus précisément, les paramètres graphiques sont constamment réinitialisés et cela dépend du manque de mémoire. Dans le même temps, tout semble être normal dans le répartiteur. Soit le vpc est limité, soit le mt5 est plus vorace.

 
Print(PERIOD_H4);

donne un résultat de 16388. Comment puis-je faire la procédure inverse : substituer la valeur 16388 et obtenir une chaîne avec le nom de périodePERIOD_H4? Existe-t-il une fonction intégrée ou dois-je écrire mon propre convertisseur ? S'il n'existe pas de fonction intégrée, à quoi ressemblerait une fonction personnalisée ? Serait-il nécessaire d'écrire quelque chose comme une correspondance clé-valeur ?

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

donne un résultat de 16388. Comment puis-je faire la procédure inverse : substituer la valeur 16388 et obtenir une chaîne avec le nom de périodePERIOD_H4? Existe-t-il une fonction intégrée ou dois-je écrire mon propre convertisseur ? S'il n'existe pas de fonction intégrée, à quoi ressemblerait une fonction personnalisée ? Serait-il nécessaire d'écrire quelque chose comme une correspondance clé-valeur ?

Print(EnumToString((ENUM_TIMEFRAMES)16388));
 
fxsaber
Print(EnumToString((ENUM_TIMEFRAMES)16388));

Il s'avère que oui. C'est un soulagement. Merci.

 

J'essaie de permettre à l'utilisateur de sélectionner les deux horizons temporels et leur nombre dans le menu de la fenêtre de configuration de l'indicateur :

enum PERIOD
  {
   NO_PERIOD=0,      // NOT USED
   P1=PERIOD_H1,     // H1 
   P2=PERIOD_H2,     // H2 
   P3=PERIOD_H4,     // H4 
  };

input PERIOD TIMEFRAME_1=P1;
input PERIOD TIMEFRAME_2=P2;
input PERIOD TIMEFRAME_3=P3;

ENUM_TIMEFRAMES PArray[3]={P1,P2,P3};

et je veux que les périodes sélectionnées aillent directement dans PArray. Mais d'après l'exemple ci-dessus, il s'avère que j'affecte au tableau les valeurs prédéfinies dans le programme et non les valeurs entrées par un utilisateur. En outre, le compilateur génère des avertissements :

implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      28
   'ENUM_TIMEFRAMES::PERIOD_H1' will be used instead of 'PERIOD::P1'    test.mq5        23      28
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      31
   'ENUM_TIMEFRAMES::PERIOD_H2' will be used instead of 'PERIOD::P2'    test.mq5        23      31
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      34
   'ENUM_TIMEFRAMES::PERIOD_H4' will be used instead of 'PERIOD::P3'    test.mq5        23      34

Lorsque j'essaie de remplacer la dernière ligne par :

ENUM_TIMEFRAMES PArray[3]={TIMEFRAME_1,TIMEFRAME_2,TIMEFRAME_3};

le compilateur génère carrément une erreur :

'TIMEFRAME_1' - constant expression required    test.mq5        23      28
'TIMEFRAME_2' - constant expression required    test.mq5        23      40
'TIMEFRAME_3' - constant expression required    test.mq5        23      52

De plus, NO_PERIOD=0 signifiePERIOD_CURRENT, et je n'ai pas besoin de cela, j'ai besoin de quelque chose comme false ou EMPTY_VALUE, mais ils ne correspondent pas du tout.

Comment le réparer ?

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

Erreur dans la description :

Erreur

Ce champ est appelé : time_type

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