Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1612

 
Alexey Viktorov #:

Stupide au deuxième essai. Apparemment, l'heure est arrivée dans la soirée.

Je n'ai pas bien compris, mais je ne sais pas comment diviser l'instrument en devises.

Et il y a une probabilité d'égalité au milieu, je ne la vois pas tout de suite, mais il est préférable de faire une recherche complète pour l'égalité des noms de devises dans l'instrument de la 2ème à la 3ème position. Ou couper la 1ère et la dernière position et chercher dans les 4 chiffres restants)

 
Valeriy Yastremskiy #:

A B C D est correct, mais je ne comprends pas comment diviser l'instrument en devises.

Et il y a une probabilité d'égalité centrale, je ne l'ai pas vue tout de suite, mais il vaut mieux faire une recherche complète pour l'égalité des noms de devises dans l'instrument de la 2ème à la 3ème position. Ou couper la 1ère et la dernière position et chercher dans les 4 caractères restants).

Non, j'ai été stupide au deuxième essai seulement dans les 4 conditions. Après tout, pour la tâche, il importe peu de savoir dans quelle position l'élément souhaité sera trouvé, en zéro ou en troisième, l'essentiel étant de le trouver ou non. Par conséquent, il y a deux conditions, une pour la devise de base et une pour la deuxième devise.

 
Alexey Viktorov #:

Non, je suis resté muet au deuxième essai seulement dans les 4 conditions. Après tout, pour cette tâche, il importe peu de savoir à quelle position l'élément recherché sera trouvé, zéro ou troisième, l'essentiel étant qu'il soit trouvé ou non. Par conséquent, il y a deux conditions, une pour la devise de base et une pour la seconde.

J'ai donc exclu l'égalité médiane de la deuxième ou troisième position de l'instrument. Si elle n'est pas exclue, alors elle est correcte, à 2 conditions.

 
Valeriy Yastremskiy #:

Eh bien, j'excluais ainsi l'égalité moyenne, de la deuxième ou troisième position de l'instrument. Si vous n'excluez pas, vous avez raison, 2 conditions.

Je ne comprends toujours pas ce que signifie "égalité des points médians".

Signal sur EURUSD

Un ordre EURJPY - cherchez EUR et trouvez-le, l'éjection est vraie. La deuxième condition n'a pas besoin d'être vérifiée.

GBPJPY - cherchez l'EUR, ne le trouvez pas. cherchez l'USD, ne le trouvez pas, les lancers sont faux. Total deux conditions.

 
Alexey Viktorov #:

Je ne comprends toujours pas ce qu'est un "milieu égal".

Signal sur EURUSD

Ordre sur EURJPY - chercher EUR et trouver, éjection vraie. La deuxième condition n'a pas besoin d'être vérifiée.

GBPJPY - cherchez l'EUR, ne le trouvez pas. cherchez l'USD, ne le trouvez pas, les lancers sont faux. Total deux conditions.

EURJPY est égal à URJP

GBPJPY parmi BPJP

Je suis d'accord, c'est un cas rare. Mais c'est possible, à en juger par le grand nombre d'instruments.

 
Valeriy Yastremskiy #:

EURJPY égalité parmi URJP

GBPJPY parmi BPJP

Je suis d'accord, c'est un cas rare. Mais possible, à en juger par le grand nombre d'instruments.

Nah, je préfère rester sur ma longueur d'onde. Je trouve difficile de comprendre pourquoi...

 

Comment le constructeur fonctionne-t-il dans les structures ?

struct as{
  int a,
      b,
      c;
    void as(){
    b=0;c=0;
    a=b+c;
    }  
 };
as sir;
 

Bonjour ! Je me creuse la tête.

Celui qui n'est pas difficile, s'il vous plaît aider avec les commentaires.


1. Quel est le but de la variable "bb" et, par conséquent, de l'opérateur if (bb == 0) bb = i ; ?


2. si ((Time[i]>=BeginDateCalc && Time[i]<=EndDateCalc && NumberOfBars<=0)

|| (NumberOfBars>0 && NumberOfBars>=i))

Comment NumberOfBars peut-il être <= 0 et pour quoi faire ?


3. s += (High [i] - Low [i]) / Point;

A quoi sert la division par Point ?


4. Par la condition de la boucle for (i = Bars ; i > 0 ; i--) le compte va de la barre la plus "ancienne" à la barre la plus "jeune".

Pourquoi la variable b++ est incrémentée, mais pas décrémentée ?

//+----------------------------------------------------------------------------+
//|                                                          AverageRange.mq4  |
//|                                                    Ким Игорь В. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//|  14.09.2005  Скрипт для расчёта:                                           |
//|              средней волатильности инструмента High-Low                    |
//|              Возможность использования заданного количества баров          |
//+----------------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"
#property  show_inputs

extern datetime BeginDateCalc = D'2013.01.01';
extern datetime EndDateCalc   = D'2013.12.31';
extern int      NumberOfBars  = 100;         


//+----------------------------------------------------------------------------+
//|  script program start function                                             |
//+----------------------------------------------------------------------------+
void start() {
   int    i;           //счётчик
   int    b  = 0;      //использовано баров
   int    bb = 0;      //?????????????????????
   int    s =  0;      //сумма всех значений High - Low
   string st = "";     //строка вывода на экран    

  for (i = Bars; i > 0; i--) {
    
    if ((Time [i] >= BeginDateCalc && Time [i] <= EndDateCalc && NumberOfBars <= 0)
    || (NumberOfBars > 0 && NumberOfBars >= i)) {
      
      if (bb == 0) bb = i;
      s += (High [i] - Low [i]) / Point;
      
      b++;
    }
  }

  st =      "Начало: " + TimeToStr (Time [bb], TIME_DATE | TIME_MINUTES) + "\n";        // "/n" - это перенос строки
  st = st + "Конец: " + TimeToStr (Time [bb - b + 1], TIME_DATE | TIME_MINUTES) + "\n";
  st = st + "Использовано баров: " + b + "\n";
  st = st + "Средняя волатильность: " + s / b + " п.\n";
  
  Comment (st);
}
//+----------------------------------------------------------------------------+
 

Le bb contient l'indice de la barre de la première condition déclenchée. Cet indice est ensuite utilisé pour calculer l'heure de début du calcul.

NumberOfBars - cette variable est définie par l'utilisateur, et ce dernier n'est pas fiable et peut définir une valeur négative. Peut-être, la logique est que si NumberOfBars est non positif, le calcul est effectué entre la date de début et de fin, alors que s'il est positif, alors il est calculé par le nombre de chandeliers définis avec cette variable.

Le point est divisé en points (1,01051-1,01000)/Point=51 pour convertir les valeurs de la partie fractionnaire en points.

La variable bb après zéro n'est modifiée qu'une seule fois pendant toute l'opération du script. if (bb == 0)

 
Aleksei Stepanenko #:

Le bb contient l'indice de la barre de la première condition déclenchée. Cet indice est ensuite utilisé pour calculer l'heure de début du calcul.

NumberOfBars - cette variable est définie par l'utilisateur, et ce dernier n'est pas fiable et peut définir une valeur négative. La logique est peut-être que si NumberOfBars est non positif, le calcul est effectué entre les dates de début et de fin.

Mais le point est divisé pour transférer les valeurs de la partie fractionnaire aux points 0.00051/Point=51

La variable bb après zéro n'est modifiée qu'une seule fois pendant toute l'opération du script.

Pour être honnête, je ne comprends pas la logique de Kim, pourquoi les conditions de temps de barre dépassant la valeur spécifiée et le nombre de barres calculées avec OU le nombre de barres calculées est supérieur au nombre de barres Barz)))). Et en même temps, il corrige juste les paramètres personnalisés).

Et il n'affiche même pas une alerte indiquant que l'utilisateur s'est trompé).