EAアルゴリズムの仕組み
この章では、アルゴリズムがEAの各パーツとどのように連携し、どのように動作するかについて説明します。
EAのモジュールシステム
Section titled “EAのモジュールシステム”EAはアルゴリズムが連携するモジュールで構成されています。このモジュール方式により、あらゆるEAを作成することが可能です。 モジュールは3つのカテゴリに分類されます:
- オープンを防止するモジュール
- オープン用モジュール
- クローズ用モジュール
モジュールの詳細はこちら。 上の画像で見たように、アルゴリズムは1つ以上のモジュールと連携します。次の章でこれについて詳しく説明します。
EAのアルゴリズムは、その状態に応じて異なる動作をします:
- オープン中の注文がない場合
- 1つ以上のオープン中の注文がある場合
オープン中の注文がない場合
Section titled “オープン中の注文がない場合”注文がオープンされていない場合、EAはOpen Signalを待つだけです。Signal が発動すると、Prevent Openモジュールがブロックしない限り、注文をオープンします。
1つ以上のオープン中の注文がある場合
Section titled “1つ以上のオープン中の注文がある場合”注文がオープンされている場合、EAはSL/TPがヒットしたか、Close Signalが発動したかに基づいて、オープン中の注文をクローズすべきかどうかを評価します。 SL/TPがヒットした場合、またはClose Signalが発動した場合、まず現在の注文をクローズした後に新しい注文が(仮に)オープンされるかどうかを確認します。 これはOpen Signal(Prevent Openモジュールを考慮)とClose Signalを評価することで行われます。つまり、注文がない場合と同じプロセスが評価されます。注文が(仮に)オープンされない場合、注文はクローズされます。 また、EAは追加の注文をオープンする必要があるかどうかも評価します。追加注文はOpen Signalが発動した場合のみオープンされます。つまり、少なくとも1つの処理済みクォートの間非アクティブであった後です。
- 注文はSLまたはTPがヒットした場合、またはClose Signalによってクローズされます。すべてのクローズ用モジュールは注文のSL/TPに影響を与えることができます。SLは注文の下(Buyの観点から)に設定され、同じモジュールまたは別のモジュールによって上方向にのみ移動できます。TPはその逆で、下方向にのみ移動できる可能性があります。SL/TP値は現在ブローカーに送信されません。
- 注文は、クローズ後すぐに再度オープンされない場合にのみクローズされます。アルゴリズムが注文をクローズすると、別の注文がすぐにオープンされ、手数料/Spreadの往復分を失うことになるためです。これが該当するかどうかを検証するため、クローズ前にOpen Signalが再評価されます。また、Prevent Openモジュールも考慮されます。例えば、注文がオープン後数秒でクローズされなければならない場合、Open Signalがまだアクティブである可能性が高いです。これはPrevent Openモジュール(Time gap between ordersモジュールなど)を使用することで対処できます。これにより、注文のクローズ後にOpen Signalがブロックされ、注文をクローズすることができます。
- Multiple order Open moduleを使用する場合、追加注文はOpen Signalがアクティブ(前の注文をオープンした)から非アクティブに切り替わり、再度アクティブになった時にオープンされ、追加の注文がオープンされます。