Créer un robot - page 7

 
Vladimir M.:
J'efface généralement le manche et la partie calcul dans OnDeinit et tout est supprimé. L'objet n'est pas un indicateur.

https://www.mql5.com/ru/docs/chart_operations/chartindicatordelete

"La suppression d'un indicateur sur un graphique ne signifie pas que la partie calcul de l'indicateur sera également supprimée de la mémoire du terminal. Pour libérer la poignée de l'indicateur, utilisez la fonction IndicatorRelease() ".

Oui, Vladimir, je l'ai déjà fait et écrit à ce sujet, mais le résultat est toujours le même.

Salutations, Vladimir.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Nouveau robot de trading

MrBrooklin, 2020.09.28 10:38

Je résous ce problème depuis plus d'une heure. Je voulais créer et afficher l'indicateur ZigZagColor sur le graphique au démarrage du conseiller expert. Cela a été fait dans int OnInit :

   handle_iCustom=iCustom(m_symbol.Name(),Period(),"Examples\\ZigzagColor",
                          Inp_ZZ_Depth,
                          Inp_ZZ_Deviation,
                          Inp_ZZ_Backstep);
   ChartIndicatorAdd(ChartID(),0,handle_iCustom);

L'indicateur a été créé et affiché. J'ai maintenant besoin que l'indicateur soit supprimé après la suppression du conseiller expert. Je suis en train de l'écrire :

void OnDeinit(const int reason)
  {
//---
   IndicatorRelease(handle_iCustom);
   ObjectsDeleteAll(0,"Examples\\ZigzagColor");
  }

Mais l'indicateur n'est pas supprimé. J'ai tout réglé. J'ai nettoyé la poignée et appliqué la fonction de suppression. Je me demande quelle est la raison pour laquelle il ne se désinstalle pas.

Salutations, Vladimir.


 
Alekseu Fedotov:

Retirer l'indicateur du graphique avec la fonction


ChartIndicatorDelete(

long chart_id, // ID du graphique

int sub_window // numéro de la sous-fenêtre

const string indicator_shortname // nom court de l'indicateur

) ;

Merci, Alexey, j'essaierai demain à tête reposée, je suis déjà confus par les informations que j'ai reçues. Comme on dit, je dormirai mieux demain matin !

J'ai maintenant une autre chose qui m'a beaucoup intrigué et surpris. J'ai essayé d'effacer le graphique avec le script développé par Vladimir Karputov, mais ce script a supprimé absolument tout sauf l'indicateur personnalisé ZigzagColor ! J'ai essayé de supprimer un simple ZigZag avec le même script, il ne le fait pas non plus ! C'est un mystère...

Salutations, Vladimir.

 
MrBrooklin:

Merci, Alexey, demain j'essaierai à tête reposée, car je suis déjà dans un fouillis d'informations. Comme le dit le proverbe, on est plus sage le matin !

Maintenant, il y a une autre chose qui m'a beaucoup intrigué et surpris. J'ai essayé d'effacer le graphique avec le script développé par Vladimir Karputov, mais ce script a supprimé absolument tout sauf l'indicateur personnalisé ZigzagColor ! J'ai essayé de supprimer un simple ZigZag avec le même script, il ne le fait pas non plus ! C'est un mystère...

Salutations, Vladimir.

Essayez ce script


#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int window=ChartWindowFind(0,"ZigzagColor");
   bool res=ChartIndicatorDelete(0,window,"ZigzagColor");
//--- проанализируем результат вызова ChartIndicatorDelete()
   if(!res)
     {
      PrintFormat("Не удалось удалить индикатор ZigzagColor с окна #%d. Код ошибки %d",
                  window,GetLastError());
     }
  }


 

nom court ZigzagColor - et c'est la valeur par défaut, si vous la définissez différemment vous devez écrire ces chiffres

2020.09.29 03:41:36.604 IndicatorDelete (XAUUSD,M30)    ZigZag(12,5,3)

et c'est exactement ce que vous devez mettre dans

ZigZag(12,5,3)
 
SanAlex:

nom court ZigzagColor - et c'est la valeur par défaut, si vous la définissez différemment vous devez écrire ces chiffres

et c'est ainsi qu'il faut l'épeler

ou vous pouvez changer l'indicateur lui-même - donner un nom plus simple

//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag("+(string)InpDepth+","+(string)InpDeviation+","+(string)InpBackstep+")");
   PlotIndexSetString(0,PLOT_LABEL,"ZigzagColor");
//--- set an empty value

par exemple

//--- name for DataWindow and indicator subwindow label
   IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag");
   PlotIndexSetString(0,PLOT_LABEL,"ZigzagColor");
//--- set an empty value

-----------------------------------------------

Je vous ai déjà montré le script - si ce script est attaché à un graphique et que vous ne donnez pas de nom d'indicateur, il fonctionnera sans supprimer aucun indicateur - mais il écrira dans la fenêtre du conseiller expert quels indicateurs sont disponibles.

https://c.mql5.com/3/332/IndicatorDelete.mq5

Voici ce que j'ai

CS      0       03:41:36.549    IndicatorDelete (XAUUSD,M30)    EWO(5,35)
DF      0       03:41:36.604    IndicatorDelete (XAUUSD,M30)    ZigZag(12,5,3)
KR      0       03:41:36.626    IndicatorDelete (XAUUSD,M30)    LeMan_BrainTrend1Sig
FE      0       03:41:36.646    IndicatorDelete (XAUUSD,M30)    Hline VSC
RN      0       03:41:36.666    IndicatorDelete (XAUUSD,M30)    Pivot Lines TimeZone
KG      0       03:41:36.686    IndicatorDelete (XAUUSD,M30)    Line through two fractals
DL      0       03:41:36.706    IndicatorDelete (XAUUSD,M30)    sanbox
 
Alekseu Fedotov:

Essayez ce script

Bonjour à tous !

Aleksey, j'ai appliqué votre script. J'ai obtenu le code d'erreur 4115. J'ai trouvé ce que cela signifie dans le manuel :

ERR_CHART_INDICATOR_CANNOT_DEL

4115

Erreur lors de la suppression de l'indicateur du graphique


Salutations, Vladimir.

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

ou vous pouvez également modifier l'indicateur lui-même en lui donnant un nom plus simple

comme ceci

-----------------------------------------------

J'ai déjà téléchargé le script - si ce script est attaché à un graphique et que vous ne donnez pas de nom d'indicateur, il fonctionnera sans supprimer aucun indicateur - mais il écrira dans la fenêtre du conseiller expert quels sont les indicateurs présents.

https://c.mql5.com/3/332/IndicatorDelete.mq5

C'est ce que j'ai !

Bonjour, j'ai implémenté votre script. Deux indicateurs sont apparus dans l'onglet Experts : Volumes et ZigZag (80,20,0). C'est en effet le cas, seul l'indicateur ZigZag est écrit sans couleur pour une raison quelconque.

Salutations, Vladimir.

 
Alekseu Fedotov:

Essayez ce script

MrBrooklin:

Bonjour à tous !

Aleksey, j'ai appliqué votre script. J'ai obtenu le code d'erreur 4115.

Salutations, Vladimir.

Je dois être plus prudent.

bool  ChartIndicatorDelete( 
   long           chart_id,              // идентификатор графика 
   int            sub_window             // номер подокна 
   const string   indicator_shortname    // короткое имя индикатора 
   );

Le nom de l'indicateur et le nom court de l'indicateur ne coïncident souvent pas.

 
MrBrooklin:

Bonjour, j'ai appliqué votre script. Deux indicateurs sont apparus dans l'onglet Experts: Volumes et ZigZag (80,20,0). C'est en effet le cas, seul l'indicateur ZigZag est écrit sans couleur pour une raison quelconque.

Sincèrement, Vladimir.

Vous devez donc l'écrire comme suit : ZigZag (80,20,0).

Il sera définitivement supprimé dans ce cas.

-----------------

mais sanscouleur

car c'est ainsi qu'il est écrit dans l'indicateur

IndicatorSetString(INDICATOR_SHORTNAME,"ZigZag("+(string)InpDepth+","+(string)InpDeviation+","+(string)InpBackstep+")");

 
SanAlex:

Vous devez l'écrire comme ceci - ZigZag (80,20,0)

Le Zigzag sera définitivement supprimé.

-----------------

mais sanscouleur

parce que c'est ainsi qu'il est écrit dans l'indicateur

Si vous modifiez les paramètres, vous devez ajouter les chiffres que vous avez spécifiés dans l'Indicateur

par exemple

ZigZag(12,5,3)