最初のアルゴ作成
エグジット注文の作成
このセクションでは、直前の 約定データの取得 セクションで計算した平均始値より上に複数ティック数離れて、エグジット注文を作成します。エグジット注文は、注文枚数としてエントリ注文の蓄積した約定枚数を使用し、注文価格として、平均始値に複数ティック数を追加します。
このセクションでは以下の内容を説明しています。
- ジャンプ ブロックを使ったアルゴの表示のクリーンアップ。
- 算術ブロックを使った、約定データに基づいたエグジット価格の計算。
エグジット注文の設定
エグジット注文の設定を開始するには
- [Blocks] パネルから、[Order] ブロックをドラッグして [Avg Open Price] ブロックの横に配置します。
- [Block Properties] パネルにて、以下の変更を行います。
- [Name] を [Exit Order] に設定します。
- [Side] パラメータを [Sell] に設定します。ブロックの配色が赤色に変化し、ブロックは売側の注文であることを視覚的に示しています。[Entry Order] ブロックを追加した際のように、[Order] ブロックを追加すると、幾つかの問題が [Problems] タブに表示されます。アルゴを完了すると、これらの問題は解決されます。
- [Exit Order] ブロックは [Instrument] 入力が必要なので、クリックとドラッグを行い、[Instrument] ブロック出力を [Exit Order] ブロックの [inst] 入力ポートに接続します。
- 表示のとおり、エッジを使ってポートを接続すると、アルゴは少し雑然として見えます。[Jump] ブロックを使ってアルゴの表示をクリーンアップできます。
- たった今作成したエッジを右クリックして、コンテキスト メニューから [Convert to jump] を選択します。エッジは、[Instrument] ブロックに接続された緑色のソースの [Jump] ブロックでと、[Exit Order] ブロックの [inst] 入力ポートに接続されたピンク色の目的地 [Jump] ブロックにより置き換えられ、2つとも、2つのブロック間の接続を示したソース [Instrument] ブロックの名前で表示されます。
- 2つの [Jump] ブロックを再整理して外観を整え、[Exit Order] ブロックへの残りの接続を完了できるようにスペースを確保します。
- ご使用のアルゴに関しては、エグジット注文枚数には蓄積約定枚数を使用することをお勧めします。同世にこの接続にも [Jump] ブロックを使用します。
- [Fill Qty] ブロックの赤色数値の出力ポートを右クリックし、コンテキスト メニューから [Add jump block] を選択します。
ブロックとポート名で構成された名前をもつ緑色の [Jump] ブロックが追加されたことが分かります (Fill Qty:accVal)。
- [Fill Qty:accVal] Jump ブロックを右クリックして、コンテキスト メニューから [Create destination block] を選択します。[Fill Qty:accVal] という名前のピンク色の目的地 [Jump] ブロックが、ソース [Jump] ブロックの近くのキャンバスに追加されます。
- [Exit Order] ブロックの近くの目的地 [Fill Qty:accVal] ブロックに移動し、[qty] 入力ポートに接続します。
エグジット注文の価格の決定
アルゴを完了するまでの残りの操作は、エグジット注文の価格を決定することです。平均始値より3ティック高く利益ターゲットを設定したい場合でも、ユーザーは利益ターゲットを変更できます。
エグジット注文価格を決定するには
- [Blocks] パネル検索欄にて、[min] をタイプし、[Min Price Increment] フィールド ブロックをキャンバスにドラッグします。次に変更は [Name] から [Tick Size] になります。
- エントリ ロジックに追加した [Best Bid] フィールド ブロックのように、[Min Price Increment] フィールド ブロックも限月接続が必要です。再び [Jump] ブロックを使って2つのブロックを接続します。
- 緑色の [Instrument] ソース Jump ブロックを右クリックして、コンテキスト メニューから [Create destination block] を選択します。
- 新規の [Instrument] 目的地 Jump ブロックを [Min Price Increment] ブロックの近くに移動し、2つのブロックを接続します。
- 次に [Number] ブロックを使って、エグジット注文に使用したい平均始値からの追加ティック数を指定します。[Number] ブロックをキャンバスに追加して、以下のブロック プロパティを設定します。
- [Name] を [Profit Ticks] に設定します。
- [Default Value] を [3] に設定します。
- [Variable Type] を [User Defined] に設定します。
- 3ティックの価格を決定するには、[Tick Size] ブロックと [Profit Ticks] ブロックの数値を掛け算する必要があります。
- [Blocks Panel] 検索欄にて、[mult] をタイプし [Multiply] ブロックをキャンバスにドラッグして、名前を [Profit] に変更します。
- [Profit Ticks] ブロックと [Tick Size] ブロックは [Profit] ブロックの入力に出力します。[Profit] ブロックの出力は、選択した限月の3ティックの数値を示しています。
- これでエグジット注文の価格を計算する準備ができました。
- [Avg Open Price] ブロックと [Exit Order] ブロックの間に [Add] ブロックを配置し、[Exit Price] に名前を変更します。
- [Profit] ブロックと [Avg Open Price] ブロック出力を [Exit Price] ブロックの入力に出力します。[Exit Price] ブロックの出力には、2つのブロックの追加の結果は表示されません。[Avg Open Price] ブロックは、アルゴが実行され約定が受信されるまで値を計算できないので、出力には [nan] が表示されます。
- [Exit Price] ブロックの出力を [Exit Order] ブロックの [price] 入力ポートに接続します。
これでアルゴは完了し、テストする準備ができました。
完了したアルゴのテスト
これで [Scalper] アルゴをテストして、予期したとおりに動作するかどうかを確認できます。アルゴのテストに関する情報については、このシリーズのエントリ ロジックのテストを参考にしてください。
アルゴをテストするには
- アルゴを開始して、最良買で買注文のエントリを発注します。
- 約定を受信すると、エグジット売注文が、平均始値より3ティック上に発注されていることを確認します。
- アルゴを停止してリセットします。[MD Trader] を使ってポジションを手仕舞いすることもできます。
- [Profit Ticks] 変数の値を増加させ、アルゴを開始します。
- エグジット注文は、約定を受信した際に、指定の追加ティック数上に離れて発注されていることを確認します。
- アルゴを中止します。
結論
この基本的なスカルパー ロジックはこれで終了です。ここから、スカルパー注文ブロックを仮想化させ、[Scalper] アルゴを連続的に実行し、優先順位を維持できます。またストップ注文を追加して、このアルゴがブラケット注文のように動作させることができます。またエントリ ロジックを編集して、[Scalper] アルゴを注文管理アルゴ (OMA) にすることなどもできます。