初心者の方からの質問 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								

2つのMQL5関数で 得られるAsk値の違いは何ですか?
MQL4のAskと同じような値を返す関数はどれですか?

 
MikeZv:

地域の皆さんに協力をお願いしています。

2つのMQL5関数で 得られるAsk値の違いは何ですか?
MQL4のAskと同じような値を返す関数はどれですか?

どちらの例も動作します

 
MikeZv:

地域の皆さんに協力をお願いしています。

2つのMQL5関数で 得られるAsk値の違いは何ですか?
MQL4のAskと同じような値を返す関数はどれですか?

何かを(コード的に)書く前に、問題を解決するための最も経済的で正しい方法を考える。最初のケースでは、現在のAsk価格のみが要求され、2番目のケースでは、ティック構造全体が要求されます。おそらく(測定しなければならないが)、2番目のケースは動作がかなり遅く、質問価格だけが必要な場合は、構造を取得する意味がない。
 
Alexey Kozitsyn:
何かを(コード的に)書く前に、問題を解決するための最も資源効率の良い、正しい方法を考えてください。最初のケースでは、現在のアスク価格のみが要求され、2番目のケースでは、ティック構造全体が要求されます。ほとんどの場合(測定されるべき)、2番目のケースははるかに遅く動作し、あなたが尋ねる価格だけが必要な場合は、構造を取得する意味がありません。
Expert Advisorを MT4からMT5に書き換える のですが、まず、MQL4でAskという構造体を取得する方法を教えてください。 パフォーマンスの問題は後で考えようと思っています。:)
 
MikeZv:
Expert Advisorを MT4からMT5に書き換える のですが、まずMQL4でAskを取得する方法を知りたいです。 パフォーマンスの問題は後で考えたいと思います。:)
すみません、ご質問の意味が分かりませんでした。 MT4ではどちらも動作すると書きましたが、MT5では古いMT4からのaskとMarketInfo(_Symbol,SYMBOL_ASK);の類似品です。
 
Sergey Gritsay:
ああ、すみません、質問をすぐに理解できませんでした。私は、これらの2つのバリエーションはMT4で動作し、MT5では古いMT4からのaskとMarketInfo(_Symbol,SYMBOL_ASK);の類似品であると書きました。

MQL5から2つのバリエーションがありました・・・。
そして、それらは「古いMT4のaskとMarketInfo(_Symbol,SYMBOL_ASK)」の類似品です、私はあなたを正しく理解しましたか?

 
MikeZv:

MQL5には2つのバリエーションがあった ...
そして、それらは「古いMT4のaskとMarketInfo(_Symbol,SYMBOL_ASK)」に類似していますが、私は正しく理解していましたか?

はい、その通りです。

 
Sergey Gritsay:
あ、すみません、質問をすぐに理解できませんでした。これらは両方ともMT4で動作すると書きましたが、MT5では古いMT4からのaskとMarketInfo(_Symbol,SYMBOL_ASK);の類似品になります。
SymbolInfoDouble(Symbol(),SYMBOL_ASK)。

理由: