インディケータ: isNewBar

isNewBar:

この関数は、指定された時間枠に新しいバーが登場したかどうかをチェックすることができます。

インディケータやエキスパートアドバイザーでは、新しいバーが指定された時間枠に登場したかどうかの情報は頻繁に必要とされます。下記は事柄の例です。

NewBar() 関数の最初の呼び出しの後では、現在のバーは新しいバーは考えられません。関数はその時間を記録し、次のバーが新しいものとなります。
コードはコメントされていて簡単に理解できるので、有用であることを願っています。

作者: Prival

ありがとう。

Rosh:
Поправлено, спасибо

изменения не вступают в силу "немедленно"? пока все осталось без изменений...

変更は、新しいバージョンが発行されたときに有効になります。完了しました。ありがとう。

バックテスト中にIsNewBar()タイプのアプローチを使用する最良の方法について、皆さんはどのようにお考えですか?


ティックカウントに基づいて判断するのも1つですが、時間やBars()に基づいてIsNewBar()を使用するのは、バックテストがうまくいきません。

私に必要なものだ!ありがとう。

この関数を過去のバーに対して動作させるには、もう1つの入力パラメータ(チャート上の現在のバーの時間)を追加し、その時間をCopyTime() 関数の開始位置として使用する必要があります:

int copied=CopyTime(_Symbol,timeFrame,time,1,new_Time);

このようにして、チャートの過去のバーをループ処理し、現在のタイムフレームまたは別の(例えば、より長い)タイムフレームの新しいバーを確認 することができます。