MQL5でOpen,Low,High,Closeのパラメータを取得するにはどうしたらいいですか? - ページ 3

 

スクリプトの一例です。

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i=0;i<3;i++)
      Print("# ",i,": ",DoubleToString(iOpen(Symbol(),PERIOD_CURRENT,i),Digits()));
//---
  }
//+------------------------------------------------------------------+

と結果が出ました。

2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 0: 1.11399
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 1: 1.11425
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 2: 1.11319


編集しました。

ファイル:
1.mq5  2 kb
 

それがこちらです。

4pcと5pcの両方で使用可能

4pc では、Period()、Symbol()などを適用する。

5pcでは、_Period、_Symbol()などを適用します。

iBars

指定したシンボルと期間のヒストリーに含まれるバーの数を返す

iBarShift

指定された時刻が属するバーのオフセットを返す。

iClose

対応するチャートのバーの終値を返します。

アイハイ

対応するチャートのハイバープライスの値を返します。

iHighest

対応するグラフのうち、最も高い値のインデックスを返します。

iLow

対応するチャートの最小バー価格の値を返します。

iLowest

対応するグラフの最小の検出値のインデックスを返します。

アイオープン

対応するチャートのバーオープン価格の値を返します。

アイタイム

対応するチャートのバーのオープンタイムを返します。

iVolume

チャート内のバーのティックボリュームの値を返す

iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
CopyRatesでは、うまくいきました。効くんです。
 

そして、CopyRatesの バリアントは以下の通りです。

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
      return;

   for(int i=0;i<count;i++)
      Print("Open # ",i,": ",DoubleToString(rates[i].open,Digits()));
//---
  }
//+------------------------------------------------------------------+

と結果

2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 0: 1.11399
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 1: 1.11425
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 2: 1.11319
ファイル:
1.mq5  3 kb
 
Alexey Viktorov:

アレクセイ、これは戦車に乗っている人のためのものです。また、通常のものでは、CopyRates()はmql4でも利用可能です。だから、iOpenなどという無意味なものはすべて忘れてください。なぜmql5に入れたのかも理解できない。

おお!ティーンエイジャーが現れた!))

CopyRates()を使って取得することを提案された、連続した多くのOHLC値を持つことが実際に必要なのはなぜでしょうか?- 瞑想する以外?)

あまり実用的ではありませんが、ここで些細なことですが、フラクタルのインジケータのアンロード(または使用)、私はこのようなコードを持っています。

#define  Time(n)   iTime(NULL,0,n)
//+------------------------------------------------------------------+
void OnStart()
  {
   int handle=iFractals(NULL,0);
   if(handle==INVALID_HANDLE)
     {
      Print("Error№,",::GetLastError()," create handle indicator");
      return;
     }
   int count=0,i=0;
   double buffup[1],buffdn[1];
   while(i<Bars(_Symbol,_Period) && count<10)
     {
      if(CopyBuffer( handle,0,i,1, buffup)<1) Print("buffup , error № ",::GetLastError());
      if(CopyBuffer( handle,1,i,1, buffdn)<1) Print("buffup , error № ",::GetLastError());
      if(buffup[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Up = ",buffup[0]);
      if(buffdn[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Dn = ",buffdn[0]);
     i++;
     }
  }
//+------------------------------------------------------------------+


CopyRates() を使用したコードを教えてください ...

 
Vladimir Karputov:

そして、CopyRatesの バリアントは以下の通りです。

と結果

しかし、新しいバーのデータを常に追跡する必要がある場合、すべてのティックで CopyRatesを参照し、すべてのティックでタイムシリーズを作成することを意味します。

CopyRatesを置くのに最適な場所を考えています。

 
Реter Konow:

しかし、常に新しいバーのデータを追跡する必要がある場合、すべてのティックで CopyRatesを参照し、すべてのティックでタイムシリーズを作る必要があるのでしょうか?

CopyRatesをどこに置くのが良いのか、理解しようとしています。

上記ですでに、「なぜ?ゼロバー(チャート上で一番右のバー)の値を考慮する必要はありますか?

 
Vladimir Karputov:

私はすでに上記で、「なぜ?ゼロバー(グラフの一番右のバー)の値を考慮する必要がありますか?

テーブル用。表には4つのパラメータがあります:Open, Close, High, Low, 現在のバーを含まない直近の10本のバーです。

現在のもの(ゼロ)から逆算する意味で、ラスト。

 
Igor Makanu:

おっ!ティーンエイジャー登場))

CopyRates()を使って取得することを提案されていますが、なぜ実際には多くの連続したOHLC値を持つのでしょうか?- 瞑想する以外?)

あまり実用的ではありませんが、ここで些細なことですが、フラクタルのインジケータのアンロード(または使用)、私はこのようなコードを持っています。


CopyRates() を使ったコードを見せてください ...

イゴール、1年生になりなさい。そこで文字を教えてくれるので、勉強すればCopyRatesとCopyBufferの違いが理解できるようになります。

CopyRatesを使わないで、この問題を解決する方法を教えてください。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MQL5でOpen,Low,High,Closeのパラメータを取得する方法は?

レトログ・コノウ さん 2019.07.29 19:58

テーブル用。表には4つのパラメータがあります:Open、Close、High、Low、現在のものを含まない過去10本のバー です。

最後に、現在の1(ゼロ)から逆算した場合ということです。


 
Реter Konow:

テーブル用。表には4つのパラメータがあります:Open, Close, High, Low,現在のバーを含まない 直近の10本のバーです。

現在のもの(ゼロ)から逆算する意味で、ラスト。

この場合、最初の小節からのCopyRatesは一義的に10となる。そして、毎回のティックではなく、新しいバーが表示されたときに十分に呼び出す。