CheckClose

ポジションを決済する条件をチェックします。

virtual bool  CheckClose()

戻り値

取引操作が実行された場合は true、それ以外の場合は false

注意事項

  1. エキスパートアドバイザーのストップアウト条件(資金管理オブジェクトの CheckClose() メソッド)がチェックされます。条件が満たされている場合は、ポジションが決済されて全ての注文が削除され(CloseAll(...)) 終了されます。あ
  2. ロング(買い)またはショート(売り)ポジション決済の条件をチェックし(CheckCloseLong() または CheckCloseShort() メソッド)、ポジションが決済されたら、全ての注文を削除します。(DeleteOrders() メソッド。

実装

//+------------------------------------------------------------------+
//| ポジションの決済または逆指値/指値注文削除をチェックする              |
//| 入力:なし                                                     |
//| 出力:取引操作が処理された場合は true、 それ以外の場合は false     |
//| メモ:なし                                                     |
//+------------------------------------------------------------------+
bool CExpert::CheckClose()
 {
  double lot;
//--- ポジションは呼び出しの前に選択されなければならない
  if((lot=m_money.CheckClose(GetPointer(m_position)))!=0.0)
    return(CloseAll(lot));
//--- ポジションの種類をチェックする
  if(m_position.PositionType()==POSITION_TYPE_BUY)
    {
    //--- ロングポジションを決済するか未決済の買注文を削除できるかを見る
    if(CheckCloseLong())
       {
        DeleteOrders();
        return(true);
       }
    }
  else
    {
    //--- ショートポジションを決済するか未決済の売注文を削除できるかを見る
    if(CheckCloseShort())
       {
        DeleteOrders();
        return(true);
       }
    }
//--- 操作なしで返る
  return(false);
 }