Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 515

 
-Aleks-:

Alternativ dazu

if (StatTime==1)

 Time=iTime(NULL,1440,0);

 StatTime=0;

 }

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

           {

  StatTime=1;

           } 

Ich denke, dies wäre interessanter

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

Hallo!

Es gibt einen Code von Funktionen "newt" und "dlt", die einen Algorithmus lösen. Bitte sagen Sie mir, was dieser Algorithmus ist? Welches Problem wird mit diesen Funktionen gelöst?

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

Ich bitte die Gemeinschaft um Hilfe.

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

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

Was ist der Unterschied zwischen dem Ask-Wert, der in zwei MQL5-Funktionen erhalten wird?
Welche dieser Funktionen gibt einen Wert zurück, der dem von Ask aus MQL4 ähnelt?

 
MikeZv:

Ich bitte die Gemeinschaft um Hilfe.

Was ist der Unterschied zwischen dem Ask-Wert, der in zwei MQL5-Funktionen erhalten wird?
Welche dieser Funktionen gibt einen Wert zurück, der dem von Ask aus MQL4 ähnelt?

Beide Beispiele funktionieren

 
MikeZv:

Ich bitte die Gemeinschaft um Hilfe.

Was ist der Unterschied zwischen dem Ask-Wert, der in zwei MQL5-Funktionen erhalten wird?
Welche dieser Funktionen gibt einen Wert zurück, der dem von Ask aus MQL4 ähnelt?

Bevor Sie etwas (in Form von Code) schreiben, überlegen Sie, wie Sie das Problem am wirtschaftlichsten und korrektesten lösen können. Im ersten Fall wird nur der aktuelle Ask-Kurs abgefragt, während im zweiten Fall die gesamte Tick-Struktur abgefragt wird. Höchstwahrscheinlich (wir müssen es messen), der zweite Fall funktioniert viel langsamer, und wenn Sie nur den Preis fragen müssen, gibt es keinen Grund, die Struktur zu bekommen.
 
Alexey Kozitsyn:
Bevor Sie etwas (in Form von Code) schreiben, sollten Sie sich überlegen, wie Sie das Problem am ressourcenschonendsten und korrektesten lösen können. Im ersten Fall wird nur der aktuelle Briefkurs abgefragt, im zweiten Fall wird die gesamte Tickstruktur abgefragt. Höchstwahrscheinlich (es sollte gemessen werden) der zweite Fall funktioniert viel langsamer, und wenn Sie nur fragen Preis benötigen, gibt es keinen Sinn in den Erhalt der Struktur.
Ich schreibe meinen Expert Advisor von MT4 auf MT5 um. Zunächst einmal muss ich wissen, wie ich die Struktur namens Ask in MQL4 erhalte. Über Leistungsprobleme werde ich später nachdenken. :)
 
MikeZv:
Ich bin neu schreiben Expert Advisor von MT4 zu MT5, vor allem muss ich wissen, wie man ein Ask in MQL4. Ich werde über Performance-Probleme später denken. :)
Es tut mir leid, ich habe Ihre Frage nicht sofort verstanden. Ich habe geschrieben, dass beide in MT4 funktionieren, während sie in MT5 die Analoga von ask und MarketInfo(_Symbol,SYMBOL_ASK); aus dem alten MT4 sind
 
Sergey Gritsay:
Tut mir leid, dass ich Ihre Frage nicht sofort verstanden habe. Ich habe geschrieben, dass diese beiden Varianten in MT4 funktionieren und in MT5 sind sie Analoga von ask und MarketInfo(_Symbol,SYMBOL_ASK); aus dem alten MT4

Es gab zwei Varianten von MQL5 ...
Und sie sind Analoga von "ask und MarketInfo(_Symbol,SYMBOL_ASK)aus dem alten MT4", habe ich Sie richtig verstanden?

 
MikeZv:

Es gab zwei Varianten von MQL5 ...
Und sie sind analog zu "ask und MarketInfo(_Symbol,SYMBOL_ASK)aus dem alten MT4", habe ich Sie richtig verstanden?

Ja, das ist richtig.

 
Sergey Gritsay:
Oh, tut mir leid, ich habe Ihre Frage nicht sofort verstanden, ich schrieb, dass diese beiden in MT4 funktionieren, aber in MT5 sind sie Analoga von ask und MarketInfo(_Symbol,SYMBOL_ASK); aus dem alten MT4
SymbolInfoDouble(Symbol(),SYMBOL_ASK);