MQL5で学び、共に書く - ページ 8

 

私はMCL4からMCL5への単純な価格構造の転送のアルゴリズムを書いている、MCL5のストキャスティックMASDとRSIにコピーするMCL4コードの例では、MCL4データへのアクセスの基本的なメソッドがあります。

もうすぐ、必要なものが揃う。

今、私はiMaOnArRAu関数と格闘しています。mt5はユーザー配列から移動平均の 最も簡単な方法を 得るためにそれを提供しないので。

あらゆる技術的なツールのライブラリーを拡張する予定です。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Методы скользящих - Документация по MQL5
 

私ってバカだなぁ...。書き方がわからない...。

こんなコードがあります。

   MqlRates rates[];
   
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(_Symbol,_Period,0,1000,rates);
   

i番目からj番目までのバーのうち、Lowが最も低いバーのインデックスを取得したいのです。

ArrayMinimum関数を 使おうとしているのですが。

int k=ArrayMinimum(rates.low,i,j-i+1); - 誤り

int k=ArrayMinimum(rates[].low,i,j-i+1); - 誤り

正しい方法とは?

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
owl:

私ってバカだなぁ...。書き方がわからない...。

こんなコードがあります。

i番目からj番目までのバーのうち、Lowが最も低いバーのインデックスを取得したいのです。

ArrayMinimum関数を使おうとしているのですが。

int k=ArrayMinimum(rates.low,i,j-i+1); - 誤り

int k=ArrayMinimum(rates[].low,i,j-i+1); - 誤り

正しい方法とは?

直接アクセスの関数を使用して、MqlRatesは、 "構造体 "の配列であり、あなたは、配列Lowが必要です、ここでは、同様に高いための例である。

   rates_total=CopyHigh(NULL,_Period,_start,_end,iHigh);
   if(rates_total<=0)
      return;
   else
      HighDay=iHigh[ArrayMaximum(iHigh,0,rates_total)];
   rates_total=CopyLow(NULL,_Period,_start,_end,iLow);
   if(rates_total<=0)
      return;
   else
      LowDay=iLow[ArrayMinimum(iLow,0,rates_total)];

コードの例を見てみましょう。これは、https://www.mql5.com/ru/code/102

PivotPointUniversal
PivotPointUniversal
  • 投票: 17
  • 2010.04.26
  • Dmitry
  • www.mql5.com
Опорные точки Pivot без использования объектов строятся по всей доступной истории. Пять вариантов расчета. Три варианта построения: дневной, недельный, месячный. Для дневных уровней есть возможность смещения по GMT.
 
vdv2001:

ダイレクトアクセス関数を使用して、MqlRatesは、 "構造体 "の配列であり、あなたがLowの配列が必要です、ここでは、すぐにとHighのための例である。

それは理解できる。私の場合、今、書きました。

         int k=i; double min=rates[k].low;
         for (int m=i+1;m<=j;m++)
            if (rates[m].low<min) {min=rates[m].low; k=m;}

アレイの束はいらない。資源を倹約しているわけでもなく、あまりいいものでもない...。

ArrayMinimumについて 正確に理解したかったのですが、この関数を構造体の配列で使用することは可能でしょうか...。

 
owl:

それは理解できる。私の場合、ただ書いただけです。

アレイの束はいらない...。省資源ではないし、あまりいいとは言えないが...。

ArrayMinimumを扱いたかっただけなのですが、この関数を構造体の配列で使用することは可能でしょうか...。

構造体の配列に大量の情報を格納する方が、倍数の配列より経済的だとお考えなら、私はただ手を挙げているだけです。

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем 
  };

それともint、long、dateを格納する方がメモリ的に経済的なのでしょうか)

とか、ゴミの山から必要なものを拾い集める方が経済的だとか、あははは.

 
vdv2001:

構造体の配列に大量の情報を格納する方が、倍数の配列より経済的だと思うなら、私はあきらめるしかないでしょう

それとも、int型、low型、date型を保存する方がメモリ的に経済的なのでしょうか?)

とか、ゴミの山から必要なものを拾い集める方が経済的だとか、あははは.

まあ...もちろん、費用対効果については少しオーバーですが...。でも、実は、MqlRatesから ほとんどすべての情報が必要なんです(多分、ボリュームを除いて、それは事実ではありませんが・・・)
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 

普段、何かを質問する前に、いろいろな資料を調べて答えを探します。

しかし、1週間ほど検索した今、答えがないことに気づき、まだ誰も出会っていないようです。そこで、私はパズルを提案します。

初期データです。

1) Levels and Arrows iS7N_SacuL_v3.mq5 のようなシンプルなインジケータを持っています(添付)。

2) このインジケータ aS7N_TIC.mq5 からデータを受信しようとする Expert Advisor(添付)。

だから!

5つのインジケーターバッファの うち、正しくデータが返されるのは2つだけです。

詳しい解説は後ほど!!!

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
ファイル:
 

よくよく調べてみると、3インジケーターバッファも4インジケーターバッファも、必ずしも正しいデータが得られるとは限らないことがわかりました(どれが正しくてどれが正しくないかは分かりませんが)。

チャートを見てください。左側のデータウィンドウには、チャート上のインジケータの値、その下にはExpert Advisorで取得した値が表示されています。ほとんどの価値観は同じですが、より...

この点については、チャートとテスターで異なるヒストリカルデータを使用することを提案させていただきました。

いかがでしょうか?

 

いよいよ本題!1,2,5のインジケーターバッファのデータを通常の方法で取得することはできません。

問題は、これらの配列のデータを計算する際に、前に計算したバーのデータが考慮されることである。

もちろん、インジケータを呼び出す 際に、prev_calculatedの 値に関係なく、今後N本の バーを強制的に再計算させることができます。

prev_calculatedの 値が0 でない状態で、インジケータ値の呼び出しと計算が行われているのでしょう

ほとんどの指標では、リソースを節約できるため、これは正しいのですが、与えられた例ではうまくいかないでしょう。

どうすればいいのか?あなたの感想は?

また、すべての計算をExpert Advisorに移行することも可能ですこのオプションは機能しますが、同じではありません...。ズボンを頭からかぶらないようにしたいです。

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 

をExpert Advisorで使用します。

int resIup = CopyBuffer(iCusHandlI_H4,2,0,1,dBufIup_H4);
の値が取得されると、ローソク足が閉じるまで1ティックごとにその値のインジケーターバッファの 値が変更されます。
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.