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

 
Alexey Viktorov:

J'ai donné une fractale comme exemple. Et la façon dont vous définissez le minimum (dans votre cas) est un secret militaire... ou une incompréhension totale de ce qui est demandé.

Mon code se compose de plusieurs chaînes et vous pouvez voir à l'œil nu comment le minimum est défini

Le minimum est défini dans les lignes jaunes

void OnTick()//484
{
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
 
MakarFX:

vous n'avez pas besoin de compter les barres

Après l'ouverture de l'ordre, on attribue à la variable la valeur Low[0] (minimum de la barre courante), puis après la fermeture de la barre, si la valeur Low[1] est inférieure à la variable, on lui attribue une nouvelle valeur,

sinon, l'ancienne valeur est conservée, c'est-à-dire le minimum.

Cet algorithme, je l'ai compris et utilisé depuis longtemps..... c'est-à-dire vérifier les minima non pas sur le tick, mais sur le chandelier. Mais je pense qu'il existe un algorithme beaucoup plus économique, à savoir celui que j'ai décrit la dernière fois, lorsque vous vérifiez les minima non pas avant, mais après. Mais je ne sais pas comment compter rapidement et économiquement le nombre de bougies de BIDA à la cinquantième bougie. Oui à la cinquantième bougie, je sais compter le nombre de bougies. Comment compter le nombre de bougies jusqu'à la bougie ayant le plus faible LOU . C'est-à-dire, de BIDA à cette bougie.

 
ANDREY:

Mon code se compose de plusieurs lignes et montre comment le minimum est défini à l'œil nu

Le minimum est défini dans les lignes jaunes.

Alors, quel est le problème ? Ce qui importe ici, c'est la manière dont la variable LoU est déclarée. Si c'est au niveau mondial, très bien. Si c'est une variable locale, elle doit être statique. Et en vérifiant à chaque tick la différence entre le prix actuel et le prix de cette variable, le coût de la microseconde sera si insignifiant qu'il est inutile d'en parler.

 
ANDREY:

C'est un algorithme que j'ai compris et utilisé depuis longtemps..... c'est-à-dire vérifier les minima non pas sur le tick, mais sur le chandelier. Mais je pense qu'il existe un algorithme beaucoup plus économique, à savoir celui que j'ai décrit la dernière fois, où l'on ne vérifie pas avant le minimum, mais après son apparition. Mais je ne sais pas comment compter rapidement et économiquement le nombre de bougies de BIDA à la cinquantième bougie. Oui à la cinquantième bougie, je sais compter le nombre de bougies. Comment compter le nombre de bougies jusqu'à la bougie ayant le plus faible LOU . C'est-à-dire, de BIDA à cette bougie .

Il y a une logique anormale là-dedans... Pourquoi compter quelques 50 barres ? Et si ce n'est pas 50 ?

 
ANDREY:

Il s'agit d'un algorithme que j'ai compris et utilisé depuis longtemps..... c'est-à-dire vérifier les minima non pas sur le tick, mais sur le chandelier. Mais je pense qu'il existe un algorithme beaucoup plus économique, à savoir celui que j'ai décrit la dernière fois, où l'on ne vérifie pas avant le minimum, mais après son apparition. Mais je ne sais pas comment compter rapidement et économiquement le nombre de bougies de BIDA à la cinquantième bougie.

Quelle que soit votre idée, la vérification sera effectuée à chaque tick - c'est une caractéristique de la fonction OnTick().

 
MakarFX:

Quelle que soit la méthode de vérification que vous utilisez, elle sera toujours effectuée à chaque tick - c'est une caractéristique de la fonction OnTick().

C'est une chose de vérifier et une autre de trouver le minimum...

 
Alexey Viktorov:

Alors quel est le problème ? L'élément principal ici est la manière dont la variable LoU est déclarée. Si c'est au niveau mondial, c'est bien. Si c'est une variable locale, elle doit être statique. Et en vérifiant à chaque tick la différence entre le prix actuel et le prix de cette variable sera si insignifiante qu'il est inutile d'en parler.

Merci pour ces informations nouvelles et précieuses pour moi..... je ne le savais pas.

 
Alexey Viktorov:

Il y a une logique anormale à cela... Pourquoi compter 50 barres ? Et si ce n'est pas 50 ?

50 est pour le cas abstrait. Cela peut être 20 ou 150 ou 3 ou 1. Ce que l'on veut dire c'est comment savoir combien de barres il y a entre le BIDE actuel et le bas local .... dans le cas où il y a 30 points entre ce BIDE et le bas local nécessaire pour ouvrir l'ordre. Pour ouvrir un ordre si ( Bid - Low[ 50] >= 30 pips)- pour ouvrir un ordre.

 
MakarFX:

Quelle que soit la méthode de vérification que vous utilisez, elle sera toujours effectuée à chaque tick - c'est une caractéristique de la fonction OnTick().

Merci. Si je savais que .... peut-être que je ne m'en serais pas autant préoccupé.

Donc, si je ne vérifie pas LOW à chaque tick, mais à chaque chandelier, le programme passera quand même du temps à traiter chaque tick, et le résultat sera le même que s'il était vérifié à chaque tick.

N'y a-t-il aucun moyen d'éviter cette fonctionnalité dans votre code ? Elle ne doit pas être effectuée sur chaque tick, mais par exemple sur chaque LOU d'une bougie minute.

 
ANDREY:

Merci. Si je savais que .... Peut-être que je ne m'en serais pas autant préoccupé.

Donc, si je ne vérifie pas LOW à chaque tick, mais à chaque bougie, le programme passera toujours du temps à traiter chaque tick, et le temps sera le même que lorsque je le vérifie à chaque tick ?

N'y a-t-il aucun moyen d'éviter cette fonctionnalité dans votre code ? Elle ne doit pas être effectuée sur chaque tick, mais par exemple sur chaque LOU d'une bougie minute.

void()