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

 
Vitaly Muzichenko:

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.

Comme ça :

Merci, ça a marché.

D'après ce que j'ai compris, je dois faireIndicatorRelease

Parce que l'ancien calcul est toujours accroché au tableau ? Au moins dans le testeur.

Alors le code est comme ceci ?

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

Merci, ça marche.

D'après ce que j'ai compris, je devrai également effectuerIndicatorRelease

Parce que l'ancien calcul est toujours accroché au tableau ? Au moins dans le testeur.

Alors le code est comme ceci ?

Et ajoutez au code :

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

Comment faire pour que ma MA personnalisée soit tirée de l'indicateur RSI au lieu du prix ?

Je reçois les données de la MA personnalisée par le biais deiCustomGet.

Je veux faireun indicateur composé (indicateur à partir d'un indicateur).

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()
  {
  double MA_price=0.0;
  MA_price=iCustomGet(handle_MA,0,0);
  Print("MA_price",MA_price);
  }

//Получаем данные кастом МА
double iCustomGet(int handle,const int buffer,const int index)
  {
   double Custom[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,buffer,index,1,Custom)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Custom[0]);
  }

Exemples pour mt4

https://www.mql5.com/ru/forum/110186

https://www.mql5.com/ru/code/22638

Как в коде применить постороение одного индикатора по другому индикатору
Как в коде применить постороение одного индикатора по другому индикатору
  • 2008.08.03
  • www.mql5.com
Хочу написать советника по данной стратегии: http://unfx.ru/strategies_to_trade/strategies_139...
 
ilvic:

Comment faire pour que ma MA personnalisée soit tirée de l'indicateur RSI au lieu du prix ?

Je reçois les données de la MA personnalisée par le biais deiCustomGet.

Je veux faireun indicateur composé (indicateur à partir d'un indicateur).

Exemples pour mt4

https://www.mql5.com/ru/forum/110186

https://www.mql5.com/ru/code/22638

Que pensez-vous de ceci:iMA

int  iMA( 
   string               symbol,            // имя символа 
   ENUM_TIMEFRAMES      period,            // период 
   int                  ma_period,         // период усреднения 
   int                  ma_shift,          // смещение индикатора по горизонтали 
   ENUM_MA_METHOD       ma_method,         // тип сглаживания 
   ENUM_APPLIED_PRICE   applied_price      // тип цены или handle 
   );
 
Vladimir Karputov:

Que pensez-vous de ceci:iMA

Merci, juste ce dont j'ai besoin

 

A ceci :

int1 = NormalizeDouble(dou1,0)

Le compilateur réagit : perte possible de données en raison de la conversion de type.

Question : Quelle est la bonne façon de procéder ? (pour que le compilateur ne jure pas)

 
User_mt5:

A ceci :

Le compilateur réagit : perte possible de données en raison de la conversion de type.

Question : quelle est la bonne façon de procéder ? (pour que le compilateur ne jure pas)

Le compilateur ne jure pas mais vous avertit que vous essayez de mettre double dans int.


 
User_mt5:

A ceci :

Le compilateur réagit : perte possible de données en raison de la conversion de type.

Question : Quelle est la bonne façon de procéder ? (pour que le compilateur ne jure pas)

int1 = (int)NormalizeDouble(dou1,0)
 
Artyom Trishkin:

Le compilateur ne jure pas, mais avertit que vous essayez de mettre double dans int.


J'étais juste perplexe par presque la même chose.

deltaH4[i] = NormalizeDouble(bufOpen[i]-bufClose[i], (int)SymbolInfoInteger(m_symbol, SYMBOL_DIGITS));

C'est à cause de cet int ... Si je me souviens bien, SymbolInfoInteger avait l'habitude de retourner le type int et maintenant il retourne soudainement le type long.

 
Alexey Viktorov:

J'ai été perplexe sur à peu près la même chose.

c'est à cause de cet int... Si je me souviens bien, SymbolInfoInteger avait l'habitude de retourner le type int et maintenant il retourne soudainement le type long.

Il retourne toujours un long - regardez les identifiants de la propriété SymbolInfoInteger()

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...