Questions des débutants MQL5 MT5 MetaTrader 5 - page 959

 

Comment modifier le paramètre d'entrée dans l'indicateur personnalisé pendant le trading et appliquer les changements ?

Disons que j'avais ma 25, maintenant j'ai besoin de ma 33.

D'après ce que j'ai compris, les paramètres d'entrée ne sont définis que pendant l'initialisation. Mais j'ai besoin de changer d'indicateur pendant le trading

input int            InpMA_ma_period      = 25;        // Параметры МА 
input int            InpMA_ma_shift       = 0;         // MA PRICE_HIGH and PRICE_LOW: horizontal shift 
input ENUM_MA_METHOD InpMA_ma_method      = MODE_SMA;  // MA PRICE_HIGH: smoothing type 

int            handle_MA; 

int OnInit()
  {
    handle_MA=iCustom(m_symbol.Name(),Period(),"MA",InpMA_ma_period,InpMA_ma_shift,InpMA_ma_method,PRICE_CLOSE);
  }

void OnTick()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   InpMA_ma_period      = 33;
  }
 
ilvic:

Comment modifier le paramètre d'entrée dans l'indicateur personnalisé pendant le trading et appliquer les changements ?

Disons que j'avais ma 25, maintenant j'ai besoin de ma 33.

D'après ce que j'ai compris, les paramètres d'entrée ne sont définis que pendant l'initialisation. Mais j'ai besoin de changer d'indicateur pendant le trading

Créez des indicateurs TWO à l'avance.

 
Vladimir Karputov:

Créez des indicateurs TWO à l'avance.

Non, je n'ai pas besoin de deux indicateurs. Je dois changer celui-ci pendant les échanges.

Je veux qu'il ait une dynamique, pour ainsi dire.

Puis-je le télécharger et le charger avec de nouveaux paramètres ?

 
ilvic:

Non, je n'ai pas besoin de deux indicateurs. Je dois changer celui-ci pendant les échanges.

La dynamique, pour ainsi dire.

Peut-on le décharger d'une manière ou d'une autre et le charger avec de nouveaux paramètres ?

Créez trois indicateurs :).

En général, il faut d'abord penser, créer l'environnement et seulement ensuite obtenir les données.

 
Vladimir Karputov:

Créez trois indicateurs :).

En général, il faut d'abord penser, créer l'environnement et seulement ensuite obtenir les données.

Supposons...

Au début de l'EA, la MA = 25 ;

A chaque nouveau tick, je change la MA = +1.

C'est-à-dire MA = 26 ;

Je ne vais pas créer 500 poignées pour différentes conditions)

 
ilvic:

Comment modifier le paramètre d'entrée dans l'indicateur personnalisé pendant le trading et appliquer les changements ?

Disons que j'avais ma 25, maintenant j'ai besoin de ma 33.

D'après ce que j'ai compris, les paramètres d'entrée ne sont définis que pendant l'initialisation. Mais j'ai besoin de changer d'indicateur pendant le trading

Eh bien, il semble que lors du changement des valeurs des paramètres d'entrée de l'EA, OnInit() est déclenché, ce qui signifie que les nouvelles valeurs des paramètres sont appliquées. Ou ai-je tort ?

 
Vitaly Muzichenko:

Si les valeurs des paramètres d'entrée de l'EA sont modifiées, OnInit() est déclenché, ce qui signifie que les nouvelles valeurs des paramètres sont appliquées. Ou ai-je tort ?

J'ai essayé de cette façon.

Ça ne marche pas.

input int            InpMA_ma_period      = 25;        // Параметры МА 
input int            InpMA_ma_shift       = 0;         // MA PRICE_HIGH and PRICE_LOW: horizontal shift 
input ENUM_MA_METHOD InpMA_ma_method      = MODE_SMA;  // MA PRICE_HIGH: smoothing type 

double ExtInpMA_ma_period=InpMA_ma_period;
int            handle_MA; 

int OnInit()
  {
    handle_MA=iCustom(m_symbol.Name(),Period(),"MA",ExtInpMA_ma_period,InpMA_ma_shift,InpMA_ma_method,PRICE_CLOSE);
  }

void OnTick()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   ExtInpMA_ma_period      = 33;
  }
 
ilvic:

J'ai essayé comme ça.

Ça ne marche pas.

Eh bien, cela ne fonctionnera pas, vous devez appelerOnInit pour réinitialiser l'indicateur.

À quelle fréquence changez-vous les paramètres pendant le fonctionnement ?

 
Vitaly Muzichenko:

Eh bien, vous ne pouvez pas, vous devez appelerOnInit pour réinitialiser l'indicateur.

À quelle fréquence changez-vous les paramètres pendant le fonctionnement ?

Je vais le changer souvent.

Le code devrait donc ressembler à ceci ?

void OnTick()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   
   ExtInpMA_ma_period      = 33;
   OnInit();

  }
 
ilvic:

Je vais beaucoup le changer.

Le code devrait donc ressembler à ceci ?

Vous devriez mettre un drapeau pour vérifier si la valeur a changé, de sorte que vous n'avez pas besoin d'activerOnInit à chaque tick.

Quelque chose comme ça :

void OnTick()
  {
   // Ставим новый параметр индикатора и делаем пересчет с новым параметром ???
   static int NewExtInpMA_ma_period;
   if(ExtInpMA_ma_period != NewExtInpMA_ma_period)
    {
     NewExtInpMA_ma_period=ExtInpMA_ma_period;
     OnInit();
    }
  }