Apprendre et écrire ensemble en MQL5 - page 8

 

je suis en train d'écrire un algorithme de constructions de prix simples à transférer vers mcl5 depuis mcl4, par exemple copier le code mcl4 vers mcl5 stochastique masd et rsi, il utilise des méthodes basiques d'accès aux données mcl4.

Bientôt, nous aurons ce dont nous avons besoin.

maintenant je me débats avec la fonction iMaOnArRAu car mt5 ne la fournit pas pour obtenir les méthodes les plus simples de moyennes mobiles à partir de tableaux d'utilisateurs.

je vais élargir les bibliothèques à tous les outils techniques, je connais presque tous les algorithmes

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

Je suis si bête... Je n'arrive pas à trouver comment écrire...

Il y a ce code :

   MqlRates rates[];
   
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(_Symbol,_Period,0,1000,rates);
   

Je veux obtenir l'index de la barre avec le Low le plus bas parmi les barres de i-ième à j-ième.

J'essaie d'utiliser la fonction ArrayMinimum.

int k=ArrayMinimum(rates.low,i,j-i+1) ; - faux

int k=ArrayMinimum(rates[].low,i,j-i+1) ; - faux

Quelle est la bonne méthode ?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl:

Je suis si bête... Je n'arrive pas à trouver comment écrire...

Il y a ce code :

Je veux obtenir l'index de la barre avec le Low le plus bas parmi les barres de i-ième à j-ième.

J'essaie d'utiliser la fonction ArrayMinimum.

int k=ArrayMinimum(rates.low,i,j-i+1) ; - faux

int k=ArrayMinimum(rates[].low,i,j-i+1) ; - faux

Quelle est la bonne méthode ?

Utilisez les fonctions d'accès direct, MqlRates est un tableau de "structures", et vous avez besoin d'un tableau Low, voici un exemple, pour High également.

   rates_total=CopyHigh(NULL,_Period,_start,_end,iHigh);
   if(rates_total<=0)
      return;
   else
      HighDay=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   rates_total=CopyLow(NULL,_Period,_start,_end,iLow);
   if(rates_total<=0)
      return;
   else
      LowDay=iLow[ArrayMinimum(iLow,0,rates_total)];

Regardez des exemples de codes. Ceci est tiré de https://www.mql5.com/ru/code/102

PivotPointUniversal
PivotPointUniversal
  • votes : 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001:

Utilisez les fonctions d'accès direct, MqlRates est un tableau de "structures" et vous avez besoin d'un tableau de Low, voici un exemple, immédiatement et pour High.

C'est compréhensible. Dans mon cas, je viens d'écrire :

         int k=i; double min=rates[k].low;
         for (int m=i+1;m<=j;m++)
            if (rates[m].low<min) {min=rates[m].low; k=m;}

Je ne veux pas d'un tas de tableaux. Ce n'est pas économe en ressources et pas très agréable...

Je voulais juste comprendre exactement avecArrayMinimum - est-il possible d'utiliser cette fonction avec un tableau de structures.....

 
owl:

C'est compréhensible. Dans mon cas, j'ai juste écrit :

Je ne veux pas d'un tas de tableaux... Ce n'est pas économe en ressources et pas très agréable...

Je voulais juste m'occuper de ArrayMinimum - est-il possible d'utiliser cette fonction avec un tableau de structures.....

Si vous pensez que le stockage d'un tas d'informations dans un tableau de structures est plus économique qu'un tableau de doubles, je vous tends les bras.

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем 
  };

ou pensez-vous que le stockage des ints, des longs et des dates est plus économique en termes de mémoire ?)

ou bien choisir ce dont on a besoin dans un tas d'ordures est plus économique, ha ha ...

 
vdv2001:

Si vous pensez que stocker un tas d'informations dans un tableau de structures est plus économique qu'un tableau de doubles, alors j'abandonne.

ou pensez-vous que le stockage des ints, des lows et des dates est plus économique en termes de mémoire ? ;))

ou bien choisir ce dont vous avez besoin dans un tas d'ordures est plus économique, ha ha ...

Eh bien... Je suis un peu excessif sur la rentabilité, bien sûr... Mais, en fait, j'ai besoin de presque toutes les informations deMqlRates(sauf peut-être les volumes, et ce n'est pas un fait...)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

En général, avant de demander quoi que ce soit, je consulte diverses sources à la recherche d'une réponse.

Mais aujourd'hui, après une semaine de recherche, je me suis rendu compte que je n'ai pas de réponse et je pense que personne ne l'a encore trouvée. Je propose donc une énigme.

Données initiales :

1) J'ai un indicateur simple tel que Levels and Arrows iS7N_SacuL_v3.mq5 (ci-joint).

2) un Expert Advisor qui essaie de recevoir les données de cet indicateur aS7N_TIC.mq5 (ci-joint)

Alors !

Sur cinq tampons indicateurs, seules deux données sont correctement renvoyées.

Une explication détaillée suivra ! !!

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Dossiers :
 

Après avoir examiné attentivement la situation, j'ai constaté que les tampons à 3 et 4 indicateurs ne donnent pas toujours les données correctes (bien qu'il soit impossible de dire lesquelles sont correctes et lesquelles ne le sont pas).

Regardez le tableau. Dans la fenêtre de données, sur le côté gauche, il y a les valeurs de l'indicateur dans le graphique et en dessous, il y a les valeurs obtenues par l'Expert Advisor. La plupart des valeurs sont les mêmes, mais il y en a d'autres...

À cet égard, j'ai suggéré que des données historiques différentes soient utilisées dans le graphique et dans le testeur.

Qu'en pensez-vous ?

 

Enfin, le problème principal ! Il n'est pas possible d'obtenir les données des tampons de 1, 2 et 5 indicateurs de la manière habituelle.

Le problème est que les données des barres précédentes sont prises en compte lors du calcul des données de ces tableaux.

Bien sûr, lorsque vous appelez l'indicateur, vous pouvez le forcer à recalculer les N barres à venir, quelle que soit la valeur de prev_calculated .

Je suppose que l'appel et le calcul des valeurs de l'indicateur sont effectués avec la valeur deprev_calculated non égale à 0.

Pour la plupart des indicateurs, c'est vrai, car cela permet d'économiser des ressources, mais pour l'exemple donné, cela ne fonctionnera pas.

Que faire ? Qu'en pensez-vous ?

Vous pouvez également déplacer tous les calculs vers le conseiller expert ! Cette option fonctionne, mais pas de la même manière... J'aimerais ne pas porter mon pantalon par-dessus ma tête.

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

dans le conseiller expert est utilisé

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
de la barre 0 est prise, les valeurs des tampons de l'indicateur sont modifiées à chaque tick jusqu'à la clôture de la bougie.
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.