[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 552

 
iruogl:

Je suis un débutant.

Je sais que le robot est activé chaque fois qu'un tick change. Comment faire pour qu'il ne s'active que lorsqu'une nouvelle bougie s'ouvre, c'est-à-dire lorsque le prix d'ouverture de la bougie apparaît.

Merci à tous pour les conseils.

Pour citer le modérateur "La fonction retourne vrai quand une nouvelle barre apparaît sur M15. A utiliser uniquement en EA."

bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
paladin80:

Pour citer le modérateur "La fonction retourne vrai quand une nouvelle barre apparaît sur M15. A utiliser uniquement en EA."


Merci beaucoup.
 
iruogl:

Merci beaucoup.

paladin80:

Pour citer le modérateur "La fonction retourne vrai quand une nouvelle barre apparaît sur M15. A utiliser uniquement en EA."


Je suis encore en train d'apprendre. Et dans cette fonction, comment déterminer le prix d'ouverture d'une bougie.
 
rigonich:

Des questions pour les pros de la part des nuls :

1. lors de l'exécution d'opérations avec des variables normalisées de type double, celles-ci se comportent comme des variables de type int (le résultat est un nombre normalisé), ou bien

le résultat doit être normalisé ?

2) Dans l'aide, il est écrit : "Deux nombres à virgule flottante non normalisés ne peuvent pas être liés en utilisant les opérations == ou !=". Puis-je comparer une valeur normalisée et une valeur non normalisée ?

nombre ? Peut-on utiliser les opérations >= et <= ?

Tous les nombres peuvent être comparés entre eux à l'aide de >= et <=. Une fois que NormalizeDouble est normalisé, il est déjà possible de comparer comme == ou !=. Cependant, vous devez voir si cela a un sens de comparer des nombres comme celui-ci, par exemple 10 décimales, il n'est tout simplement pas réaliste de trouver une situation où ils seraient égaux ou inégaux.
 
iruogl:


Je suis encore en train d'apprendre. Et dans cette fonction, comment déterminer le prix d'ouverture d'une bougie.

Cette fonction ne détecte que l'apparition d'une bougie. Pour trouver le prix d'ouverture, utilisez iOpen. Quelque chose comme ça :

int init()
{ ...
}
//---
int start()
{ 
   if (CheckOpenM15())
   {  double BarOpenPrice=iOpen(NULL, PERIOD_M15, 0)
   }
...
}
//---
int deinit()
{ ...
}

// сама функция должна находиться отдельно
bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
iruogl:

Je suis un débutant.

Je sais que le robot est activé chaque fois qu'un tick change. Comment faire pour qu'il ne s'active que lorsqu'une nouvelle bougie s'ouvre, c'est-à-dire lorsque le prix d'ouverture de la bougie apparaît.

Merci à tous pour les conseils.


Je suis également un débutant, mais je pense que je dois déclarer une variable de type datetime au niveau global (par exemple datetime TIME ;), dans init().et vérifier au début de start() si TIME== Time[0] -- return(0) ; si non -- TIME= Time[0] ;. Dans ce cas, l'expert n' exécutera start() qu'une seule fois à l'ouverture d'une nouvelle barre.
 
paladin80:
Tous les nombres peuvent être comparés entre eux à l'aide de >= et <=. Après la normalisation de NormalizeDouble, il est possible de les comparer comme == ou !=. Cependant, vous devez voir si cela a un sens de comparer des nombres avec, par exemple, 10 décimales, il n'est pas réaliste de trouver une situation où ils seraient égaux ou inégaux.

Merci beaucoup pour la réponse. Juste pour clarifier une question : après la normalisation, le nombre dans la mémoire de l'ordinateur reste le même et seule sa représentation change. ou le nombre lui-même change ?
 
rigonich:

Merci beaucoup pour votre réponse. Juste pour clarifier une question : après la normalisation, le nombre dans la mémoire de l'ordinateur reste le même et seule sa représentation change, ou le nombre lui-même change ?

Après la normalisation, le nombre change, par ex :

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5); // var2=0.12346

Une autre chose est lorsque vous l'imprimez, avec DoubleToStr, par exemple :

double var1=0.12345 6789;
Print("var1 = ",DoubleToStr(var1,5)); // Выход: var1=0.12345

Et si vous l'imprimez après normalisation, ça donne ceci :

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5);  // var2=0.12346
Print("var2 = ",DoubleToStr(var2,5)); // Выход: var2=0.12346
 
paladin80:

Cette fonction ne détecte que l'apparition d'une bougie. Pour trouver le prix d'ouverture, utilisez iOpen. Quelque chose comme ça :


Merci, vous êtes très utile
 
okvseok:

Veuillez me conseiller !

Il est possible d'imprimer une seule feuille, mais comment puis-je la configurer pour qu'elle commence à imprimer des feuilles d'une certaine date à une certaine date ? Ainsi, une feuille à la fois n'est pas imprimée.

Merci !



ignorer)