Questions des débutants MQL5 MT5 MetaTrader 5 - page 515

 
-Aleks-:

Ou bien

if (StatTime==1)

 Time=iTime(NULL,1440,0);

 StatTime=0;

 }

       if(Time!=iTime(NULL,1440,0))

           {

  StatTime=1;

           } 

Je pense que ce serait plus intéressant

variante 1

bool NevDay()
  {
   static datetime StatTime;

   if(StatTime!=iTime(NULL,PERIOD_D1,0))
     {
      StatTime=iTime(NULL,PERIOD_D1,0);
      return(true);
     }
   return(false);
  }

version 2

bool NevDay()
  {
   static int den;

   if(den!=Day())
     {
      den=Day();
      return(true);
     }
   return(false);
  }
 

Bonjour !

Il existe un code de fonctions "newt" et "dlt" qui résolvent certains algorithmes. Dites-moi, s'il vous plaît, quel est cet algorithme ? Quel problème ces fonctions résolvent-elles ?

int    period=150;
int    shift_1=10;
double shift_2=3.0;
int    history=300;
double hpf[];
double HPF[];
//+------------------------------------------------------------------+
init()
  {
   SetIndexBuffer(0,HPF);
   ArrayResize(hpf,period);
   return(0);
  }
//+------------------------------------------------------------------+
start()
  {
   for(int bar=history; bar>=0; bar--)
     {
      for(int i=period-1;i>=0;i--)
         hpf[i]=Close[i];

      HPF[bar]=newt(hpf,shift_1,shift_2);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double newt(double x[],int pos,double n)
  {
   double r=x[pos],k=1;
   int l=MathCeil(n),i;
   if(pos+l>=ArraySize(x)) l=ArraySize(x)-pos-1;
   if(n==0) return(r);
   if(n<0) return(EMPTY_VALUE);
   for(i=1; i<=l; i++)
     {
      k*=n/i;
      r+=k*dlt(x,pos,i);
     }
   return(r);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double dlt(double x[],int pos,int d)
  {
   double r=0;
   int i, k=1, pod=pos+d, l=d>>1;
   if(pos>=ArraySize(x)) return(EMPTY_VALUE);
   if(pos+d>=ArraySize(x)) return(0);
   if(d%2>0)
      for(i=0; i<=l; i++,pos++,pod--)
        {
         r+=k*(x[pos]-x[pod]);
         k*=i-d;
         k/=i+1;
        }
   else
     {
      for(i=0; i<l; i++,pos++,pod--)
        {
         r+=k*(x[pos]+x[pod]);
         k*=i-d;
         k/=i+1;
        }
      r+=k*x[pos];
     }
   return(r);
  }
 

Je demande l'aide de la communauté.

// MQL4
// Последняя известная цена продажи (запрашиваемая цена) текущего инструмента. Для обновления необходимо использовать функцию RefreshRates().
Ask 

// MQL5
// 1
Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK)      // Возвращает лучшее предложение на покупку (Так в справочнике MQL5)
// 2
SymbolInfoTick(_Symbol,last_tick))              // Возвращает текущие цены  для указанного символа в переменной типа MqlTick
Ask = last_tick.ask								

Quelle est la différence entre la valeur Ask obtenue dans deux fonctions MQL5?
Laquelle de ces fonctions renvoie une valeur similaire à Ask de MQL4 ?

 
MikeZv:

Je demande l'aide de la communauté.

Quelle est la différence entre la valeur Ask obtenue dans deux fonctions MQL5?
Laquelle de ces fonctions renvoie une valeur similaire à Ask de MQL4 ?

Les deux exemples fonctionnent

 
MikeZv:

Je demande l'aide de la communauté.

Quelle est la différence entre la valeur Ask obtenue dans deux fonctions MQL5?
Laquelle de ces fonctions renvoie une valeur similaire à Ask de MQL4 ?

Avant d'écrire quelque chose (en termes de code), réfléchissez à la manière la plus économique et la plus correcte de résoudre le problème. Dans le premier cas, seul le cours vendeur actuel est demandé, tandis que dans le second cas, la structure entière des tick est demandée. Il est fort probable (nous devons le mesurer) que le deuxième cas de figure fonctionne beaucoup plus lentement et si vous n'avez besoin que du prix demandé, il est inutile d'obtenir la structure.
 
Alexey Kozitsyn:
Avant d'écrire quoi que ce soit (en termes de code), réfléchissez à la manière la plus efficace en termes de ressources et la plus correcte de résoudre le problème. Dans le premier cas, seul le cours vendeur actuel est demandé, dans le second cas, la structure complète des tick est demandée. Le plus probable (il faut le mesurer) est que le second cas fonctionne beaucoup plus lentement et si vous n'avez besoin que de demander le prix, il est inutile d'obtenir la structure.
Je suis en train de réécrire mon Expert Advisor de MT4 à MT5. Tout d'abord, j'ai besoin de savoir comment obtenir la structure appelée Ask dans MQL4. Je penserai aux problèmes de performance plus tard. :)
 
MikeZv:
Je suis en train de réécrire un Conseiller Expert de MT4 à MT5, tout d'abord j'ai besoin de savoir comment obtenir un Ask dans MQL4. Je penserai aux problèmes de performance plus tard. :)
Je suis désolé, je n'ai pas compris tout de suite votre question. J'ai écrit que les deux fonctionnent dans MT4, alors que dans MT5 ce sont des analogues de ask et MarketInfo(_Symbol,SYMBOL_ASK) ; de l'ancienne MT4.
 
Sergey Gritsay:
Oh désolé, je n'ai pas compris tout de suite votre question, j'ai écrit que ces deux variantes fonctionnent dans MT4, et dans MT5 ce sont des analogues de ask et MarketInfo(_Symbol,SYMBOL_ASK) ; de l'ancien MT4

Il y avait deux variantes de MQL5 ...
Et ce sont des analogues de "ask et MarketInfo(_Symbol,SYMBOL_ASK)de l'ancien MT4", ai-je bien compris ?

 
MikeZv:

Il y avait deux variantes de MQL5 ...
Et ils sont analogues aux "ask et MarketInfo(_Symbol,SYMBOL_ASK)de l'ancien MT4", ai-je bien compris ?

Oui, c'est vrai.

 
Sergey Gritsay:
Oh désolé, je n'ai pas compris votre question tout de suite, j'ai écrit que les deux fonctionnent dans MT4, mais dans MT5 ce sont des analogues de ask et MarketInfo(_Symbol,SYMBOL_ASK) ; de l'ancienne MT4.
SymbolInfoDouble(Symbol(),SYMBOL_ASK) ;

Raison: