Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 950

 
Bref, c'est bon, je vais trouver une solution, je m'ennuyais juste. Le code est probablement, je m'en excuse, en partie idiot.
 
Pouvez-vous me dire comment fermer une transaction ? Comment fermer une transaction après n (nombre par exemple 5) bougies après son ouverture ? L'heure d'ouverture du commerce n'est pas connue à l'avance.
 
kokos4:
Veuillez indiquer qui peut le faire. Comment fermer une position après n (nombre par exemple 5) bougies après son ouverture ? Vous ne connaissez pas l'heure d'ouverture à l'avance.

Comptez n bougies en secondes, ajoutez-les à l'heure d'ouverture et comparez-les à l'heure actuelle. Dès que l'heure actuelle est supérieure - un ordre de fermeture.


////где-то в цикле перебора ордеров:
////
timer = OrderOpenTime()+PeriodSeconds()*n;

if(TimeCurrent()>timer) close(OrderTicket());
////////////////


 
kokos4:
Veuillez indiquer qui peut le faire. Comment conclure l'affaire après n (nombre par exemple 5) bougies après son ouverture ? L'heure d'ouverture du poste est inconnue à l'avance.

Le nombre de bougies qui se sont écoulées depuis l'ouverture de l'ordre (pensez à le mettre en évidence au préalable) :

iBarShift (_Symbol, _Period, OrderOpenTime());

De plus, c'est plus facile comme "un jeu d'enfant". ;)

 

Chers collègues, ma fonction NormalizeDouble ne fonctionne pas (je ne peux pas l'expliquer autrement). Il produit 16 chiffres, bien que j'aie écrit 5 dans le deuxième paramètre. S'il vous plaît, dites-moi ce qui ne va pas dans le code :

double i = 0.123456789112345;
void OnStart()
  {
         NormalizeDouble(i, 5);  
         Alert (i);
  }
 
JoinDoe: Chers collègues, ma fonction NormalizeDouble ne fonctionne pas (je ne peux pas l'expliquer autrement).
double i = 0.123456789112345;
void OnStart()
  {
         Alert (NormalizeDouble (i, 5));
  }
 
TarasBY:
Merci ! Et maintenant, il affiche 0,12346.
 
JoinDoe:
Merci ! Et maintenant c'est 0.12346.
Correct, arrondi au chiffre inférieur le plus proche !
 
Comment faire en sorte qu'il n'y ait pas d'arrondi ?
 
JoinDoe:
Comment faire sans arrondir ?

Dans ce cas, il ne sera pas normalisé et pourra provoquer une erreur ! Pourquoi ne seriez-vous pas satisfait d'un prix normalisé plus précis ?

Si vous en avez besoin pour une raison quelconque, vous pouvez multiplier le nombre original par 100000, le transformant ainsi en un nombre entier, puis le multiplier par _Point ou 0,00001 :

double i = 0.123456789112345;
void OnStart()
  {
         Alert (NormalizeDouble (i*100000, 0)*_Point);
  }