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

 
Ilya Malev:

OK、以下はそのコードです。

指標はあまり得意ではないのですが、このラインは疑問です。

return(CopyBuffer(hnd, buf, index, 1, Arr)==1?Arr[0]:EMPTY_VALUE);

戻り値

コピーされた配列の要素 数,またはエラーの場合は -1.

コピーされた要素が1つだけの場合はその値を返し、要素がない場合や1つ以上ある場合は EMPTY_VALUE を返します。

もしかしたら、その方がいいのかも?

return(CopyBuffer(hnd, buf, index, 1, Arr)>=1?Arr[0]:EMPTY_VALUE);
 
Ilya Malev:

OK、以下はそのコードです。

行を修正したら、うまくいったようです ))))

buffer2[i]=-MathRand()%5*Point();
 
Vladimir Pastushak:

行を修正したら、うまくいったようです ))))

結局、自分でそのように手を加えました。しかし、なぜロジックを変更したのか疑問です(MT4ではPointを掛けずにスケールが良かった)。また、描画しないバッファ(c DRAW_NONE)がチャートスケールに 影響を与えないようにする可能性がないのはなぜでしょう。

 
Vladimir Pastushak:

指標はあまり得意ではないのですが、この線は疑問です

1.戻り値 コピーされた配列の要素、またはエラーの場合は-1。

2.1つの要素がコピーされた場合,その値を 返します。

ステートメント1と2は矛盾していると思いませんか?
 
Ilya Malev:
1と2は矛盾していると思いませんか?

いいえ )))

1 1から限界まで可能

2 コピーされた要素が1つの場合のみ 2つ以上の場合、EMPTY_VALUEを返します。

ヘルプには次のように書かれています。

戻り値

コピーされた配列の要素 数,またはエラーの場合は-1. どのような場合に1要素がコピーされるのでしょうか?

 
Ilya Malev:

結局、自分でそのように手を加えました。しかし、なぜロジックを変更したのか疑問です(MT4ではPointを掛けずにスケールが良かった)。また、描画しないバッファ(c DRAW_NONE)がチャートスケールに 影響を与えないようにする可能性がないのはなぜでしょう。

インジケーターバッファを全てスルーするわけではありません。ライティング

for(int i=rates_total-MathMax(1, prev_calculated); i>=0; i--)

は全く正しくありません。変数rates_total、 prev_calculated、インジケータオフセットiStdDevが あります。最初のパスでは、空のインデックスを埋める必要があります。

インジケータシフト

で、インジケータバッファの残りのインデックスを通過する(値を代入する手段を通過する)。

 
Karputov Vladimir:

インジケーターバッファ全体を通過するわけではありません。エントリー

は全く正しくありません。変数rates_total、 prev_calculated、インジケータオフセットiStdDevが あります。最初のパスでは、空のインデックスを埋める必要があります。

で、インジケータバッファの残りのインデックスを通過する(値を代入する手段を通過する)。

オリジナル版では、すべてをゼロで埋める関数として、型

      for(int i=(int)SeriesInfoInteger(Symbol(), Period(), SERIES_BARS_COUNT)-1; i>=0; i--){
         buffer1[i]=0;
         buffer1[i]=0;
      }

この場合は関係ありません。もし空の値があったとしても、それはチャートの 最初にあり、一番端にあるウィンドウのスケールに影響を与えることはありません。ここではそうではなく、上の同志がすでに見抜いているのです。

 
Ilya Malev:

結局、自分でそのように手を加えました。しかし、なぜロジックを変更したのか疑問です(MT4ではPointを掛けずにスケールが良かった)。また、描画しないバッファ(c DRAW_NONE)がチャートスケールに 影響を与えないようにする可能性がないのはなぜか。

ここでは、その方法をご紹介します。

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
plot_empty_value >>のようになります。
 
Vladimir Pastushak:

いいえ )))

どのような条件で1つの要素がコピーされるのでしょうか?

はい )))

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

はい )))

はい、それならあなたのセリフは正しいです。