MetaTraderでFX自動売買研究所
Appx. エントリー/退出タイミング
エントリーや決済といったアクションの判定には、インディケータのクロスや大小関係が条件として用いられます。この条件を判定してアクションを行うタイミングの違いは、EAのパフォーマンスに影響を与えることがあります。
1. インディケータ同士のクロス (通常トリガーとして使われます)
例えばMA(移動平均線)の短期線と長期線のゴールデンクロスでロングエントリーすることとします。簡略化のために、この記事ではショートエントリーのことはひとまず考えません。ロングエントリーの条件は次のように表すことができます。
- (A) 1つ目の足: 短期移動平均 ≦ 長期移動平均
- (B) 2つ目の足: 短期移動平均 > 長期移動平均
このようにクロスは常に2本の足によって判定されます。これは「短期移動平均 > 長期移動平均」という条件だけでは、EAの起動直後にこの条件が満たされているといきなりポジションを持ってしまう、などの意図しない動作が発生することになるからです。
ところで、MAは通常次の式によって算出されます。
(その足の終値 + 前足の終値 + 2つ前の足の終値) / 3
その足の終値は、終値が確定していない場合は現在値が用いられます。例えば1時間チャートにおいて、8:28時点の移動平均の値は、次のように計算されます:
(8:28の価格 + 7時に始まる足の終値 + 6時に始まる足の終値) / 3
ここで1つ問題が発生します。それは、現在値は常に変動しているため、移動平均の値もそれに応じて常に変動していることです。つまり1度は最新の確定足(現在足の1つ前の足)と現在足の間で、それぞれのインディケータの値同士でクロスが発生したものの、その後の価格変動によってそのクロスが終値ベースでは取り消されてしまうことがよくあるのです。このような理由から、インディケータ同士のクロスでは、「終値の確定後、次足の始値でエントリー/決済」を行うことが一般的です。例えば7時に始まる足の移動平均が「(A) 短期移動平均 ≦ 長期移動平均」を満たし、8時に始まる足の移動平均が「(B) 短期移動平均 > 長期移動平均」を満たすことが確定したとき(= 終値が決まって次の足へ移行したとき)に、9時の始値でエントリーする、という具合です。(下図左)
これに対して、クロス発生直後に「即時エントリー/決済」を行う方法もあります。この方法では、7時に始まる足の移動平均が(A)を満たし、8時に始まる足の移動平均が現在値ベースで(B)を満たしたときに、エントリーが行われます。(下図右)
2. インディケータ同士の大小関係(通常フィルタとして使われます)
大小関係を単純に比較する条件は、通常フィルタとして用いられます。例えばMAの長期線が短期線を超えている場合のみエントリーする場合を考えましょう。条件は単純に、このようになります:
- 短期移動平均 < 長期移動平均
(先ほどの例とは逆ですのでご注意ください)
フィルタ条件も、エントリータイミングはトリガー条件とは別に選択が可能です。「終値の確定後、次足の始値でエントリー/決済」を選択した場合、最新の確定足を基準にフィルタ条件は判定されます。従って8:28にゴールデンクロスが起きる先の例では、9時になって8時の足が確定するまでは、フィルタ条件は通過していることになります。(下図左)
一方、「即時エントリー/決済」を選択した場合には、8:28にゴールデンクロスが起きた瞬間にフィルタは通過しなくなり、トリガーの判定は行われなくなります。ただしその後の値動きによって短期移動平均が長期移動平均を再度下抜けしたときには、再びフィルタ条件を通過し、トリガー条件の判定が行われます。