トレードがストップロスでクローズされた場合、ボリュームは2倍になります。一方、テイクプロフィットでクローズされた場合は、最小ボリュームが使用されます。ストップロスやテイクプロフィットが発動した後にトレードが行われたかどうかは、OnTradeTransactionを使って確認できます。
優れた列挙型である ENUM_DEAL_REASON が ビルド1625 に追加されました:
| ENUM_DEAL_REASON | 理由の説明 |
|---|---|
| ... | ... |
| DEAL_REASON_SL | ストップロスが発動したために実行された取引 |
| DEAL_REASON_TP | テイクプロフィットが発動したために実行された取引 |
| ... | ... |
これをOnTradeTransactionで確認できます。
つまり、テイクプロフィットまたはストップロスによって取引が発生したかどうかを判断する非常にシンプルで信頼性のある方法です。
現時点(ビルド1626)では、このエキスパートアドバイザーはライブテストでのみ確認できます。チャート上で起動するか、実データでデバッグモード(MetaEditorでF5を押す)で動かす必要があります。私が使用したバイパスマニューバーは以下の通りです:
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); }
コメント 0