Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 515

 
-Aleks-:

In alternativa

if (StatTime==1)

 Time=iTime(NULL,1440,0);

 StatTime=0;

 }

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

           {

  StatTime=1;

           } 

Penso che questo sarebbe più interessante

variante 1

bool NevDay()
  {
   static datetime StatTime;

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

versione 2

bool NevDay()
  {
   static int den;

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

Ciao!

C'è un codice di funzioni "newt" e "dlt" che risolvono alcuni algoritmi. Per favore, ditemi, cos'è questo algoritmo? Quale problema risolvono queste funzioni?

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

Sto chiedendo aiuto alla comunità.

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

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

Qual è la differenza tra il valore di Ask ottenuto in due funzioni MQL5?
Quale di queste funzioni restituisce un valore simile a Ask di MQL4?

 
MikeZv:

Sto chiedendo aiuto alla comunità.

Qual è la differenza tra il valore di Ask ottenuto in due funzioni MQL5?
Quale di queste funzioni restituisce un valore simile a Ask di MQL4?

Entrambi gli esempi funzionano

 
MikeZv:

Sto chiedendo aiuto alla comunità.

Qual è la differenza tra il valore di Ask ottenuto in due funzioni MQL5?
Quale di queste funzioni restituisce un valore simile a Ask di MQL4?

Prima di scrivere qualcosa (in termini di codice), pensate al modo più economico e corretto di risolvere il problema. Nel primo caso, viene richiesto solo l'attuale prezzo Ask, mentre nel secondo caso, viene richiesta l'intera struttura di tick. Molto probabilmente (dobbiamo misurarlo) il secondo caso funziona molto più lentamente e se avete bisogno solo del prezzo di domanda, allora non ha senso ottenere la struttura.
 
Alexey Kozitsyn:
Prima di scrivere qualcosa (in termini di codice), pensate al modo più efficiente e corretto di risolvere il problema. Nel primo caso viene richiesto solo l'attuale prezzo ask, nel secondo caso viene richiesta l'intera struttura di tick. Molto probabilmente (dovrebbe essere misurato) il secondo caso funziona molto più lentamente e se avete bisogno solo di chiedere il prezzo, non ha senso ottenere la struttura.
Sto riscrivendo il mio Expert Advisor da MT4 a MT5. Prima di tutto, ho bisogno di sapere come ottenere la struttura chiamata Ask in MQL4. Penserò ai problemi di performance più tardi. :)
 
MikeZv:
Sto riscrivendo Expert Advisor da MT4 a MT5, prima di tutto ho bisogno di sapere come ottenere un Ask in MQL4. :)
Scusa, non ho capito subito la tua domanda. Ho scritto che queste due varianti funzionano in MT4, mentre in MT5 sono analoghi di ask e MarketInfo(_Symbol,SYMBOL_ASK); del vecchio MT4
 
Sergey Gritsay:
Oh scusa non ho capito subito la tua domanda, ho scritto che entrambe queste varianti funzionano in MT4, e in MT5 sono analoghi di ask e MarketInfo(_Symbol,SYMBOL_ASK); dal vecchio MT4

C'erano due varianti di MQL5 ...
E sono analoghi di "ask e MarketInfo(_Symbol,SYMBOL_ASK)del vecchio MT4", ho capito bene?

 
MikeZv:

C'erano due varianti di MQL5 ...
E sono analoghi a "ask e MarketInfo(_Symbol,SYMBOL_ASK)del vecchio MT4", ho capito bene?

Sì, proprio così.

 
Sergey Gritsay:
Oh, scusa non ho capito subito la tua domanda, ho scritto che entrambi funzionano in MT4, ma in MT5 sono analoghi di ask e MarketInfo(_Symbol,SYMBOL_ASK); dal vecchio MT4
SymbolInfoDouble(Symbol(),SYMBOL_ASK);

Motivazione: