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

 
Bonjour à tous, la question est la suivante :
Je fais un netmaker avec martin, mais pas un à la fois, mais un général (tous les ordres et grilles s'ouvrent comme des signaux, pas un à la fois) ! J'ai rencontré un problème .... quand un ordre ou sa grille se déclenche, tout fonctionne bien, mais quand un ordre ou sa grille s'ouvre puis en même temps (ou plus tard) un autre ordre et sa grille s'ouvre, le martin commence à continuer la première grille ! Quel pourrait être le problème ?
 
Artyom Trishkin:

Ok. Mais je ne peux m'y intéresser que pendant mon temps libre - travail, maison, famille, chat et enfants/petits-enfants... Belle-mère, oui...

Oui, les chats...

Je suis parti quelque part aujourd'hui pour faire une litière.

Une belle petite fille écossaise qui aime dormir sur le dos :)

 
Artyom Trishkin:

Eh bien, regardez le code - Vitaly l'a posté directement

Ma question n'avait rien à voir avec le code de Vitaly. Maintenant, j'ai trouvé moi-même... il s'avère que le code de la bibliothèque contrôle la profondeur de recalcul elle-même. C'est-à-dire que la première exécution recalcule la totalité du tampon, et les suivantes, juste la bonne quantité... C'est ce que je voulais entendre de votre part. Je suis paresseux comme ça. C'est plus facile de demander que de se débrouiller tout seul... Mais parfois, je dois le faire. ............

 
Alexey Viktorov:

Ma question n'avait rien à voir avec le code de Vitaly. Maintenant, j'ai trouvé moi-même... il s'avère que le code de la bibliothèque contrôle la profondeur de recalcul elle-même. C'est-à-dire que la première exécution recalcule la totalité du tampon, et les suivantes, juste la bonne quantité... C'est ce que je voulais entendre de votre part. Je suis paresseux comme ça. C'est plus facile de demander que de se débrouiller tout seul... Mais parfois, je dois le faire. ............

Donc, le code de Vitali a dupliqué cette fonction de SB, que vous avez demandé - et tout est là en évidence - un regard suffit pour comprendre la réponse à votre question.

 
Artyom Trishkin:

Le code de Vitaly a donc dupliqué cette fonction du SB que vous avez demandé - et tout est là, bien en vue - un simple coup d'oeil suffit pour comprendre la réponse à votre question.

Tu as vu l'étroitesse de l'original ?

 
Vitaly Muzichenko:

Tu as vu comme l'original est dur ?

Je ne l'ai pas vraiment comparé. A mon avis, il y a de l'étroitesse dans les deux dossiers. Et la logique n'est pas claire du tout - lorsque la condition est vide et que l'on remplit le tampon avec une valeur vide, on sort des parenthèses de la condition. Eh bien, mon travail est d'arriver à un A. Je ne me soucie pas de la manière dont cela fonctionne - laissez les choses telles qu'elles sont.

 
Artyom Trishkin:

Je n'ai pas fait beaucoup de comparaisons. Je pense que c'est un désordre dans les deux dossiers. Et la logique n'est pas claire du tout - lorsque la condition est vide et que l'on remplit le tampon avec une valeur vide, on sort des parenthèses de la condition. Eh bien, mon travail est d'arriver à un A. Je vais le laisser tel quel.

Ma tâche est de comprendre sur ce code comment remplaceriMAOnArray

C'est-à-dire qu'il faut apporter le moins de changements possible au code existant et rendre
 
Artyom Trishkin:

Ainsi, dans le code de Vitaly, cette fonction a été dupliquée à partir de SB que vous avez demandé - et tout est là, bien en vue - il suffit d'un regard pour comprendre la réponse à votre question.

Eh bien, tu l'as attrapé... Je ne sais pas comment faire ça. Je dois parcourir tout le code de manière approfondie et le comprendre.

 
Vitaly Muzichenko:

Ma tâche consiste à comprendre comment remplaceriMAOnArray dans ce code.

C'est-à-dire apporter le moins de changements possible au code existant et l'utiliser pour

En essayant de comprendre cette question, je vois la situation suivante.

Dans votre code, il est écrit ceci

buf_3[i] = iMAOnArray(Array_1, 0, per, 0, MODE_SMMA, i);

et dans la documentation

double  iMAOnArray( 
   double       array[],          // массив 
   int          total,            // количество элементов 
   int          ma_period,        // период 
   int          ma_shift,         // сдвиг средней 
   int          ma_method,        // метод усреднения 
   int          shift             // сдвиг 
   );
iMAOnArray

total

[in] Nombre d'éléments à calculer. 0 signifie tous les éléments du tableau.

Il s'avère que chaque fois que la fonction est appelée, le tableau entier est recalculé. C'est exactement ce que j'ai demandé à Artem... Mais il s'avère que mql5 fournit tout pour l'accélération, alors que dans mql4 vous devez vous en occuper vous-même. Mais je ne vois pas d'informations sur la façon de le faire correctement.


Quant à le refaire avec des changements minimes, vous avez tort. C'est plus facile de prendre l'algorithme et de le refaire.

 

Bonjour, s'il vous plaît, aidez-moi à comprendre...

   HighForFutureSession=MathMax(high[rates_total-1],high[rates_total-2]);

MathMax renvoie le maximum de deux valeurs numériques, c'est-à-dire qu'il renvoie la valeur numérique maximale de deux tableaux identiques high[rates_total] avec une différence de -1 et -2 barres ?

En d'autres termes : dans le premier tableau 12345 et dans le second 1234, la fonction renverra 5 ?

Raison: