Questions d'un "mannequin - page 52

 

Est-ce que ça doit aller quelque part ? ... Je ne sais pas...

Je veux dire, ça vole sur l'EMA, mais ça prend 10 fois plus de temps sur l'iCustom...

 

Vous ne devriez jamais faire ça :

void OnTick()
  {
   //--- безусловно создаем индикатор
   ma_handle = iMA(_Symbol,0, MA,0, MODE_EMA, PRICE_CLOSE);
  }

Ne vous laissez pas abuser en disant"récupérer la poignée de l'indicateur" alors qu'en réalitévous "créez un nouvel indicateur".

En outre, il y a une fuite de poignées.

 
Karlson:

Est-ce que ça doit aller quelque part ? ... Je ne sais pas...

Je veux dire, il vole sur l'EMA, mais il faut 10 fois plus de temps pour faire fonctionner le iCustom...

Où devrions-nous mettre un tas de Handles-Indicators obsolètes ? Je ne sais pas. Je n'ai pas travaillé comme ça. Il y en a de plus en plus à chaque tic.

Si je devais mettre en œuvre une telle stratégie, je refuserais d'appeler un indicateur personnalisé prêt à l'emploi par le biais de iCustom() et je placerais le corps de l'indicateur dans OnTick() du conseiller expert à la place. Et les calculs des données seraient effectués par le conseiller expert lui-même.

Le problème se pose si l'indicateur est au format .ex5 et qu'il n'y a pas de code.

 

Je me suis souvenu : " La fonction IndicatorRelease() est utilisée pour libérer un indicateur inutilisé de la mémoire de l'ordinateur et le handle de cet indicateur lui est passé" (je l'utilise pendant la désinitialisation de l'Expert Advisor).

Mais tout de même : une nouvelle poignée à chaque tic est gênante.

 

En ce qui concerne l'accumulation de poignées, je vais y réfléchir.

C'est ce que je prévois de faire, mettre la dinde dans le EA.

 
Karlson:

En ce qui concerne l'accumulation de poignées, je vais y réfléchir.

C'est ce que je prévois de faire, mettre la dinde dans le EA.

Vous pouvez laisser l'indicateur tel quel et en créer une copie dans la minuterie ou par événement.
 
Interesting:
Vous pourriez laisser l'indicateur tel quel et en créer une copie dans une minuterie ou par événement.

Quelle est la différence pour créer une copie de l'indicateur : dans OnTick(), OnTimer() ou dans OnChartEvent()? Dans tous les cas, chaque activation spéciale créera une "copie de l'indicateur", aggravant ainsi la pile déjà énorme.

Ou peut-être que je ne comprends pas votre logique.

 
Yedelkin:

Quelle est la différence pour créer une copie de l'indicateur : dans OnTick(), OnTimer() ou dans OnChartEvent() ? Dans tous les cas, chaque activation spéciale créera une "copie de l'indicateur", aggravant ainsi la pile déjà énorme.

Ou peut-être que je ne comprends pas votre logique.

Voici l'astuce : si vous n'avez pas besoin de modifier les paramètres de l'indicateur (pas besoin de créer une nouvelle copie de l'indicateur), il est plus logique de créer l'indicateur une fois dans le bloc d'initialisation.

Mais si, pendant l'opération, les paramètres de l'indicateur doivent être modifiés automatiquement, nous devrons le faire le plus efficacement possible.

La manière la plus efficace est de créer une nouvelle copie de l'indicateur dans le timer (pas nécessairement à chaque tick).

Le moyen le plus efficace serait de créer une nouvelle copie de l'indication lorsqu'un événement (ou plusieurs événements) se produit.

PS

Il est nécessaire de tenir compte du temps passé à calculer l'indicateur et de veiller à se débarrasser des copies "inutiles".

 

Une idée à prendre en considération... Recalculer un nouveau sac peut être fait une fois par jour ou par semaine pour moi... En réglant une minuterie :

bool  EventSetTimer(
   int  seconds      // количество секунд
   );

Vraiment confus par le nombre de secondes dans un jour ou une semaine...))) Vous pouvez également le faire sur une nouvelle barre quotidienne...

Dans la fonction OnTimer(), je supprime d'abord l'indicateur précédent avecIndicatorRelease(), puis j'en crée un nouveau avec une nouvelle période.

void OnTimer() 
{

IndicatorRelease( ma_handle );

ma_handle=iMA(Symbol(),0,newMA,0,MA_EMA,PRICE_CLOSE);

}

C'est une idée générale...

 
Renat:

Vous ne devriez jamais faire ça :

Ne vous laissez pas abuser en disant"récupérer la poignée de l'indicateur" alors qu'en réalitévous "créez un nouvel indicateur".

En outre, il y a la fuite des poignées.

Dans les premiers jours de MQL5, beaucoup de questions ont été discutées, vous avez coupé une partie importante des développements pour l'auto-trading, et en conséquence, les gens étouffent votre OnCalculate() super-optimisé avec de l'espace vide et mettent les calculs dans les événements. C'est un peu lent, mais toujours plus rapide que de créer son propre handle pour chaque paramètre dynamique.

Raison: