エラー、バグ、質問 - ページ 2282

 
TaywinLannister:

mql5で前のバーのインジケータ値を取得する方法を教えてください。

mql4ではSAVINGという変数がありましたが、mql5ではありません。HELP

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );

また、他の実装もあります。サインペンと同じで、色は違っても味は同じです。

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
インジケーターカラーバッファから 色を取得する方法は?
 
Vladimir Pastushak:
インジケーターカラーバッファから 色を取得する方法は?
各バッファーにはそれぞれ番号があります。そして、CopyBuffer関数では、第2パラメータがバッファ番号になります。しかし、それは色ではなく、色配列のインデックスになります。でも、それで、自分で何とかしてほしい。
 
Alexey Viktorov:
各バッファーにはそれぞれ番号があります。そして、関数CopyBufferでは、第2パラメータにバッファ番号を指定します。しかし、それは色ではなく、色配列のインデックスになります。でも、これで、うまくいけば、自分で処理できるようになります。

よくわからないのですが、もう少し具体的に教えてください。

#property indicator_color2  clrBlue, clrRed
SetIndexBuffer(1,upper_line_color,INDICATOR_COLOR_INDEX);   

バッファから色を取得 する方法upper_line_color ?・・・・・・?

 
Vladimir Pastushak:

よくわからないのですが、もう少し具体的に教えてください。

コードは、インジケーターから引用しています

#property indicator_buffers   5
#property indicator_plots     1
#property indicator_type1     DRAW_COLOR_BARS
#property indicator_color1    clrDarkViolet, clrCrimson, clrYellow

3色のアレイを生成するシステムです。(強いて言えば、プログラマがアクセスできない隠し配列です)。

   SetIndexBuffer(4, colorBufer, INDICATOR_COLOR_INDEX);

インジケータバッファ 4には、色配列からの色のインデックスが格納されています。

     colorBufer[j] = open[j] < close[j] ? 0.0 : open[j] > close[j] ? 1.0 : 2.0;

ここでは、色のインデックスがインジケータ・バッファに書き込まれ、システムはそのインデックスを使って配列にリストされたものから色を選択する。

従って、機能を使用した

CopyBuffer(indicator_handle, 4, 0, 1, buffer);

宣言された配列 buffer[] の最後のバーのカラーインデックスを受け取ります。


ps; 執筆中に、質問が追加されました。この説明で十分だと思います。修正する気はない。

 
実行中のエラー
void OnStart()
{
    string text1 = "\0ABCDEF",
           text2 = "\0ABC";
    Print(                text1 == text2,        ":",
           StringCompare( text1,   text2 ) == 0, ":", StringLen(text1), ":", StringLen(text2));
}

結果:true:false:7:4

長さの違う文字列が突然等しくなるのはなぜ?StringCompareを 使った比較では、逆の==結果が 得られるのに対して

 
Alexey Viktorov:

コードは、インジケーターから引用しています

3色のアレイを生成するシステムです。(強いて言えば、プログラマがアクセスできない隠し配列)。

インジケータバッファ 4は、色の配列からの色インデックスを含む

ここでは、色のインデックスがインジケータ・バッファに入力され、システムはインデックスを使用して、リストされたものから色を選択し、配列に入力する。

従って、機能を使用した

あらかじめ宣言しておいた配列 buffer[] の最後のバーのカラーインデックスを受け取る。


ps;書いているうちに、質問が追加されました。この説明で十分だと思います。修正する気はない。

そして、バッファバッファには、色ではなく、0,0 1,0 2,0 がコピーされます。

テストは動作しません


私の質問では、インデックスではなく色と書いてありますが、これらの操作なしに最後のバーでcolorBufer[0] としてインデックスが得られます。色名や色そのものを色として得るにはどうすればよいのでしょうか?

 
Vladimir Pastushak:

そして、色は0.0 1.0 2.0ではなく、バッファにコピーされます。

テストは動作しません

テスト済み、動作します。

ウラジミール・パストゥシャク

私の質問では、インデックスではなく色について書かれていますが、このような工夫をしなくても、最後のバーで インデックスcolorBufer[0] が得られます。

これを「Don't tailgate(尾行しない)」と言います。すぐにインデックスしか手に入らないと言ったはずだ。

 
Alexey Viktorov:

確認したところ、動作しています。

そして、これは "尻尾を曲げるな "ということです。すぐにインデックスしか手に入らないと言ったはずだ。

早速、色を書きました・・・お返事ありがとうございました.質問をもっとよく読んでください !

 
Vladimir Pastushak:

そして、すぐにカラーを書きました・・・お返事ありがとうございました.質問をよく読んでください !

どんな質問であれ、それが答えです。インジケーター表示の色を設定する方法は2つあります。2枚目を使用する。