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

 
ANDREY:
Pr est une variable pour que seulement 1 ordre soit ouvert après 30 pips. Sans cette variable, ils s'ouvrent à chaque tique
if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0))
{LoU=Bid;}

Donc vous n'avez pas besoin de cette variable...et il y a déjà moins de charge)

 
MakarFX:
Encore pire... il faut toujours connaître le nombre de barres


Je l'ai modifié...essayez

Je l'ai fait. C'est la même chose.
Votre code.

double LoU,Pr;
int OnInit()
  {
   LoU=Low[0];
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Low[1]<LoU) {LoU=Low[1];}
   if ((Bid-30*Point)>=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Low[0];
     }
  }


 
MakarFX:

Donc vous n'avez pas besoin de cette variable...et déjà la charge est moindre)

Peut-être que je n'en ai pas besoin. Mais ce n'est pas celui avec lequel je me bats. .....

 
ANDREY:

Probablement pas nécessaire. Mais ce n'est pas celui avec lequel je me bats. .....

1) Si vous vous battez avec la vitesse, toute optimisation du code est un plus.

2) La différence de résultats parce que vous n'avez pas d'initialisation de la LoU au démarrage n'est rien... VIDE

 
MakarFX:
Encore pire...il faut toujours connaître le nombre de barres


Je l'ai modifié...essayez

Si Bid - Low[ ] >= 30 pips, ouvrir un ordre. Mais comment connaître le nombre de ceLow[ ] après que le Bid dépasse ce Low[ ] de 30 pips ?
 
ANDREY:
Alternativement, si Bid - Low[? ] >= 30 p. nous devrions ouvrir un ordre. Mais comment connaître le nombre de Low[ ] après que l 'offre soit supérieure à la Low[ ] de 30 points ?

Et si Bid baisse, cela signifie un nouveau bas... et à partir de quel bas le calcul doit-il être fait ?

 
MakarFX:

1) Si vous vous battez avec la vitesse, toute optimisation du code est un plus.

2) La différence de résultats parce que vous n'avez pas d'initialisation LoU- au démarrage n'équivaut à rien... VIDE

Donc, si j'attribue une valeur à LoU lorsque je le déclare, le code s'exécutera beaucoup plus rapidement ?

Je lui ai attribué le prix d'ouverture de la première barre du 04.01.2010.

double LoU = 1.6121,Pr;
void OnTick()//531
{
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);
Pr=LoU;
LoU=Bid;

}
}
 
MakarFX:

Et si Bid baisse, cela signifie un nouveau bas... et quel est le bas à partir duquel calculer ?

Qu'il baisse, l'essentiel est que l'ordre s'ouvre sur 30 pips. Et après son ouverture, laissez le prix baisser pour trouver le nouveau minimum. Imaginons que nous ayons l'offre actuelle et qu'elle soit à 30 points de Low[ 50] et que nous puissions ouvrir un ordre. Si ( Bid - Low[ 50] > 30 points ) - ouvrir un ordre, comment saurons-nous qu'il s'agit du bas de la 50ème bougie ? Dans ce cas, il faut donc vérifier non pas ce qui était avant le minimum local, mais ce qui était après.
Et dans ce cas, la baisse du prix après l'ouverture de l'ordre n'aura aucune importance.

 
ANDREY:

Je ne pense pas que l'indicateur fractal me convienne. Il manquera de nombreuses commandes.

L'ordre ouvert par mon code avec vérification du prix à chaque tick est surligné en bleu. Il me semble qu'une fractale ne me dit rien de nécessaire dans ce cas.

J'ai donné une fractale comme exemple. Et comment vous déterminez le minimum (dans votre cas) est un secret militaire... ou vous ne comprenez pas ce que je demande.

 
ANDREY:

Laissez-le tomber, l'essentiel est que l'ordre s'ouvre dans 30 pips. Et après l'ouverture, laissez le prix baisser pour trouver un nouveau plancher. Imaginez que nous avons l'offre actuelle et qu'elle est à 30 points de Low[ 50] et que nous pouvons ouvrir un ordre. si ( Bid - Low[ 50] > 30 points ) - ouvrir un ordre. Mais comment vérifier s'il s'agit du bas de la 50ème bougie ? Donc, dans ce cas, nous devons vérifier non pas ce qui était avant le minimum local mais ce qui était après.

vous n'avez pas besoin de compter les barres

Après l'ouverture de l'ordre, assignez à la variable la valeur Low[0] (le minimum de la barre actuelle) et après la fermeture de la barre, si la valeur de Low[1] est inférieure à la variable, assignez une nouvelle valeur,

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