初学者的问题 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);
  }

第二版

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								

在两个MQL5函数 中获得的Ask值之间有什么区别?
这些函数中的哪一个返回的值与MQL4的Ask相似?

 
MikeZv:

我在请求社区的帮助。

在两个MQL5函数 中获得的Ask值之间有什么区别?
这些函数中哪一个返回的值与MQL4的Ask相似?

这两个例子都可以

 
MikeZv:

我在请求社区的帮助。

在两个MQL5函数 中获得的Ask值之间有什么区别?
这些函数中的哪一个返回的值与MQL4的Ask相似?

在写东西之前(就代码而言),要想一想解决问题的最经济、最正确的方法。在第一种情况下,只要求提供当前的Ask价格,而在第二种情况下,则要求提供整个tick结构。最有可能的是(我们必须测量它),第二种情况的工作速度要慢得多,如果你只需要询问价格,那么获得结构就没有意义。
 
Alexey Kozitsyn:
在你写任何东西之前(就代码而言),要想一想解决这个问题的最节约资源和最正确的方法。在第一种情况下,只要求当前的要价,在第二种情况下,要求整个tick结构。最有可能的是(应该测量一下),第二种情况的工作速度要慢得多,如果你只需要询问价格,那么获得结构就没有意义了。
我正在重写我的专家顾问,从MT4到MT5。 首先,我需要知道如何在MQL4中获得名为Ask的结构。 我以后会考虑性能问题。:)
 
MikeZv:
我目前正在重写我的专家顾问,从MT4到MT5。 首先我需要知道如何在MQL4中获得Ask。 我以后会考虑性能问题。:)
对不起,我没有直接理解你的问题。 我写的是这两个变体在MT4中工作,而在MT5中它们是ask和MarketInfo(_Symbol,SYMBOL_ASK)的类似物;从旧的MT4来看
 
Sergey Gritsay:
哦,对不起,我没有马上理解你的问题,我写的是这两种变体在MT4中都可以使用,在MT5中,它们是老MT4中的ask和MarketInfo(_Symbol,SYMBOL_ASK)的类似物。

从MQL5有两个变体...
他们是 "老MT4的ask和MarketInfo(_Symbol,SYMBOL_ASK) "的类似物,我理解得对吗?

 
MikeZv:

有两个MQL5的变体...
它们类似于 "老MT4的ask和MarketInfo(_Symbol,SYMBOL_ASK)",我的理解是否正确?

是的,这是正确的。

 
Sergey Gritsay:
哦,对不起,我没有马上理解你的问题,我写的是这些都在MT4中工作,但在MT5中,它们是老MT4中的ask和MarketInfo(_Symbol,SYMBOL_ASK); 的类似物。
SymbolInfoDouble(Symbol(),SYMBOL_ASK)。