質問: ストラテジーアラート
回答: **重要な注記事項** ストラテジーの動作に固有の制限を考慮せずに、ストラテジーアラートを自動取引に利用する事は予期しない結果を招く事があります。自動のストラテジーアラートは実際の市場でのトレードにとても役立ちますが、航空機の自動操縦モードと同様に注意深く監視される必要があります。アラートを実際のトレードに利用される場合には、以下の点を考慮してください: * ブローカーエミュレーターは、ヒストリカルバーで価格の動きを仮定し注文をシュミレートする為、ストラテジーはインジケーターよりもリペイントの影響をより受けやすくなります。またリアルタイム(またはフォワードテスト)では、ストラテジーの構成によっては、ストリーミングティックの更新がソースとして利用されます。その場合、ヒストリカルバーでのシュミレートされたストラテジーの注文(チャート上の矢印)が、リアルタイムで同様に動作しない可能性がある事に十分に注意する必要があります。 * ストラテジーアラートを管理するエンジンは、ご利用のブローカーや取引所には接続されていませんので、注文やポジションを同期する事はできません。これはつまりストラテジーとご利用のブローカーが同期されなくなった場合、予期しない結果と損失が発生する可能性がある事を意味します。例えばチャート上で実行された注文が、ブローカーでは実行されない可能性があります。これは、ストラテジーではロングポジションを閉じた様に見えるけれども、実際には損失のポジションが引き続きオープンであり、市場が反対方向に動き続けているといった状況を招く可能性があります。損失が発生する可能性がある潜在的な別の例は、ブローカー側でショートポジションを保有している(売りの際に)、ストラテジーがロングポジションを保有している(買いを行っている)場合です。この時、ストラテジーがロングポジションを閉じる為に売り注文を送信した場合、実際にはブローカー側でショートポジションが増加します。 * トリガーされる頻度が高すぎる場合アラートは停止されます。これは3分間に15回を超えてトリガーされる場合に起こります。 **ストラテジーアラートはいつトリガーされますか?** ストラテジーアラートは、ストラテジーが注文を「実行」する時にトリガーされます。これはその注文が「置かれた」日時に必ずしも対応するわけではありません。 **ストラテジーアラートを作成する方法は?** ストラテジーアラートは以下の方法で作成する事ができます: * 「ストラテジーテスター」パネルの「アラートを追加」ボタンを使用する方法:! * ストラテジーのドロップダウンメニューを使用する方法:! * アラート作成のダイアログからストラテジーを選択する方法:! **ストラテジーアラートはどの様に動作しますか?** ストラテジーにアラートを作成すると、ストラテジーのコピーがサーバー上に作成されます。その後このコピーは、ご利用のブラウザのチャートのストラテジーとは独立して実行され、チャートのストラテジーを変更してもサーバー上で実行されているコピーの操作には影響しません。チャートのストラテジーの設定を変更してアラートの動作に反映させるには、対象の既存のアラートを削除して、新規にアラートを作成する必要があります。 **サーバー上でストラテジーはどの様に実行されますか?** ストラテジーは、過去のヒストリーデータで計算された後、リアルタイムでの計算に移ります。ストラテジーで置かれた注文がブローカーエミュレーターで実行されると、アラートがトリガーされます。アラートが有効期限になるまで、注文が実行される度に通知が送信されます。 ヒストリカルバーでの注文には通知は送信されません。リアルタイムで実行された注文のみアラートはトリガーされます。 同じバーで複数の通知を送信できますが、前述のように3分間に15回を超えてトリガーされるとアラートは停止します。 プレースホルダーを使用してアラートの通知メッセージを作成する事が可能です。アラートがトリガーされた時に、プレースホルダーはそれぞれの対応する値に置き換えられます。プレースホルーダーは以下のキーワードを2つの波括弧で囲む事で定義されます。例.*{{strategy.position_size}}*: * *strategy.position_size* - Pineの同じキーワードの値を返します。つまり現在のポジションサイズです。 * *strategy.order.action*- 実行された注文の文字列 “buy” または “sell” を返します。 * *strategy.order.contracts*- 実行された注文の取引数を返します。 * *strategy.order.price*- 注文が実行された価格を返します。 * *strategy.order.id*- 実行された注文のIDを返します(注文を生成するいずれかの関数 - strategy.entry, strategy.exit または strategy.order - の呼び出しで最初のパラメーターとして用いられている文字列)。 * *strategy.order.comment*- 実行された注文のコメントを返します(注文を生成するいずれかの関数 - strategy.entry, strategy.exit または strategy.order - の呼び出しの際にコメントパラメーターで用いられている文字列)。コメントの指定が無い場合には、strategy.order.id の値が利用されます。 * *strategy.order.alert_message*- 発注に用いられるいずれかの関数 - strategy.entry, strategy.exit または strategy.order - が呼び出される際にストラテジーのPineコードで用いられるアラートメッセージパラメーターの値を返します。この機能は、Pine v4でのみサポートされます。 * *strategy.market_position*- ストラテジーの現在のポジションを文字列の形式 - “long”, “flat” または “short” - で返します。 * *strategy.market_position_size*- 現在のポジションサイズを絶対値で、つまり正の数で返します。 * *strategy.prev_market_position*- ストラテジーの前のポジションを文字列の形式 - “long”, “flat” または “short” - で返します。 * *strategy.prev_market_position_size*- 前のポジションサイズを絶対値で、つまり正の数で返します。 プレースホルダーの詳細についてはこちらをご確認ください。