Caractéristiques du langage mql5, subtilités et techniques - page 149

 
fxsaber:

Merci, bonne règle. Je suis devenu une victime de ma propre incompétence. Vraiment, il faut un peu plus de règles pour un cas aussi évident.


Peut-être pour les deux cas Avertissement intelligent à faire ?

Ne pas)))) Ce ne serait pas du tout ennuyeux))))

 
Vladimir Simakov:
Quel est le problème avec ce code ? Deinit a cloué l'objet par un pointeur constant (je connais le handle ici). Tir normal des membres dans le style C++, ou alors les créateurs ont dissous tout le monde))).

Il n'y aura aucun problème au démarrage. Une fois lancé, vous pouvez attendre un certain temps et créer une situation où l'exécution de l'EA sera interrompue.

Ce n'est pas un mystère, c'est juste que la compréhension est bien meilleure si vous cherchez le problème dans un code apparemment inoffensif.
 
fxsaber:

Il n'y aura aucun problème au démarrage. Une fois lancé, vous pouvez attendre un certain temps et créer une situation où l'exécution de l'EA sera interrompue.

Ce n'est pas un mystère, c'est juste que la compréhension est bien meilleure si vous cherchez le problème dans un code apparemment inoffensif.
Je sais quel est le problème. Changement de cadre temporel et oups... Je veux dire, c'est la norme ici. Avertissement ? Pour quoi faire ? Pour ma part, lorsque je suis moi-même confronté à une telle chose, je ne la compte que dans l'élévation de ma compétence. Avec votre exemple, IMHO, ici sur la force de 20 pour cent de la communauté sont en mesure de rencontrer, alors pourquoi les priver de développement ?
 
Vladimir Simakov:
Je sais quel est le problème ici. Changement de cadre temporel et oups... Je veux dire, c'est la norme ici. Avertissement ? Pour quoi faire ? Pour ma part, lorsque je suis moi-même confronté à une telle chose, je ne la compte que dans l'élévation de ma compétence. Avec votre exemple, IMHO, ici sur la force de 20 pour cent de la communauté sont en mesure de rencontrer, alors pourquoi les priver de développement ?

J'ai connu une situation encore plus intéressante. Il n'y a pas eu de changement de quoi que ce soit, mais OnDeinit a été appelé après la reconnexion. Maintenant, je vais garder un œil sur Reason.

 

Je suis constamment confronté à la nécessité de rechercher le symbole requis dans le Market Watch. Par exemple, le symbole actuel du graphique.

Chaque fois, cela prend beaucoup de temps précieux. Je l'ai automatisé en utilisant le script suivant.

// После запуска и нажатия ENTER делает активным в Обзоре рынка символ чарта.
#include <WinAPI\winuser.mqh>

#define  GA_ROOT           0x00000002

#define  WM_KEYDOWN        0x0100
#define  WM_LBUTTONDOWN    0x0201

#define  VK_DELETE         0x2E

#define  WM_CHAR           0x0102

#define  GET_HANDLE                                                                       \
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT); \
                                                                                         \
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                              \
    Handle = user32::GetDlgItem(Handle, ControlID[i]);


bool SetSymbolNavigator( const string SymbName )
{
  const bool Res = ::SymbolInfoInteger(SymbName, SYMBOL_EXIST);

  if (Res)
  {
    static const int ControlID[] = {0xE81C, 0x804B, 0x27A0, 0x271B, 0x3E9};
    GET_HANDLE

    user32::SendMessageW(Handle, WM_LBUTTONDOWN, 0, 0);
    user32::SendMessageW(Handle, WM_KEYDOWN, VK_DELETE, 0);

    const int Size = ::StringLen(SymbName);
    
    for (int i = 0; i < Size; i++)
      user32::SendMessageW(Handle, WM_CHAR, SymbName[i], 0);
  }

  return(Res);
}

void OnStart()
{
  SetSymbolNavigator(_Symbol);
}
 
fxsaber:

Je suis constamment confronté à la nécessité de rechercher le symbole requis dans le Market Watch. Par exemple, le symbole actuel du graphique.

Chaque fois, cela prend beaucoup de temps précieux. Je l'ai automatisé en utilisant le script suivant comme touche de raccourci.

Collègue, clarifiez l'objectif. Voulez-vous que le symbole apparaisse dans le "Market Watch" ou qu'il soit mis en évidence dans le "Market Watch" ?

 
Denis Kirichenko:

Collègue, clarifiez l'objectif. Voulez-vous que le symbole apparaisse dans le Market Watch ou qu'il soit mis en évidence dans le Market Watch ?

A mettre en évidence. Beaucoup d'entre eux sont personnalisés, par exemple. Je dois lancer Tester sur cette carte personnalisée, que je peux voir.

Ensuite, je lance ce script et après cela, je dépose le symbole sélectionné dans Market Watch avec la souris dans le testeur. Cela ne prend que quelques secondes.

 
fxsaber:

A mettre en évidence. Par exemple, il existe de nombreux modèles personnalisés. Je dois lancer le testeur sur ce modèle personnalisé, dont je peux voir le graphique.

Ensuite, je lance ce script, et après cela, je dépose le personnage en surbrillance dans Market Watch avec la souris dans le testeur. Cela ne prend que quelques secondes.

Alors ce script ne fonctionne pas pour moi. Rien ne se passe, le symbole n'est pas mis en évidence.

Lancez, appuyez sur Enter. Je vois une erreur dans le journal :

2019.11.29 11:47:38.609 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found

Oui, j'ai nommé le scriptSetActiveSymbol.mq5.

 
Denis Kirichenko:

Je vois une erreur dans les journaux

Elle ne démarre pas comme ça. Il n'y a pas de dossier.

 
fxsaber:

Elle ne démarre pas comme ça. Il n'y a pas de dossier.

C'est le cas. Je n'ai donné qu'une seule entrée du journal. Le plein est comme ça :

2019.11.29 12:37:18.851 Scripts script SetActiveSymbol (AUDJPY,H1) loaded successfully
2019.11.29 12:37:18.878 Scripts script SetActiveSymbol (AUDJPY,H1) removed
2019.11.29 12:37:26.419 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found