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

 
ANDREY:

Heureux d'avoir pu vous aider :=) :=) :=)

Maintenant, parlons de mon code, qui est probablement si mauvais qu'il est désagréable d'y fouiller. Mais dites-moi au moins quel serait l'avantage de mon code, si j'avais écrit un seul tableau (avec les valeurs des prix) de ce code dans un fichier et ensuite le programme le lirait à partir de ce fichier et utiliserait ses valeurs dans d'autres calculs, avec un tableau de seulement 60 éléments. Qu'est-ce qui serait optimal dans mon code ?
Merci de votre aide.

Il ne s'agit pas de la qualité du code. Je ne regarde pas le code d'autres personnes. Sauf pour celui dont j'ai besoin ou dans l'agonie d'une crise de charité, :=))) mais cela arrive de moins en moins souvent...

Si vous le souhaitez, vous pouvez décrire en mots ce qui est nécessaire comme résultat et ce que vous avez fait pour cela. On saura alors dans quelle mesure le problème va dans le bon sens.

 
Alexey Viktorov:

ou dans les affres d'un accès de charité, :=))) ....

J'ai lu que les rechutes peuvent survenir au début du printemps. J'aimerais que votre rémission se termine plus tôt :=))).

Et j'aimerais que vos attaques soient aussi fréquentes que possible ..... :=)) :=)))

 
ANDREY:

Merci pour le conseil. J'ai déjà commencé à lire la section OPÉRATIONS DE FICHIER du manuel de Kovalev. En effet... quelque chose commence à devenir clair. J'ai compris que tous les EAs que je teste lisent les fichiers texte avec les prix des barres (bien qu'ils n'aient pas été créés par mon programme) avec l'extension .cvv dans le répertoire du terminal Tester.
En d'autres termes, les informations (données) de tout programme sont écrites dans le fichier et ces données sont lues à partir du fichier, également par tout programme. Il me semble que les fichiers stockent une grande quantité de données qu'il n'est pas raisonnable de stocker dans le programme. Quelque chose comme un fichier mqh.
Si vous voulez m'expliquer ce que signifie la phrase d'Alexey Victorov : "....Voulez-vous écrire .csv et lire array....." du post en référence à mon code du post
. Je pensais qu'il voulait dire le fichier texte .cvv, avec les prix des barres du répertoire du testeur. Mais ce qu'il veut dire exactement, je ne le comprends toujours pas. Ce n'est pas moi qui écris ces fichiers .cvv, mais le programme du revendeur Alpari... Comment le programme lit dans un tableau - en général, je comprends un peu ... Elle accède à une cellule d'un tableau par son adresse, entre dans la cellule et accède à la valeur de la cellule (c'est-à-dire la lit). Comment un programme peut-il lire dans un tableau au lieu d'en sortir ? Il s'agit d'une contradiction insoluble .... me semble-t-il dans mon opinion de profane. Je pense, pour une raison quelconque, que dans un tableau , on ne peut écrire que certaines valeurs. Et vous ne pouvez lire qu'à partir d' un tableau.

L'écriture d'un tableau en binaire n'a pas de Kovalev. Le manuel date de 2009. Il n'y avait que des fichiers binaires. Et le tableau du fichier bin est apparu plus tard. Les fichiers bin sont écrits et lus plus rapidement. Ils n'ont pas d'alimentation en ligne. Mais ils ne sont pas lisibles pour les humains).

 
Valeriy Yastremskiy:

Kovalev n'a pas d'enregistrement de tableau bifile. Le manuel date de 2009. Il n'y avait que des fichiers binaires. Et le tableau du fichier bin est apparu plus tard. Les fichiers bin sont écrits et lus plus rapidement. Ils n'ont pas d'alimentation en ligne. Mais ils ne sont pas lisibles pour les humains).

Merci beaucoup pour ces informations, qui sont nouvelles pour moi. Et je le comprends à 50%.... J'étudierai ce thème en profondeur, si je suis sûr d'en avoir besoin au stade actuel de mon développement.
Pour le moment, je me suis concentré sur mon petit code , en essayant de trouver le prix minimum entre 2 ordres adjacents ouverts sur une bougie d'une minute avec 2 points de différence, en utilisant un minimum de temps et d'autres ressources informatiques. Pour cela, j'ai créé un tableau. Certaines personnes tentent de me convaincre ici que ce tableau doit être écrit dans un fichier à l'aide d'une fonction, puis qu'une autre fonction doit être utilisée pour récupérer les données du fichier (c'est-à-dire du tableau) pour d'autres calculs.

Mais où serait l'avantage si j'écrivais un seul tableau (avec les valeurs des prix) de ce code dans un fichier, puis que le programme le lise à partir de ce fichier et utilise ses valeurs dans les calculs ultérieurs ? Et le tableau ne contiendrait que 60 éléments. Qu'est-ce qui serait optimal dans mon code, exactement ?

Naturellement, au cours des tests, Il y aura beaucoup de commandes de ce type à l'intérieur des bougies minutes, entre lesquelles nous devrons calculer le minimum, il y en aura beaucoup.. Mon code n'est que l'illustration d'une idée qui m'est venue.
Alexey Viktorov ne peut pas répondre à cette question car il n'a pas encore eu de crise de charité ..... et il n'a pas eu l'agonie et les convulsions qui y sont liées :=).
Peut-être avez-vous déjà mis en place toutes les conditions préalables pour m'aider à avancer.


Merci pour votre aide.

 
ANDREY:

il est difficile de comprendre le créateur du Graal. Il est possible de passer tous les calculs à l'indicateur et d'obtenir un signal dans le conseiller expert.

 
ANDREY:

Merci beaucoup pour ces informations qui sont nouvelles pour moi. Et j'en ai compris 50%.... Et si je suis sûr d'en avoir besoin à ce stade de mon développement, j'étudierai ce sujet en profondeur.
En ce moment, je me suis concentré sur mon code , en essayant de trouver le prix minimum entre 2 ordres adjacents ouverts sur une bougie d'une minute avec 2 points de différence, en utilisant un minimum de temps et d'autres ressources informatiques. Pour cela, j'ai créé un tableau. Certaines personnes tentent de me convaincre ici que ce tableau doit être écrit dans un fichier à l'aide d'une fonction, puis qu'une autre fonction doit être utilisée pour récupérer les données du fichier (c'est-à-dire du tableau) pour d'autres calculs.

Mais où serait l'avantage si j'écrivais un seul tableau (avec les valeurs des prix) de ce code dans un fichier, puis que le programme le lise à partir de ce fichier et utilise ses valeurs dans les calculs ultérieurs ? Et le tableau ne contiendrait que 60 éléments. Qu'est-ce qui serait optimal dans mon code, exactement ?

Naturellement, pendant les tests, Il y aura beaucoup de commandes de ce type à l'intérieur des chandeliers minute entre lesquels nous devrons calculer le minimum, il y en aura beaucoup.. Mon code n'est que l'illustration d'une idée qui m'est venue.
Alexei Viktorov ne peut pas répondre à cette question, car il n'a pas encore eu d'attaque charitable ..... et il n'a pas eu l'agonie et les convulsions qui y sont liées :=).
Peut-être avez-vous déjà mis en place toutes les conditions préalables pour m'aider à avancer.


Merci pour votre aide.

Je ne comprends pas du tout la logique. Pourquoi avoir besoin d'écrire un couple de données dans un tableau ? Vous pouvez les écrire dans des variables. On parle de tableau lorsqu'il y a plusieurs variables du même type. Et s'il y en a moins de 5, vous pouvez les stocker dans des variables. Pourquoi les données stockées dans le tableau devraient-elles être écrites dans un fichier qui peut être lu plus tard dans le même Expert Advisor ? Ils sont disponibles de toute façon. Ils sont écrits dans le fichier pour l'échange entre différents Expert Advisors ou pour un traitement ultérieur, pas dans cet EA. En outre, le tableau est toujours global, si je ne me trompe pas.

 
ANDREY:

Merci beaucoup pour ces informations qui sont nouvelles pour moi. Et j'en ai compris 50%.... Et si je suis sûr d'en avoir besoin à ce stade de mon développement, j'étudierai ce sujet en profondeur.
En ce moment, je me suis concentré sur mon code , en essayant de trouver le prix minimum entre 2 ordres adjacents ouverts sur une bougie d'une minute avec 2 points de différence, en utilisant un minimum de temps et d'autres ressources informatiques. Pour cela, j'ai créé un tableau. Certaines personnes tentent de me convaincre ici que ce tableau doit être écrit dans un fichier à l'aide d'une fonction, puis qu'une autre fonction doit être utilisée pour récupérer les données du fichier (c'est-à-dire du tableau) pour d'autres calculs.

Mais où serait l'avantage si j'écrivais un seul tableau (avec les valeurs des prix) de ce code dans un fichier, puis que le programme le lise à partir de ce fichier et utilise ses valeurs dans les calculs ultérieurs ? Et le tableau ne contiendrait que 60 éléments. Qu'est-ce qui serait optimal dans mon code, exactement ?

Naturellement, pendant les tests, Il y aura beaucoup de commandes de ce type à l'intérieur des chandeliers minute entre lesquels nous devrons calculer le minimum, il y en aura beaucoup.. Mon code n'est que l'illustration d'une idée qui m'est venue.
Alexei Viktorov ne peut pas répondre à cette question, car il n'a pas encore eu d'attaque charitable ..... et il n'a pas eu l'agonie et les convulsions qui y sont liées :=).
Peut-être avez-vous déjà mis en place toutes les conditions préalables pour m'aider à avancer.


Merci pour votre aide.

Le début est si loin, qu'il est difficile de répondre en détail... Mais j'essaierai quand même de faire preuve d'intelligence...

Si je me souviens bien, vous devez déterminer le moment où le bas s'est formé sur la bougie dans laquelle l'ordre a été ouvert. Lorsque ce chandelier est en cours, ce n'est pas un problème : nous mettons le plus petit des deux nombres dans la variable et nous faisons cela jusqu'à ce que le chandelier se ferme. Mais si nous devons le déterminer alors que cette bougie est déjà la 10ème, alors c'est déjà un problème pour mql4. Il est très facile de le faire dans mql5, il suffit de copier "de et vers" les ticks de temps sélectionnés, et le tableau contiendra tout ce dont vous avez besoin. Mais pour mql4, on vous a suggéré d'écrire les ticks dans un fichier, de sorte que plus tard vous puissiez récupérer ces ticks et utiliser ce tableau pour déterminer si le Low de ce chandelier est inférieur à la valeur minimale du tableau, cela signifie que le Low était avant l'ouverture de l'ordre. S'ils sont égaux, cela signifie que la dépression s'est formée après l'ouverture de l'ordre.

Cependant... si l'EA fonctionne, il suffit de le déterminer dans une variable, comme cela est décrit ici; il existe une fonction à cet effet que vous pouvez lire dans la documentation à la section Fonctions mathématiques ; si l'EA ne fonctionne pas pour une raison quelconque, il n'enregistrera pas les ticks et ne les obtiendra même pas.

 
Alexey Viktorov:

Ledébut est si loint ain qu'il est difficile de répondre en détail... Mais je vais essayer de faire preuve d'intelligence...

Si je me souviens bien, vous devez déterminer quand s'est formé le Low de la bougie sur laquelle l'ordre a été ouvert. Lorsque ce chandelier est en cours, ce n'est pas un problème : nous mettons le plus petit des deux nombres dans la variable et nous faisons cela jusqu'à ce que le chandelier se ferme. Mais si nous devons le déterminer alors que cette bougie est déjà la 10ème, alors c'est déjà un problème pour mql4. Il est très facile de le faire dans mql5, il suffit de copier "de et vers" les ticks de temps sélectionnés, et le tableau contiendra tout ce dont vous avez besoin. Mais pour mql4, on vous a suggéré d'écrire les ticks dans un fichier, de sorte que plus tard vous puissiez récupérer ces ticks et utiliser ce tableau pour déterminer si le Low de cette bougie est inférieur à la valeur minimale du tableau, cela signifie que le Low était avant l'ouverture de l'ordre. S'ils sont égaux, cela signifie que la dépression s'est formée après l'ouverture de l'ordre.

Cependant... si l'EA fonctionne, il suffit de le stocker dans une variable, comme il est décrit ici, il existe une fonction à cet effet que vous pouvez lire dans la documentation à la section Fonctions mathématiques.

Merci beaucoup pour les nouvelles informations pour me...., en particulier sur les capacités de mql4 par rapport à mql5 dans ce cas. Cependant, aussi étrange que cela puisse paraître, la tâche que vous décrivez, je l'ai résolue moi-même et la façon dont elle a été résolue m'a surpris par son originalité et son optimalité.
Après cela, j'ai rencontré un autre problème similaire
On m'a demandé d'écrire les ticks dans un fichier,

Au lieu d'écrire les ticks dans un fichier, j'ai créé un code, qui résout ma tâche sans écrire les ticks dans un fichierEn utilisant ce code, j'essaie de trouver le prix minimum entre 2 ordres adjacents ouverts à la bougie d'une minute avec 2 points de différence en utilisant lemoins de temps et d'autres ressources informatiques. Bien sûr, il y aura beaucoup de ces ordresà l'intérieur de chandeliers d'une minute entre lesquels nous devrons calculer le minimum. C'est juste une illustration de mon idée.

Et maintenant, je suis intéressé par la réponse à la question : Quel serait l'avantage de mon code si j'avais écrit les ticks dans un fichier, comme vous me l'avez conseillé ?Qu'est-ce qui serait exactement optimal dans mon code ?


Sur cette question, la lumière a été faite par Valeriy Yastremskiy. Mais j'aimerais écouter les commentaires de quelqu'un qui m'a conseillé de mettre les tics dans un fichier.
Merci pour votre aide.

 
Valeriy Yastremskiy:

La logique est un peu floue. Pourquoi écrire des paires de données dans un tableau. Vous pouvez les écrire dans des variables. On parle de tableau lorsqu'il y a plusieurs variables du même type. Et s'il y en a moins de 5, vous pouvez les stocker dans des variables. Pourquoi les données stockées dans le tableau devraient-elles être écrites dans un fichier qui peut être lu plus tard dans le même Expert Advisor ? Ils sont disponibles de toute façon. Ils sont écrits dans le fichier pour l'échange entre différents Expert Advisors ou pour un traitement ultérieur, pas dans cet EA. En outre, le tableau est toujours global, si je ne me trompe pas.

Merci pour le conseil. Je suis d'accord, parfois il peut y avoir 5 tics ou moins. Mais dans une bougie d'une minute, il peut y avoir beaucoup plus de ticks que de secondes et leur nombre entre des ordres adjacents peut également être bien supérieur à 5.
J'étais particulièrement heureux que mes pensées coïncident avec le rouge surligné. Mais je n'étais pas sûr d'eux alors que des camarades plus expérimentés renforçaient mon incertitude.

 
ANDREY:

Merci beaucoup pour les nouvelles informations pour me...., en particulier sur les capacités de mql4 par rapport à mql5 dans ce cas. Cependant, aussi étrange que cela puisse paraître, j'ai résolu moi-même le problème décrit ci-dessus et j'ai été surpris par son originalité et son optimalité .
J'ai ensuite été confronté à un autre problème similaire formulé dans ce post.

chaque tick. Je sais aussi comment le faire avec un cycle au moment de X+2. Et comment le faire en une seule fois au moment de X+2 comme dans le cas de iLow etiLowest.
Je vous serais très reconnaissant si vous pouviez m'apprendre à le faire.
Merci


On m'a conseillé d'enregistrer les tiques dans un dossier

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading.

Toute question des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.

Alexey Viktorov, 2021.04.09 18:33

Vous pouvez. Vous devez écrire dans votre fichier .bin en utilisant l'option

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

et lire

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );

J'ai créé un code qui résout mon problème sans écrire les ticks dans un fichier au lieu de les écrire dans un fichier

l'écrire dans un fichier? Comme dans mon code. Il ne s'agit pas d'un code de travail mais d'illustrer mon idée de comment trouver le minimum entre deux ordres adjacents ouverts sur un chandelier d'une minute
Merci pour votre aide.

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

Cela signifie que j'ai écrit les prix de chaque tick directement dans un tableau, et non dans un fichier.


Avecce code, j'essaie de trouver le prix minimum entre deux ordres adjacents ouverts sur une bougie d'une minute avec une différence de 2 pointsen utilisant le moins de temps et d'autres ressources informatiques. Bien sûr, il y aura beaucoup de ces ordresà l'intérieur de chandeliers d'une minute entre lesquels nous devrons calculer le minimum. C'est juste une illustration de mon idée.

Et maintenant, je suis intéressé par la réponse à la question : Quel serait l'avantage de mon code si j'avais écrit les ticks dans un fichier, comme vous me l'avez conseillé ?Qu'est-ce qui serait exactement optimal dans mon code ?


Sur cette question, la lumière a été faite par Valeriy Yastremskiy. Mais j'aimerais écouter les commentaires de quelqu'un qui m'a conseillé de mettre les tics dans un fichier.
Merci pour votre aide.

Pour ne pas fatiguer ceux qui essaient d'aider, en particulier moi, il est préférable de mettre le message "dans sa poche" et de le coller au lieu d'établir un lien vers lui.

Maintenant, à propos de ce problème : l'ordre n°1 a été ouvert... à ce moment-là, le prix bas est bien sûr inférieur au prix d'ouverture de l'ordre. Eh bien, avouons-le...

L'ordre numéro 2 est ouvert et nous devons contrôler le prix à ........... Nous utilisons à nouveau la fonction mathématique fmin() pour écrire dans la variable la valeur avant la fermeture de la bougie. Une fois que la bougie est fermée, nous arrêtons le contrôle des prix, nous n'en avons plus besoin. La valeur obtenue sera le prix minimum dans l'intervalle de temps entre l'ouverture du second ordre et la fermeture de la bougie. Ou peut-être que je me trompe...

Raison: