Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 515

 
-Aleks-:

Как вариант

 

if (StatTime==1)

 Time=iTime(NULL,1440,0);

 StatTime=0;

 }

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

           {

  StatTime=1;

           } 

Вот так думаю по интереснее будет

вариант 1 

 

bool NevDay()
  {
   static datetime StatTime;

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

вариант 2 

bool NevDay()
  {
   static int den;

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

Здравствуйте!

Есть код функций "newt" и "dlt" решающие некий алгоритм. Подскажите пожалуйста, это алгоритм чего? Какую задачу эти функции решают?

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

Прошу помощи у сообщества.

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

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

Чем отличается значение Ask, полученное двумя функциями MQL5 ?
Какая из этих функций возвращает значение, аналогичное Ask из MQL4 ?

 
MikeZv:

Прошу помощи у сообщества.

Чем отличается значение Ask, полученное двумя функциями MQL5 ?
Какая из этих функций возвращает значение, аналогичное Ask из MQL4 ?

Оба примера работают

 
MikeZv:

Прошу помощи у сообщества.

Чем отличается значение Ask, полученное двумя функциями MQL5 ?
Какая из этих функций возвращает значение, аналогичное Ask из MQL4 ?

Прежде, чем что-то написать (в плане кода) подумайте, как будет экономичнее по ресурсам и правильнее в условиях данной задачи. В первом случае запрашивается только текущая цена аск, во втором же - вся структура тика. Скорее всего (надо замерять) второй случай работает гораздо медленнее и, если Вам нужна только цена аск, то смысла получать структуру нет.
 
Alexey Kozitsyn:
Прежде, чем что-то написать (в плане кода) подумайте, как будет экономичнее по ресурсам и правильнее в условиях данной задачи. В первом случае запрашивается только текущая цена аск, во втором же - вся структура тика. Скорее всего (надо замерять) второй случай работает гораздо медленнее и, если Вам нужна только цена аск, то смысла получать структуру нет.
Алексей, спасибо за ответ.  Я сейчас переписываю эксперт из МТ4 в МТ5, в первую очередь мне нужно знать точно, как получить то, что в MQL4 называется Ask. А вопросы производительности буду потом обдумывать .. :)
 
MikeZv:
Алексей, спасибо за ответ.  Я сейчас переписываю эксперт из МТ4 в МТ5, в первую очередь мне нужно знать точно, как получить то, что в MQL4 называется Ask. А вопросы производительности буду потом обдумывать .. :)
О извиняюсь не понял вашего вопроса сразу, я написал что эти оба варианта работают в МТ4, а в МТ5 это аналоги ask и MarketInfo(_Symbol,SYMBOL_ASK); из старого МТ4
 
Sergey Gritsay:
О извиняюсь не понял вашего вопроса сразу, я написал что эти оба варианта работают в МТ4, а в МТ5 это аналоги ask и MarketInfo(_Symbol,SYMBOL_ASK); из старого МТ4

Там же два варианта было из MQL5 ...
И они аналоги "ask и MarketInfo(_Symbol,SYMBOL_ASK)из старого МТ4", я правильно Вас понял ?

 
MikeZv:

Там же два варианта было из MQL5 ...
И они аналоги "ask и MarketInfo(_Symbol,SYMBOL_ASK)из старого МТ4", я правильно Вас понял ?

Да, правильно.

 
Sergey Gritsay:
О извиняюсь не понял вашего вопроса сразу, я написал что эти оба варианта работают в МТ4, а в МТ5 это аналоги ask и MarketInfo(_Symbol,SYMBOL_ASK); из старого МТ4
SymbolInfoDouble(Symbol(),SYMBOL_ASK);

Причина обращения: