[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 233

 
GaNDarM:
VladislavVG me l'a suggéré :Parce qu'à l'étape de la fonction init(), vous n'êtes pas assuré de charger les données de l'instrument financier.

Donc, la valeur de la variable Point sans Init() devrait retourner la même...
 
hoz:
Pourquoi y aurait-il un non-sens si la fonction renvoie spécifiquement un nom d'objet ?
Et vous êtes sûr à 100 % que cette fonction fonctionnera toujours et partout correctement, qu'elle ne présentera pas de problème ou ne s'arrêtera pas sur un nom d'objet délicat, ou que vous ne glisserez pas accidentellement le numéro d'un objet inexistant dans la fonction, tout d'un coup ? Et le résultat renvoyé par la fonction ne peut pas être utilisé pour juger si elle a fonctionné correctement ou non. C'est ce qui est dit dans la documentation. La seule façon correcte est d'obtenir le code d'erreur et de le contourner. C'est ainsi que vous vous protégez contre vos propres erreurs (ou celles de quelqu'un d'autre).
 
hoz:

Combien de fois ai-je utilisé l'autopoint, mais la première fois, ça ne marche pas.


Où est la logique ?

Essayez comme ça :

int init()
{
   if (Digits == 2 || Digits == 4)
     pt = MarketInfo(Symbol(), MODE_POINT);
   if (Digits == 1 || Digits == 3 || Digits == 5)
     pt = MarketInfo(Symbol(), MODE_POINT) * 10;
 
  return (0);
}

Pas même comme ça, mais comme ça :

int init()
{
   int MyDigits = MarketInfo(Symbol(), MODE_DIGITS)
   if (MyDigits == 2 || MyDigits == 4)
     pt = MarketInfo(Symbol(), MODE_POINT);
   if (MyDigits == 1 || MyDigits == 3 || MyDigits == 5)
     pt = MarketInfo(Symbol(), MODE_POINT) * 10;
 
  return (0);
}

Parce que Digits est une variable interne, tout comme Piont.

Cela devrait fonctionner :)



 
hoz:

Donc la valeur de la variable Point sans Init() devrait retourner la même...

Ce n'est pas un fait... Le point est une variable interne du processeur MQL et il faut un certain temps et quelques actions d'initialisation pour le mettre à jour. Tout cela ne se produit généralement qu'avant que le processeur n'appelle start() et à l'étape de init() les valeurs des variables internes du processeur peuvent ne pas être fixées.
 
GaNDarM:


"Pleurer" à ce sujet :

et voici le journal :

18:25:09 IndikatorZZ GBPJPY,Daily : F_CYF INIT : DownL = 0 UpL = 0


Les variables ne sont pas int par hasard ?


Je me suis déjà retrouvé comme ça plusieurs fois.

 
ilunga:

Les variables sont-elles par hasard int ?


Je me suis surpris à faire ça plusieurs fois.


Non, double. Qu'est-ce qui ne va pas avec l'int, je me le demande ?
 
Bonjour ! Une situation s'est produite la veille. Le 19.03.2013 vers 17-00 GMT j'ai placé un ordre de vente stop. Le prix ouvert était de 1.2903, Stop loss 1.2913, trailing stop 15 pips, M15, lot -0.5. Comme le montre l'historique du compte, la position a été ouverte à 17-49. La position a été fermée à 21:15 toujours par GMT avec un profit de moins 90. Quand j'ai vu l'histoire, j'ai eu beaucoup de questions en tête. Par exemple, pourquoi la position a été fermée au sommet de l'épi (voir photo). Pourquoi le trailing stop n'a-t-il pas été déclenché, car s'il fonctionnait, le bénéfice serait positif, car le mouvement du prix était correct. Après le trailing stop, un stop loss ne serait pas de 90 USD. Et encore une fois - pourquoi la position a été fermée au sommet de la hausse. Point à point. Je n'ai pas contacté le centre de traitement à ce sujet. Il est probable qu'ils ne répondront pas. Je me suis souvenu de ce forum et j'espère que des professionnels seront en mesure d'expliquer la raison de cette anomalie dans un langage simple. J'ai commencé à négocier sur MT4 il n'y a pas si longtemps. Je continue à renifler et à regarder autour de moi.
 
Bonjour. Pouvez-vous me dire si un EA est attaché à plusieurs fenêtres de paires de devises en même temps, alors les changements dans l'EA d'une fenêtre affectent l'EA d'une autre fenêtre ? c'est-à-dire que les variables locales changent ou non ?
 

Messieurs, donnez-moi un indice !

J'essaie de mettre en œuvre une idée simple, qui est décrite dans les commentaires du programme.

Le programme ouvre des ordres dans le TESTER à un prix qui ne coïncide pas avec ceux spécifiés dans le code.

Par exemple, l'ordre s'ouvre au prix de 0,86084, alors que la valeur la plus proche dans le tableau est 0,85375.

La différence est positive alors que le code spécifie d'ouvrir des ordres si la différence est < 0.00000, c'est-à-dire négative.


Veuillez nous indiquer où se trouve l'erreur.

Merci.

int start()
{
 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ;//параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND);//функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыть
  }                                  

   }
 
deyron:
Bonjour. Pouvez-vous me dire si un EA est attaché à plusieurs fenêtres de paires de devises en même temps, alors les changements dans l'EA d'une fenêtre affectent l'EA de l'autre fenêtre ? c'est-à-dire que les variables locales sont modifiées ou non ?


Si vous changez la magie pour le même EA, alors les EA fonctionneront séparément, chacun dans sa propre fenêtre.