[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 183

 

Bonjour.

Pouvez-vous me dire s'il est possible de calculer la distance en points entre deux brassins.

Ma variante est donnée ci-dessous, mais elle ne fonctionne pas comme prévu initialement.

Merci d'avance.

  int g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = maHX_slow - maHX_fast;
  Alert (g);
 
nemo811:

Ma variante est donnée ci-dessous, mais elle ne fonctionne pas comme prévu initialement.

J'ai trouvé une erreur. Voici une version qui fonctionne :

  double g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = (maHX_slow - maHX_fast)/Point;
  Alert (g);
 

Après-midi....

Comment transférer la valeur du prix de clôture d'un ordre d'un terminal à un autre, sur la même paire de devises ?

 
TANKER:

Bonjour....

Comment transférer la valeur du prix de clôture d'un ordre d'un terminal à un autre, sur la même paire de devises ?


Si vous posez une telle question, je ne pense pas que vous puissiez le faire vous-même.
 

Bonsoir à tous !

La question suivante concernant les tableaux se pose.

Supposons que nous devions analyser n barres pour une certaine fluctuation, la sélectionner, la mettre dans un tableau et travailler avec...

Voici un peu de code ; je pense que les commentaires expliqueront tout.

La logique est la suivante :

1. Nous avons fixé le nombre de barres nécessaires.

2. Passez tout en boucle.

Recherchez la réalisation de la condition spécifiée(close_1>close_2&close_2<close_3).

4. Si la condition est remplie, nous calculons la différence entre les prix de clôture close_1 et close_2.

Et puis les questions elles-mêmes :

1. Comment former correctement un tableau et y écrire les valeurs de diff (bien sûr, la dimensionnalité du tableau est déterminée en fonction du nombre de valeurs obtenues) ?

2. Calculer et afficher le nombre d'éléments du tableau ? ??

3. Sélectionnez par exemple 3, 6, 7 éléments et calculez leur somme ? ???

4. et enfin, par exemple, pour imprimer/alerter directement le tableau entier au lieu d'éléments individuels ? ??

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   //определяем переменные
   int i, bars;
   double close_1, close_2, close_3;//цена закрытия
   double diff;//вычисление разности close_1 и close_2
   double Mas[];//массив куда надо заносить данные
   
   
   //устанавливаем значения переменных
   bars=60;//количество баров для анализа
   
   for(i=1;i<=bars;i++)
   {
      close_1=iClose(NULL,PERIOD_M1,i);
      close_2=iClose(NULL,PERIOD_M1,i+1);
      close_3=iClose(NULL,PERIOD_M1,i+2);
      
      //условие для отбора в массив
      if(close_1>close_2&&close_2<close_3)//если выполняется это условие, тогда
      {
         diff=close_1-close_2; //считаем разность и записываем это дело в массив 
         
         /*
         Собственно вопросы:
         1. Как правильно сформировать массив и записать туда полученные значения diff ???
         2. Посчитать и вывести количество элементов в массиве ???
         3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???
         4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???
         */
         
         //Это просто вывод, чтобы удостовериться что наше условие работает, можно потереть... 
         Alert("i ",i," diff: ",DoubleToStr(diff,5));
         
      }
   }


   return(0);
  }
//+------------------------------------------------------------------+
Et voici une image pour que ce soit clair, quelle condition nous traitons. : ))

Merci d'avance à tous !

 
NickXXX:

Bonsoir à tous !

La question suivante concernant les tableaux s'est posée.

Supposons que nous voulions analyser n barres pour une oscillation particulière, la sélectionner, la stocker dans un tableau et travailler avec cette...

Rire après le mot indicateur.

Il est plus facile de créer un indicateur, qui possède déjà huit tableaux de tampons, d'y mettre toute la logique et d'adresser ensuite les éléments requis par le biais d'iCustom.

En print/alert, l'ensemble du tableau est quelque peu illisible, mais grâce à l'énumération et à la création d'une longue chaîne dans la boucle, c'est tout à fait possible.

3. Sélectionnez par exemple 3, 6, 7 éléments et calculez leur somme ? ???

Soit vous ne plaisantez pas avec ça, soit vous lisez la documentation.

double Summa=Mas[3]+Mas[6]+Mas[7];

Lectures recommandées https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

 
splxgf:

Rire après le mot indicateur.

Il est plus facile de créer un indicateur, il dispose déjà de huit tableaux tampons, de lui transférer toute la logique, puis d'adresser les éléments nécessaires via iCustom.

En print/alert, le tableau entier est un peu illisible, mais par l'énumération et la création d'une longue chaîne dans la boucle, c'est tout à fait possible.

Soit vous ne faites pas de bêtises comme ça, soit vous lisez la documentation.

double Summa=Mas[3]+Mas[6]+Mas[7];

Lectures recommandées https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

Oui, vous n'avez pas besoin de demander pour summa). Et il ne s'agit pas de l'indicateur ici. C'est plutôt un exemple pour que je puisse manipuler les tableaux correctement.

J'ai déjà vu l'article recommandé mais il ne m'a pas aidé à traiter cette question.

Ma question est donc toujours d'actualité... Comment construire un tableau dans cet exemple ? Je vous serais très reconnaissant si vous pouviez me donner le code pour plus de clarté. De cette façon, il est plus facile de comprendre ce dont nous parlons.

 

mieux que les indicateurs de fumée, tous les calculs sont liés aux barres, et la numérotation des barres commence à zéro et le tableau est décalé à chaque nouvelle barre. L'utilisation d'un indicateur vous permettra de transférer la logique de travail avec les tableaux au système, tout en ajoutant des capacités visuelles et une utilisation facile à partir d'un EA.

Faites un indicateur, sinon il est très difficile de lier les éléments calculés du tableau aux barres du graphique.

 
splxgf:

mieux que les indicateurs de fumée, tous les calculs sont liés aux barres, et la numérotation des barres commence à zéro et le tableau est décalé à chaque nouvelle barre. L'utilisation d'un indicateur vous permettra de transférer la logique de travail avec les tableaux au système, et ajoutera des capacités visuelles, tout en étant facile à utiliser à partir d'un EA.

Créez l'indicateur, sinon il sera très difficile de lier les éléments calculés du tableau aux barres du graphique.

Ok, je comprends, il est préférable de tout lire dans l'indicateur et d'envoyer les valeurs à l'Expert Advisor.

Mais le problème ici est un peu différent, je ne peux pas remplir le tableau avec des données, il affiche des zéros. Je veux le comprendre.

Encore une fois, en utilisant cet exemple. En se liant aux barres que j'ai, il suffit d'aller séquentiellement à i et de trouver la bonne condition close_1>close_2&close_2<close_3 (juste pour l'exemple).

Et maintenant, la chose la plus intéressante est que nous avons calculé diff=close_1-close_2. Comment mettre cette valeur de diff dans un tableau ?

Je pense qu'avec la taille, nous pouvons créer une variable supplémentaire int n et l'augmenter de 1 (n++) dans la condition if, nous obtiendrons combien de fois la condition a fonctionné et nous prendrons ce nombre comme taille.

Mais quand même, comment mettre la valeur de la différence dans un tableau ???

 
NickXXX:

Je comprends, il est préférable de tout lire dans l'indicateur et d'envoyer les valeurs à l'Expert Advisor.

Mais la question est un peu différente, je ne peux pas remplir le tableau avec des données, il me sort des zéros. Je veux le comprendre.

Encore une fois, en utilisant cet exemple. En se liant aux barres que j'ai, il suffit d'aller séquentiellement à i et de trouver la bonne condition close_1>close_2&close_2<close_3 (juste pour l'exemple).

Et maintenant, la chose la plus intéressante est que nous avons calculé diff=close_1-close_2. Comment mettre cette valeur de diff dans un tableau ?

Je pense que nous pouvons créer une variable supplémentaire int n et l'augmenter de 1 (n++) dans la condition if, nous obtiendrons le nombre de fois où la condition a fonctionné et nous prendrons ce nombre comme dimension.

Mais comment mettre la valeur de la différence dans le tableau ?

Ecoutez, je suis probablement en train de faire des caprices en ce moment, mais je suppose que vous êtes déconcerté par le fait que j'utilise un script dans cet exemple. Vous le pensiez vraiment quand vous avez écrit sur l'indicateur ? Si c'est le cas, alors je fais tous les calculs dynamiques dans un indicateur ou dans un conseiller expert directement. Je l'ai juste lancé une fois, l'ai regardé et ai ensuite corrigé le code))).

La question précédente est toujours d'actualité. Le sujet du tableau n'est pas résolu).

Raison: