[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 331

 

Bon après-midi.

Pouvez-vous me dire pourquoi le résultat est faussé lors de la conversion de double en int ?

int init()

{

int sum=(1.3167+0.001)*10000;

Alert (sum);

return(0);

}

Le résultat est imprimé sous la forme 13176.

Il devrait logiquement être 13177.

Ce problème apparaît uniquement lors de l'ajout. En soustrayant

int sum=(1.3167-0.001)*10000;

il produit le résultat correct : 13157

Je me demande si ouvrir les parenthèses

int sum=1.3167*10000+0.001*10000; 

alors il a raison. Quelle est la différence ?

Merci d'avance.

 
GygaByte:

Bon après-midi.

Pouvez-vous me dire pourquoi le résultat est déformé lors de la conversion de double en int ?

Écrivez :

int sum=NormalizeDouble((1.3167+0.001)*10000,Digits);
et il sera lu correctement.
 

Merci pour le conseil de Sepulca , c'est réglé.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 

Merci pour le conseil de Sepulca , c'est réglé.

      if (OrderComment()==""){
         MyComment="";
      } else {
         MyComment="[" + OrderComment() + "]";
      }
 
hoz:


Eh bien, j'ai dans mon code une fixation du moment où la valeur de l'indicateur est supérieure au niveau de l'indicateur et inférieure à(le niveau de l'indicateur + la déviation permise, une sorte d'écart). Ici :

0,1 que j'ai pris au hasard. Mais les ouvertures se font au mauvais moment.

A en juger par vos propos, vous devez comparer la valeur d'une certaine barre, qui est inférieure au niveau de l'indicateur, avec la valeur de la barre zéro située au-dessus (niveau + écart) et non l'inverse ?

Mais si nous trouvons le croisement de la valeur de l'indicateur sur la barre précédente et la valeur sur la barre actuelle (à travers le niveau spécifié), alors pour la barre actuelle la valeur, et par conséquent, le prix peut voler très loin et, par conséquent, ce n'est pas du tout une option. Comment alors expliciter clairement la condition sur laquelle j'ai écrit ? Voici une capture d'écran expliquant la situation :

A partir de la capture d'écran, vous devez vérifier : si le RSI de la première barre est inférieur au niveau et que le RSI de la barre zéro est supérieur ou égal au niveau, alors achetez. En même temps, le RSI doit être compté aux prix d'ouverture - sinon vous ne pouvez pas éviter les faux positifs sur la barre zéro. Si vous voulez un RSI à d'autres prix (prix de clôture, par exemple), vérifiez alors la deuxième et la première barre en conséquence.
 
hoz:


Boris, vous avez la valeur tirée de l'échelle de temps 1M. Et il est comparé non pas au niveau mais à zéro. Je ne comprends pas pourquoi la valeur sera prise à chaque tick. Ce n'est peut-être pas compliqué, mais je n'ai jamais travaillé avec des indicateurs auparavant et cela ne semble pas logique à première vue.

Là encore, si les valeurs sont prises à chaque coche, comment comparer à un niveau spécifique pour qu'à chaque coche l'examinateur suive ce niveau ?

Dans mon cas, pour acheter sur M5, j'ai écrit de la manière suivante :

Ici,i_RSIToUpLimit est le niveau de l'indicateur RSI. Je comprends que la période pour M1 doit être multipliée par 5 pour utiliser le niveau sur M5, n'est-ce pas ? La période sera alors de 70 et non de 14.

Victor, au lieu de zéro, mets ton niveau dans une direction avec un plus et dans l'autre avec un moins ! Et comme avec Close sur la barre zéro, sur quel tick votre niveau passera, ainsi donnera un signal ! La période de RSI déterminera l'optimisation ! En général, Artem a raison ! Faites ce qu'il vous conseille !
 
abolk:

Notez-le :

Et tout comptera correctement.


Correct, mais comme la pratique l'a montré - pas toujours...

int init()
  {
//----
double bid=NormalizeDouble(Bid,Digits);
double b=NormalizeDouble(0.0005,Digits);
double bid_minus=NormalizeDouble(bid-b,Digits);
double bid_plus=NormalizeDouble(bid+b,Digits);

Alert ("bid= ",bid," bid_minus= ",bid_minus," bid_plus= ",bid_plus, " Bid = ",DoubleToStr(Bid,6));
//----
   return(0);
  }

Si la cinquième décimale = 5 (1,xxxx5), la valeur est toujours déformée :

Alertes

la question est toujours valable...

P.S. En général, j'ai besoin d'assigner une valeur de prix à MagicNumber... Et tapez MagicNumber - int, ici et essayez de convertir par

int MN=NormalizeDouble(Bid*10000,Digits);

Qui d'autre peut me donner des conseils ?

Merci.

 

Salutations à tous ! Joyeux Jour de la Victoire !

Pouvez-vous me dire pourquoi le terminal ne se connecte pas, donne le message "No connection", bien qu'il y ait un ping. Bien qu'il y ait un ping, il y a en fait une connexion avec le serveur. Voici une capture d'écran : http://snag.gy/UFNFL.jpg

Test Ping

Les données pour l'enregistrement ne sont pas créées http://snag.gy/i8cmn.jpg

Ne s'enregistre pas

Ce "Please wait" prend plus d'une heure. En général, elle devrait être instantanée.

Je ne comprends pas ce que je fais de mal. Pourquoi aucune connexion, si j'en ai une, pourquoi j'ai un ping ?

J'ai essayé la M5 de la même façon et j'ai pu m'inscrire, mais pas la M4, j'ai essayé 20 fois.

Veuillez me conseiller, qui sait !

 
Bonsoir. Pouvez-vous me dire s'il existe des indicateurs de profil de marché ? Et aussi une documentation ou une description de la manière de les utiliser ? Au moins les signaux les plus simples pour entrer sur le marché en utilisant les indicateurs de profil de marché ?
 
first_may:
Bonsoir. Pouvez-vous me dire s'il existe des indicateurs de profil de marché ? Et aussi une documentation ou une description de la manière de les utiliser ? Au moins les signaux les plus simples pour entrer sur le marché en utilisant les indicateurs de profil de marché ?

Qu'entendez-vous par profil de marché ?