[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 789

 
Hedin:

Chers programmeurs,
Veuillez indiquer pourquoi les opérateurs ne sont pas exécutés lorsque la condition est vraie, ou plutôt pourquoi ils sont exécutés, mais de façon aléatoire (par exemple, de façon répétée). Il n'y a pas d'erreurs dans les journaux.


Veuillez corriger votre code :

if ( MathAbs( ord_sl - (ord_open+First_sell_limit_SL*Point) ) < Point / 2.0 && ...

Et ne comparez jamais les variables de type double pour l'égalité.

 
PapaYozh:


Corrigez votre code :

Et ne comparez jamais les variables de type double pour l'égalité.


Pourquoi ne pouvez-vous pas comparer des variables de type double pour l'égalité ?
 
Hedin:

Pourquoi les variables comme double ne peuvent-elles pas être comparées pour l'égalité ?
Et la recherche ne fonctionne plus ?
 
Hedin:

Pourquoi les variables de type double ne peuvent-elles pas être comparées pour l'égalité ?
Jetez un coup d'œil ici.
 
Necron:
Dans deinit, écrire dans une variable globale et dans init, lire la valeur de cette variable, quel est le problème ?

Si je comprends bien, une variable globale est une variable déclarée en dehors de toutes les fonctions. Les variables globales sont initialisées une fois avant le lancement des fonctions spéciales.

C'est-à-dire que les variables globales sont déclarées au début du programme avant la fonction de démarrage, y compris celle que je veux transmettre au programme au prochain démarrage. Ensuite, selon votre suggestion, dans deinit je fixe la valeur de cette variable. Je comprends qu'au début du programme, avant que la fonction init soit exécutée, toutes les variables globales, qui sont décrites au début du programme, y compris la variable qui m'intéresse, seront réinitialisées. Et quand il s'agit de la fonction init, ma variable, enregistrée plus tôt, sera perdue ! Ou ai-je tort ?

 
Non, il voulait parler de la GlobalVariable, qui est stockée dans un fichier.
 
ikatsko:

Si je comprends bien, une variable globale est une variable déclarée en dehors de toutes les fonctions. Les variables globales sont initialisées une fois avant le lancement des fonctions spéciales.

C'est-à-dire que les variables globales sont déclarées au début du programme avant la fonction de démarrage, y compris celle que je veux transmettre au programme au prochain démarrage. Ensuite, selon votre suggestion, je fixe la valeur de cette variable dans deinit. Je comprends qu'au début du programme, avant que la fonction init soit exécutée, toutes les variables globales, qui sont décrites au début du programme, y compris la variable qui m'intéresse, seront réinitialisées. Et quand il s'agit de la fonction init, ma variable, enregistrée plus tôt, sera perdue ! Ou ai-je tort ?

Il existe deux sortes de variables globales : les variables globales de votre programme, sur lesquelles vous écrivez, et les variables globales de votre terminal,
qui sont stockées séparément de votre programme pendant une quinzaine de jours si vous n'y accédez pas, si ma mémoire est bonne...
ils sont utilisés, par exemple, pour transférer des données entre différents EAs travaillant simultanément sur le même terminal, etc...
Ce sont les variables globales du terminal dont vous avez besoin.
 
Roger:
Non, il voulait dire la GlobalVariable, qui est stockée dans le fichier.
Oui, je voulais dire les variables globales du terminal. Il y avait déjà cette question dans un message privé, j'y ai répondu.
 
Necron:
Oui, je voulais parler des variables globales du terminal. Cette question a déjà été posée dans le message privé, j'y ai répondu.
Je l'ai déjà compris. Ça arrive... n'a pas bien compris... Désolé :)
 
вот, собственно код моментума стандартного из МТ4 - ии??? я не вижу тут 
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
//+------------------------------------------------------------------+
//|                                                     Momentum.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int MomPeriod=14;
 
//---- buffers
double MomBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MomBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mom("+MomPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,MomPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Momentum                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   
//----
   if(Bars<=MomPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=MomPeriod;i++) MomBuffer[Bars-i]=0.0;
      
//----
   
   i=Bars-MomPeriod-1;
   if(counted_bars>=MomPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      MomBuffer[i]=Close[i]*100/Close[i+MomPeriod];
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
Roger:

Vous avez cherché étrangement

double iMA(

string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Le premier élément.

Raison: