Erreurs, bugs, questions - page 363

 

Où est-ce que SymbolsTotal() et SymbolName() prennent l'information dans le testeur ? J'ai un décalage entre le i-ième symbole dans le terminal et le testeur.

Si dans le terminal le 3ème USDJPY alors dans le testeur le 3ème EURGBP.

Je fais juste une énumération des symboles MarketWatch et je les code dans Expert Advisor par numéros de série.

 

Bonjour !

J'ai une question sur la fonctionIndicatorSetString dans laquelle vous pouvez spécifier un nom court pour l'indicateur, en référence auquel cet indicateur peut être ultérieurement retiré du graphique.

Je pense que c'est une situation étrange.

Sur le PC du bureau, cette procédure se déroule bien, mais sur l'autre PC, celui de la maison, la valeur de son nom court est fixée automatiquement au début (c'est-à-dire sans tenir compte des paramètres d'entrée, que j'utilise pour former un nouveau nom), et le nouveau nom n'apparaît qu'après avoir détaché l'indicateur et l'avoir rechargé.

La première chose qui m'est venue à l'esprit était les différences entre les logiciels, mais après avoir comparé, je me suis rendu compte que tout est basique, identique :

- Codes experts et indicateurs ;

- version du logiciel (Build 425) ;

- Système d'exploitation (WinXP SP3);

- les mêmes paramètres (spécialement comparés).

En général, le contrôle est le suivant :

1. Plusieurs boutons sont affichés à l'écran, chacun d'entre eux a un nom court et un nom général d'un indicateur

2. Lorsque vous appuyez sur le bouton, l'indicateur qui lui correspond par son nom commun apparaît, et lorsque vous le relâchez, il est supprimé sur la base du nom court.

3. sur le PC du bureau, les indicateurs sont supprimés dès la première pression, alors que sur le PC du domicile, ils ne le sont qu'à partir de la deuxième pression.

Quelle pourrait être la raison de ce phénomène ?

Si on le schématise, en excluant les éléments habituels pour les experts et les indicateurs, ainsi que d'autres fonctionnalités qui ne sont pas directement liées à la question mentionnée, il se présente comme suit :

1. Dans indicateur Mon_Indicateur:

   input double  Offset  = 0;
   int OnInit()  
   {  
      string NewNameIndicator = OldNameIndicator + Offset;
      IndicatorSetString (INDICATOR_SHORTNAME, NewNameIndicator);
   }

2. En EA :

   void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
   {  
        String ShortNameIndicator1;
        //---При нажатии            
        if (sparam==My_Button1.Name()){
            if(My_Button1.State()==true){
                Int handle = iCustom (_Symbol,_Period, "My_Indicator1 ", "FirstParameter");
                ChartIndicatorAdd(0,0,handle);
                ShortNameIndicator1 = ChartIndicatorName(0,0,ChartIndicatorsTotal(0,0)-1);
                 Alert (“State()=true, IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
        if (sparam==My_Button1.Name()){
           if(My_Button1.State()==false){
                  Alert (“State()=false, IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete(0,0,ShortNameIndicator1);  
           }
        }
    }

En conséquence :

Sur le PC du bureau,IndicatorName est édité comme un nouveau nom dès la première passe, alors que sur le PC de la maison, il ne l'est qu'à partir de la deuxième passe.

Sur le PC du bureau, l'IndicatorName est supprimé après la première pression, tandis que sur le PC du domicile, il est supprimé après la deuxième pression.

En même temps, après le premier appui et relâchement sur le PC de base, le nom original de l'indicateur est affiché (Mon_Indicateur sans ajouter le paramètre d'entrée au nom), bien que le code du Conseiller Expert et de l'indicateur, je le répète, soit utilisé dans les deux cas de la même façon.

 

Je cite ici mon message à Servicedesk


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart()
{
}


La tentative de compilation conduit à l'erreur interne #108

après avoir téléchargé la dernière version du terminal et l'avoir réinstallé dans le même dossier, l'erreur s'est transformée en erreur interne #-3

La séquence d'actions
Je ne sais pas si cela est lié à l'erreur, mais elle a commencé à apparaître juste après avoir mis à jour les fichiers d'aide de MQL5 en utilisant la procédure automatique correspondante de MetaEditor.

Le résultat attendu


compilation normale du script))


Le problème a disparu aujourd'hui après un nettoyage de l'ordinateur par un anti-virus.

Le malware semble être nouveau, car il n'a été détecté par aucun des antivirus connus. Les manifestations externes étaient les suivantes :

  • Présence d'un fichier dont le nom n'a aucune signification et dont l'extension est .dat dans le dossier c:\Windows\AppPatch. L'en-tête du fichier montre qu'il est exécutable, le nom original est dd.exe, et les champs "nom du produit" et "copyright" sont des séries de lettres majuscules sans signification.
  • présence d'une entrée Userinit modifiée dans la clé de registre HKLM\Software\Microsoft\Windows NT\Winlogon avec le chemin d'accès au fichier susmentionné. Lorsque l'entrée est supprimée, cette dernière a tendance à se recréer de manière inaperçue si le virus est toujours en mémoire.
  • exécution occasionnelle de plusieurs copies des processus conhost.exe et route.exe, et parfois netsh.exe
  • problèmes avec MetaEditor 5)) - L'éditeur Metaquotes était un assez bon détecteur de malware en plus de toutes ses fonctionnalités)

J'ai tout nettoyé en mode sans échec.

Oui, il a été rayé Webmoney compte local, mais les données d'identification n'ont pas disparu)))).

Je recommande à tout le monde de vérifier manuellement.

 
Urain:

Où est-ce que SymbolsTotal() et SymbolName() prennent l'information dans le testeur ? J'ai un décalage entre le i-ième symbole dans le terminal et le testeur.

Si dans le terminal le 3ème USDJPY alors dans le testeur le 3ème EURGBP.

Je fais juste une énumération des symboles MarketWatch et je les code dans Expert Advisor par numéros de série.

Vous ne pouvez pas vous fier à l'ordre des symboles dans MarketWatch, car il peut être quelconque par définition.
 

Dossiers :
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

qu'est-ce que c'est ?

ressemble à l'enum enum_TYPE_MARKET_INFO, sous forme numérique.

J'ai la même chose. Signalez-le à la DS.

 
Renat:
On ne peut pas se baser sur l'ordre des caractères dans le bulletin de marche, car il peut être n'importe quel ordre par définition.

Il ne s'agit pas de l'ordre des symboles ou de leur nombre, mais l'ordre et le nombre sont différents dans le terminal et le testeur en même temps.

J'ai résolu le problème en transmettant la liste des symboles au testeur via un fichier. Bien que je pense sincèrement qu'il s'agit d'un bug.

 
Urain:

Il ne s'agit pas de l'ordre des symboles ou du nombre de symboles, mais l'ordre et le nombre de symboles en même temps sont différents dans le terminal et dans le testeur.

En général, j'ai résolu le problème en transmettant le jeu de caractères au testeur par le biais d'un fichier. Bien que je pense honnêtement que c'est un bug.

Je ne comprends pas vraiment le problème...

Et si l'utilisateur change l'ordre des caractères dans le Marketwatch pendant qu'il travaille, s'agira-t-il également d'un bug ?

 
AlexSTAL:

Je ne comprends pas vraiment le problème...

Si l'utilisateur change l'ordre des caractères dans Marketwatch pendant qu'il est en cours d'exécution, s'agit-il également d'un bogue ?

Lorsque le testeur est en cours d'exécution ? C'est peu probable, après le démarrage du testeur, il fonctionne de manière autonome, mais en mode pré-démarrage, on s'attend à ce que les symboles correspondent (ceux entre les tests des Expert Advisors, par exemple lors du changement d'EA ou lors du changement de symbole ou de période, et tout changement dans les paramètres du testeur devrait conduire à une correspondance des symboles, imho).
 
Urain:

Il ne s'agit pas de l'ordre des caractères ou du nombre de caractères, mais l'ordre et le nombre sont différents dans le terminal et le testeur en même temps.

En général, j'ai résolu le problème en passant une liste de caractères dans le testeur à travers un fichier. Bien que je pense sincèrement qu'il s'agit d'un bug.

La base de données des symboles (market watch) est mise à jour de manière asynchrone et aléatoire depuis le serveur. Vous ne pouvez en aucun cas compter sur son ordre.

Le testeur est un programme distinct, souvent à distance. Dans le testeur, la base de symboles n'est pas entièrement transférée, et seuls les symboles utilisés dans les calculs le sont - ceci afin d'économiser les ressources. Par conséquent, l'ordre des symboles (ajoutés à la liste des symboles actifs dans le testeur) est différent.

Utilisez les noms de symboles dans les paramètres - il s'agit d'une option plus sûre.