Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 515

 
-Aleks-:

Alternativamente

if (StatTime==1)

 Time=iTime(NULL,1440,0);

 StatTime=0;

 }

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

           {

  StatTime=1;

           } 

Creo que esto sería más interesante

variante 1

bool NevDay()
  {
   static datetime StatTime;

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

versión 2

bool NevDay()
  {
   static int den;

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

¡Hola!

Hay un código de funciones "newt" y "dlt" que resuelven algún algoritmo. Por favor, dígame, ¿qué es este algoritmo? ¿Qué problema resuelven estas funciones?

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);
  }
 

Pido ayuda a la comunidad.

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

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

¿Cuál es la diferencia entre el valor Ask obtenido en dos funciones MQL5?
¿Cuál de estas funciones devuelve un valor similar a Ask de MQL4?

 
MikeZv:

Pido ayuda a la comunidad.

¿Cuál es la diferencia entre el valor Ask obtenido en dos funciones MQL5?
¿Cuál de estas funciones devuelve un valor similar a Ask de MQL4?

Ambos ejemplos funcionan

 
MikeZv:

Pido ayuda a la comunidad.

¿Cuál es la diferencia entre el valor Ask obtenido en dos funciones MQL5?
¿Cuál de estas funciones devuelve un valor similar a Ask de MQL4?

Antes de escribir algo (en términos de código), piensa en la forma más económica y correcta de resolver el problema. En el primer caso, sólo se solicita el precio Ask actual, mientras que en el segundo caso, se solicita toda la estructura de ticks. Lo más probable (hay que medirlo) es que el segundo caso funcione mucho más lento y si sólo necesitas preguntar el precio, no tiene sentido conseguir la estructura.
 
Alexey Kozitsyn:
Antes de escribir nada (en términos de código), piense en la forma más eficiente y correcta de resolver el problema. En el primer caso sólo se solicita el precio de venta actual, en el segundo caso se solicita toda la estructura de ticks. Lo más probable (hay que medirlo) es que el segundo caso funcione mucho más lento y si sólo necesitas preguntar el precio, no tiene sentido conseguir la estructura.
Estoy reescribiendo mi Asesor Experto de MT4 a MT5. En primer lugar, necesito saber cómo obtener la estructura llamada Ask en MQL4. Pensaré en cuestiones de rendimiento más tarde. :)
 
MikeZv:
Actualmente estoy reescribiendo mi Asesor Experto de MT4 a MT5. En primer lugar necesito saber cómo obtener un Ask en MQL4. Ya pensaré en cuestiones de rendimiento más adelante. :)
Lo siento, no entendí bien tu pregunta. Escribí que estas dos variantes funcionan en MT4, mientras que en MT5 son análogas a ask y MarketInfo(_Symbol,SYMBOL_ASK); de la antigua MT4
 
Sergey Gritsay:
Oh, lo siento, no entendí tu pregunta de inmediato, escribí que ambas variantes funcionan en MT4, y en MT5 son análogas a ask y MarketInfo(_Symbol,SYMBOL_ASK); de la antigua MT4

Había dos variantes de MQL5 ...
Y son análogos a "ask y MarketInfo(_Symbol,SYMBOL_ASK)de la antigua MT4", ¿te he entendido bien?

 
MikeZv:

Había dos variantes de MQL5 ...
Y son análogos a "ask y MarketInfo(_Symbol,SYMBOL_ASK)de la antigua MT4", ¿te he entendido bien?

Sí, así es.

 
Sergey Gritsay:
Oh, lo siento, no entendí tu pregunta, escribí que ambos funcionan en MT4, pero en MT5 son análogos a ask y MarketInfo(_Symbol,SYMBOL_ASK); de la antigua MT4
SymbolInfoDouble(Symbol(),SYMBOL_ASK);