アルゴリズム開発者は、更新された価格に対応して取引戦略をタイムリーに実行するために、バーイベントを参照する必要があります。APIは、cBotの調整を行い、バーサイクルの異なるポイントで機会を捉えるために、BarOpened
およびBarClosed
イベントを提供します。
注意
バーイベントはcBotをコーディングするときにのみ処理できます。代わりに、インジケーターには、毎ティック呼び出されるCalculate()
メソッドがあります。
このガイドでは、OnBar()
メソッドとOnBarClosed()
メソッドの違いを説明し、いくつかの使用例を紹介します。
1分でわかるバーイベント!
OnBar()
メソッドは、インスタンスが追加されたチャートに新しいバーが描かれるたびにトリガーされます。これは、新しく形成されたバーに対して呼び出されます。OnBarClosed()
イベントハンドラーも新しいバーが作成されるたびにトリガーされます。ただし、これは現在のバーの前に閉じたバーに対して呼び出されます。- 正しいバーイベントを参照することで、テクニカル分析の精度が向上し、アルゴリズムのアクションに適したタイミングを選択できます。
BarOpened
およびBarClosed
がサポートするチャートタイプは、時間バー、ローソク足、ティック、レンコ、レンジ、および平均足チャートです。
OnBar()メソッドの使用方法
BarOpened
イベントの発生は、シンボルのスケジュールと価格の更新頻度に依存します。通常、プラットフォームユーザーは、チャートの時間枠設定でBarClosed
の発生頻度を調整できます。
注意
OnBar()
メソッドは、チャートの時間枠設定が許す限り頻繁に呼び出されることがあります。バーが閉じると、次のティックが到着し、新しいバーが形成されるまでOnBar()
はトリガーされません。
OnBar()
メソッドは、アルゴリズムが添付されているチャートに新しいバーが描かれるたびに同時に呼び出されます。そのため、OnBar()
ハンドラーは、cBotが定期的に繰り返すべきカスタム取引ロジックを定義するのに最適な場所です。
コードエディタで、以下のようにOnBar()
ハンドラーを指定できます。
override void OnBar()
OnBarClosed()メソッドの使用方法
Algo APIは、最後に閉じたバーに対してロジックを実行することも可能にします。これにより、実装したい戦略によっては、BarOpened
イベントを処理するよりも便利で正確な代替手段となる場合があります。バーが開くと、新しいバーは「十字線」として表示され、テクニカル分析に必要な完全なデータを持っていません。
BarClosed
イベントはBarOpened
イベントのエイリアスであり、BarOpened
イベントが発生する場合にのみ発生します。例えば、金曜日の最後のバーに対するBarClosed
イベントは、シンボルが週末に取引されない場合、月曜日に最初に開かれたバーで発生します。
注意
OnBarClosed()
メソッドは、新しいバーを形成するためにティックが到着するまで呼び出されません。
OnBarClosed()
イベントハンドラーは、次のように宣言できます。
override void OnBarClosed()
OnBarClosed()
メソッドのボディでは、BarClosed
イベントがトリガーされたときにcBotが実行する関連アクション(例:注文を実行する、パターンを描く、テクニカル分析のビジュアルを描画するなど)を決定できます。
このイベントハンドラーでアクセスされたとき、Bars
コレクションには現在のライブバーは含まれていませんが、他のコレクション(例:Positions
、Symbols
など)には実際のデータが含まれています。
OnBar()
およびOnBarClosed()
イベントハンドラーは、バックテストおよび最適化で意図通りに機能します。両方のメソッドは、時間バー、ローソク足、ティック、レンコ、レンジ、平均足チャートなどのさまざまなチャートタイプで使用できます。
サンプルcBotの作成
次の例では、EURCHFチャートの3本目のバーが開かれるたびに、マーケットオーダーを発注するcBotを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
このcBotはm1チャート上で起動されたため、実行されたマーケットオーダーの間隔はおよそ3分です。
以下は、DI+値(緑のライン)がDI-値(赤のライン)を超えた場合に「Uptrend!」と表示するネストされた方向性運動システム(DMS)インジケーターを含むcBotの例です。
DI- > DI+のとき、BarClosed
イベント内で「Downtrend!」と表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
まとめ
Algo APIに存在するさまざまなバーイベントは、アルゴリズム開発者がメソッドを呼び出す際のタイミングを正確に選択できるようにします。OnBar()
メソッドは、シンボルのスケジュールやチャートのタイムフレーム設定に応じて異なる頻度で呼び出すことができ、cBotの機能性を向上させます。OnBarClosed()
メソッドは、インジケーターと連携して作業するための便利なエイリアスとして機能します。