新しいMetaTrader 4 Client Terminal 387とMetaTrader 4 Data Center build 387について - ページ 3

 
AlexSTAL:

具体的にどのような問題があるのでしょうか?昔も今も変わらない...。ティック毎の再計算がない...。


私もJunkoさんと同じで、すべてのインジケータが最適化されています。また、バッファ全体はtick 毎に再計算されるわけではありません。もし、1ティックごとに強制的に再初期化するのであれば、すべてのインジケータを書き直さなければならない。問題ないのでしょうか?ちなみにリピーターの声。

そして、自分のことを心配しているわけではありません。たまたま、これらの指標を使う人が非常に多いのです。しかし、彼らは現実の問題を抱えることになる。

ここでは、例えば、http://ruforum.mt5.com/showthread.php?t=374。

リンク先も豊富です。

 
AlexSTAL:

彼の説明を読んでみると...。

実際にご自身でテストされたのでしょうか?

具体的にどのような問題があるのでしょうか?昔のまま、今のまま...。ティック毎の再計算がない...。

私の指標となるバッファーフィリングは、変化条件によるものでした。変化があれば埋める、変化がなければ埋めない。387ではうまくいかなかった。

条件を外したらうまくいきました。うまくいかないときは、バッファにデフォルト値(初期化)が入っているのを確認しました。

もしかして、そんな風に見ていなかった?気づかなかったのか、それともインジケーターに重要でないのか?

Metaquotes社からの説明を待つべきでしょう。

 

これは指標の一部です。

// Если произошёл первый пуск индикатора или предыдущим блоком разрешена развёртка или изменились параметры окна.
if (gl_nCounterTeak == 1 || st_bRecalculation == true || st_nWBarsPerChart != tmp_nBarsPerChart || st_nWFirstVisiblBar != tmp_nFirstVisiblBar)
 {// Закрепляем значок вызова свойств индикатора.
  st_nWBeginSearch = st_nWFirstVisiblBar - st_nWBarsPerChart;
  if (st_nWBeginSearch < -1) // Если справа есть свободное пространство, закрепляем значок вызова свойств индикатора.
   {
    GetClientRect(gl_hWindow, st_aiRect); // Расчёт размеров окна.
    gl_adBufIndicator2[0] = 0.35 * (gl_dMaxPositionMark - gl_dMinPositionMark) + gl_dMinPositionMark;
    SetIndexShift(1, - st_nWBeginSearch - 0.5 * ((36 * st_nWBarsPerChart) / st_aiRect[2] - 1));
    SetIndexDrawBegin(1, 0);
   }
  // Устанавливаем развёртку.
  if (st_nWBeginSearch <= 0) st_nWBeginSearch = 0;
  for (i = st_nWFirstVisiblBar; i >= st_nWBeginSearch; i--)
   {// Очищаем буфер от лишних значков для вызова окна свойств индикатора.
    if (i > 0) gl_adBufIndicator2[i] = EMPTY_VALUE;
    // Закрепление вертикальной развёртки графика с помощью индикаторного буфера.
    if (i % 2 == 0) gl_adBufIndicator1[i] = gl_dMaxPositionMark; // Для фиксации верхней координаты дополнительного окна.
    else gl_adBufIndicator1[i] = gl_dMinPositionMark;            // Для фиксации нижней координаты дополнительного окна.
   }
  // Расчёт и создание горизонтальных линий разметки. Создаём один раз и отслеживаем через заданный уровень при увеличениях максимальных уровней.
  // Установка вертикальной развёртки, расчёт и создание горизонтальных линий разметки.
  if ((gl_dMaxPositionMark - gl_dMinPositionMark) != tmp_dDifferPosMark)
   {
    MakingHorizontalSectoring(AutoStep, Color_LNH, Color_LN0, gl_dMaxPositionMark, gl_dMinPositionMark, Step_LNH, 15, Style_LNH, Width_LNH, st_nWindow, gl_sFullNameObject);
   }
 }
 
nen:

プライベートメッセージのやり取りを削除していないのなら、見てください、そこに最適化の例を挙げました。その時、あなたは「自分にとって明確である」と書きました。

通信は削除してしまいましたが、なくても最適化とは何かは十分理解しています...。

自分が恐れていること、しかし現実には再現できていないことを、最小限のコードで明確に述べる...。

まったくもって意味不明な会話ですが...。どの指標もティック ごとにバッファの再初期化を要求してこないのですが...。

だからこそ、何を言っているのか理解しようとするのですが......。


to Zhunko: 後で理解するようにします。

 

テストインジケータ(エラーを見つけるために投稿したもの)の数行を変更したものです...。

バッファの再計算は、どのティックでも全く行われません。

全く変わっていない

ファイル:
 
AlexSTAL:

テストインジケータ(エラーを見つけるために投稿したもの)の数行を変更したものです...。

バッファの再計算は、どのティックでも全く行われません。

全く変わっていない

コードを見た。ダニがいない。だから、変わらないんです。チャートの更新からティックが必要です。
 
Zhunko:
コードを見た。ダニがいない。だから、変わらないんです。チャートの更新からティックが必要です。
チャート更新からのティック」とは何ですか?人為的なトリガーか、APIによるものか?
 

こちらが最後のティックメッセージのものです。

バッファが更新されない

2147483647という数字は、新しいバーのバッファーの値です。

ファイル:
 
AlexSTAL:
チャート更新からのティック」とは何ですか?人為的に発動させるのか、APIによるものなのか?

この点だけが、私たちの条件の違いです。

インジケータではなく、ループしたスクリプトでリフレッシュするのがよいでしょう。

 
Zhunko:

それが、私たちの条件の唯一の違いです。

6ページ目でわかりました。

さて非常に興味深いのですが、nenはどこで人工チックを起こすのでしょうか?