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

 
LookingFor:
   for(bars=start; bars<rates_total; bars++)



Collègues, aidez-moi s'il vous plaît

Je ne comprends pas ce qui ne va pas avec la boucle, les données de la poignée ne vont pas dans le tableau psa1


Dans OnInit(), faites ce qui suit :

  ArraySetAsSeries(pca1,true);

après cela, modifiez votre boucle en conséquence :

   for(bars=start; bars<rates_total; bars++)

Considérant que maintenant la barre la plus à droite de votre indicateur a l'indice "0".

 

Comment terminer un script en appuyant sur n'importe quelle touche ou sur une touche spécifique ?

 
Vladimir, merci, n'y a-t-il rien que vous puissiez faire sans modifier l'indexation?
 
LookingFor:
Vladimir, merci, n'y a-t-il rien que vous puissiez faire sans modifier l'indexation?

Si vous ne voulez pas faire n'importe quoi, alors commencez à tester avec le débogage sur les données historiques. Pas à pas. Voir les données de l'endroit où la barre est copiée.

 
LookingFor:

Collègues, aidez-moi s'il vous plaît

Je ne comprends pas ce qui ne va pas avec la boucle, les données de la poignée ne vont pas dans le tableau psa1


LookingFor:
Vladimir, merci, mais vous ne pouvez rien faire sans modifier l'indexation?

Tout d'abord, vous devez rendre le code lisible par l'homme(Styler - Work with Source Code - Program Development - MetaEditor).

//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0)
     {
      i=bars=start=1;
     }
   else
     {
      start=prev_calculated;
     }
   for(bars=start; bars<rates_total; bars++)
     {
      CopyBuffer(pulse_Handle,0,start,1,pca1);

      if(pca1[bars]!=pca1[bars-1])
        {
         pca2[i]=pca1[bars]; i++;
         string s="";
         s=IntegerToString(pca1[bars])+"  ";
         Print(s); continue;
        }
      else
         continue;
     }
//--- return value of prev_calculated for next call 
   return(rates_total);
  }

vous DEVEZ également vérifier - mais qu'a retourné la fonction CopyBuffer ? Voir leCopyBuffer:

Valeur retournée

Nombre d'éléments du tableau copiés ou -1 en cas d'erreur.

De plus, nous fixons des points d'arrêt et exécutons le débogage sur des données historiques.

exécuter le débogage sur les données historiques

et contrôler certaines variables :

time[rates_total-1]
time[0]
bars
pca1[???]

df

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым...
 

Aidez à traduire en un A

double GetExtremumZZPrice(string symb="0",ENUM_TIMEFRAMES tf=0,int ne=0,int dp=12,int dv=5,int bs=3) {
 if(symb=="0") symb=Symbol();
  double zz;
  int ke=0;
   for(int i=0; i<Bars(symb, tf)-1; i++) {
    zz=iCustom(symb, tf, "ZigZag", dp, dv, bs, 0, i);
    if(zz!=0) {
      ke++;
      if(ke>ne) return(zz);
  }}
  return(0);
 }
 
Vitaly Muzichenko:

Aidez à traduire en un A

Lire le tampon indicateur et chercher zz dans le tableau résultant.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

Aidez à traduire en un A

Obtenez d'abord la poignée de l'indicateur ! Utilisez ensuite CopyBuffer pour obtenir un tableau des valeurs souhaitées, puis parcourez-les en boucle.
 

Merci à tous !

Une autre question : j'ai parcouru le forum et kodobase et je ne trouve aucune application pour "Trend.mqh", tout semble être là. S'il existe un lien vers l'application, veuillez l'envoyer ici ou me donner un exemple par code.

J'ai trouvé de nombreux EAs utilisant Rsi, Ma, Adh et d'autres EAs, mais aucun d'entre eux n'a utilisé SB. C'est si mauvais, ou je n'ai pas trouvé les codes, qui l'utilise ?


Ce dont j'ai besoin : Il y a un code, dans lequel j'obtiens la MA de plusieurs périodes de temps.

_ma1 = iMA(Symbol,PERIOD_M15,MAFast,0,MAMethod,MAPrice,i)
_ma2 = iMA(Symbol,PERIOD_M30,MAFast,0,MAMethod,MAPrice,i)
_ma3 = iMA(Symbol,PERIOD_H1, MAFast,0,MAMethod,MAPrice,i)

Ne pas créer plusieurs dizaines de handles dans mql5 en OnInit, avec un peu de chance SB résoudra mon problème.

 
Vitaly Muzichenko:

Merci à tous !

Une autre question : j'ai parcouru le forum et kodobase et je ne trouve aucune application pour "Trend.mqh", il semble que tout soit là. S'il existe un lien vers l'application, veuillez l'envoyer ici ou me donner un exemple par code.

J'ai trouvé de nombreux EAs utilisant Rsi, Ma, Adh et d'autres EAs, mais aucun d'entre eux n'a utilisé SB. C'est si mauvais, ou je n'ai pas trouvé les codes, qui l'utilise ?


Ce dont j'ai besoin : Il y a un code, dans lequel j'obtiens la MA de plusieurs périodes de temps.

Ne pas créer plusieurs dizaines de handles dans mql5 en OnInit, j'espère que SB va résoudre mon problème.


Je dois créer tous les handles ou objets de la classe "Trend.mqh::CiMA".