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

 
Вадим Мотеюнас:
https://www.mql5.com/ru/docs/basis/operators
 
ArturR:

1. Oui, il y a un cas pour la barre zéro dans le code, pas de possibilité de vérifier quel cas a été testé maintenant, je vais vérifier ce soir.

2. Je l'ai vérifié en sortant un commentaire sur le graphique avec des valeurs, macd, High et Low ont des valeurs, mais le prix min(max) n'a pas de valeurs correspondantes.

J'aurais besoin de voir comment ces variables sont déclarées. On soupçonne qu'il s'agit de variables locales qui sont remises à zéro à chaque entrée dans la fonction. Par conséquent, les moments où ils sont avec des valeurs que vous n'avez tout simplement pas le temps de voir. Pour connaître les valeurs, regardez le contenu du journal. Après tout, il y a de l'impression dans le code.

 

Bonjour. J'ai une tâche, sur 1000 lignes de fichier csv, je dois sélectionner les correspondances de paramètres du champ N et renvoyer tout type de valeur des autres champs de l'enregistrement trouvé. Pouvez-vous me dire s'il existe un expert qui étudie le dossier et prend des décisions commerciales ? Merci.

 
mwwm:

Bonjour. J'ai une tâche, sur 1000 lignes de fichier csv, je dois sélectionner les correspondances de paramètres du champ N et renvoyer tout type de valeur des autres champs de l'enregistrement trouvé. Pouvez-vous me dire s'il existe un expert qui étudie le dossier et prend des décisions commerciales ? Merci.

Il faut probablement chercher ceux qui fonctionnent avec les nouvelles dans la base de code.

 
Ihor Herasko:

Vous n'avez tout simplement pas le temps de voir. Pour connaître les valeurs, regardez le contenu du carnet de bord. Après tout, il y a de l'impression dans le code.

Oui, merci.) Je n'ai pas remarqué cet enregistrement parmi d'autres bêtises dans le journal. Merci encore à tous ceux qui ont répondu, je vais continuer à faire le ménage).

 
Comment calculer la barre d'indice pour que la valeur corresponde à la logique suivante : si la période actuelle du graphique M15, et le timeframe de l'indicateur appelé avec la fonction (MTF) = H1, la barre d'indice 5, c'est-à-dire le fait de fermer la barre H1, si la période actuelle du graphique M30, et le timeframe de l'indicateur appelé avec la fonction (MTF) = H1, la barre d'indice 3, si la période actuelle du graphique M5, et le timeframe de l'indicateur appelé avec la fonction (MTF) = M15, la barre d'indice 4.
 
lil_lil:
Quel calcul de l'indice de la barre doit être fait, pour que la valeur corresponde à la logique suivante : si la période actuelle du graphique M15 et l'indicateur timeframe appelé avec la fonction (MTF) = H1, l'indice de la barre 5, c'est-à-dire le fait de fermer la barre H1, si la période actuelle du graphique M30 et l'indicateur timeframe appelé avec la fonction (MTF) = H1, alors l'indice de la barre 3, si la période actuelle du graphique M5 et l'indicateur timeframe appelé avec la fonction (MTF) = M15, l'indice de la barre 4.

L'erreur ici est dans la logique même. Le TF actuel pourrait être M15, et la dernière barre M15, qui correspond à la barre H1 qui s'est formée, serait 1. Ou bien elle pourrait être 2, ou 3, ou 4, mais pas plus. Par exemple, il est maintenant 10:06. Les indices des barres M15 et H1 actuelles sont 0, les barres précédentes dans les deux TF sont 1 et la dernière barre M15 qui correspond au H1 fermé est également 1. A 10:15 la situation changera : la dernière barre M15 qui a formé le H1 aura l'indice 2, à 10:30 il sera 3 et à 10:45 il sera 4.

Les calculs mathématiques ne seront pas d'un grand secours ici. Nous devons rechercher les barres correspondantes sur le graphique. L'algorithme est le suivant :

  1. Déterminer l'heure d'ouverture du zéro bar H1. (iTime)
  2. Identifiez l'indice de la première barre du cadre temporel actuel, qui correspond à l'heure d'ouverture de la barre zéro H1. (iBarShift)
  3. Ajoutez 1 à l'indice de la barre trouvée.

 
Ihor Herasko:

L'erreur ici est dans la logique même. Le TF actuel pourrait être M15, et la dernière barre M15, qui correspond à la barre H1 qui s'est formée, serait 1. Ou bien elle pourrait être 2, ou 3, ou 4, mais pas plus. Par exemple, il est maintenant 10:06. Les indices des barres M15 et H1 actuelles sont 0, les barres précédentes dans les deux TF sont 1 et la dernière barre M15 qui correspond au H1 fermé est également 1. A 10:15 la situation changera : la dernière barre M15 qui a formé le H1 aura un indice 2, à 10:30 il sera 3 et à 10:45 il sera 4.

Les calculs mathématiques ne seront pas d'un grand secours ici. Nous devons rechercher les barres correspondantes sur le graphique. L'algorithme est le suivant :

  1. Déterminer l'heure d'ouverture du zéro bar H1. (iTime)
  2. Identifiez l'indice de la première barre du cadre temporel actuel, qui correspond à l'heure d'ouverture de la barre zéro H1. (iBarShift)
  3. Ajoutez 1 à l'indice de la barre trouvée.

Probablement que je n'ai pas tout dit. L'indicateur tire sur la barre zéro du cadre temporel supérieur, conditionnellement H1, respectivement pour toutes les 4 barres du cadre temporel actuel, M15. C'est pourquoi j'ai besoin de l'indice 5 sur M15 pour savoir s'il y a un signal à la clôture de H1. Il est sûrement possible de calculer cet indice pour éviter d'écrire un tas de conditions pour chaque variante de combinaisons de périodes hautes et courantes.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) timef = 5;//timef = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M30) timef = 3;//timef = 2;


Ajk=NormalizeDouble(iCustom(NULL,0,"Ajk",TimeFrame,4,i+timef),Digits);
 
lil_lil:

L'indicateur s'appuie sur la barre zéro de l'échelle de temps supérieure, généralement H1, respectivement sur les 4 barres de l'échelle de temps actuelle, M15.

C'est ce que je dis, les barres du cadre temporel actuel peuvent être plus petites - 1, 2 ou 3. Autrement dit, les relevés ne seront pas toujours affichés sur 4 barres. Le seul cas d'affichage à 4 barres est la dernière barre du TF actuel qui correspond à une barre zéro H1. Pour cette formulation du problème, il suffit de trouver la première barre du TF actuel qui correspond à la barre zéro H1 :

int nCurTFBarIndex = iBarShift(NULL, 0, iTime(NULL, PEPRIOD_H1, 0));

Ensuite, les données seront affichées à partir de la barre zéro du TF actuel jusqu'à nCurTFBarIndex inclus.

C'est pourquoi j'ai besoin de l'indice 5 spécifiquement sur le TF M15, pour savoir à la clôture H1 s'il reste un signal ou pas. Il est sûrement possible de calculer cet indice pour éviter d'écrire un tas de conditions pour chaque variante de combinaison de périodes supérieures et actuelles.

De quel TF le signal est-il tiré : de l'actuel, du H1 ou d'une version mixte ? Si c'est seulement à partir de H1, alors il n'y a pas besoin de chercher quoi que ce soit, car la dernière barre formée aura toujours l'indice 1.

 
Ihor Herasko:

De quel TF le signal est-il tiré : courant, H1 ou une version mixte ? Si c'est seulement à partir de H1, alors il n'y a pas besoin de chercher quoi que ce soit, car la dernière barre formée aura toujours l'indice 1.

Je place H1 dans les paramètres externes de l'indicateur MTF et je l'attache au graphique M15. Le signal clignote pendant 4 barres. Lorsque la barre H1 est fermée, le signal ne clignote pas et sur M15, le signal cesse de clignoter sur la barre 4. Si je le mets sur М1, respectivement, il arrête de clignoter sur la mesure 60. Il est nécessaire de calculer l'indice i+N pour que N varie en fonction de la période sélectionnée dans les paramètres et sur le graphique de la période, dans lequel l'indicateur est attaché.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) N = 5;// ВОЗМОЖНО НУЖНО N = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M1) N = 61;//А ЗДЕСЬ ВОЗМОЖНО N = 60;