
MQL5 標準ライブラリ CTrade クラス(MQL5)
CTrade::PositionClose()
- できること
- ポジションを決済する
- 対応
- MQL5(#include <Trade\Trade.mqh> が必要)
CTrade::PositionClose() とは
CTrade クラスで、ポジションを決済するメソッドです。チケット番号を渡すとそのポジションを、銘柄名を渡すとその銘柄のポジションを決済します。
CTrade::PositionClose() の書式と引数
引数の組み合わせが違う 2 通りの書き方があります。
bool CTrade::PositionClose(
const ulong ticket,
const ulong deviation=ULONG_MAX
)
bool CTrade::PositionClose(
const string symbol,
const ulong deviation=ULONG_MAX
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket | const ulong | 必須 | 決済するポジションのチケット番号。 |
deviation | const ulong | ULONG_MAX | 許容するスリッページ(ポイント)。省略すると SetDeviationInPoints() で設定した値(初期値 10)。 |
symbol | const string | 必須 | 決済するポジションの銘柄名。 |
戻り値
リクエストを送信できたら true を返します。
CTrade::PositionClose() の使い方(コード例)
#include <Trade\Trade.mqh>
// この EA(マジックナンバー 12345)のポジションをすべて決済
CTrade trade;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
if(ticket == 0) continue;
if(PositionGetString(POSITION_SYMBOL) != _Symbol || PositionGetInteger(POSITION_MAGIC) != 12345) continue;
if(!trade.PositionClose(ticket))
Print("決済失敗 ticket=", ticket, " ", trade.ResultRetcodeDescription());
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
CTrade::PositionClose() の注意点
- 銘柄名で決済する書き方は、ヘッジ口座では「その銘柄で、SetExpertMagicNumber() と同じマジックナンバーの最初のポジション」だけが対象です。複数のポジションを決済するときはチケット番号でループします。
- ループで決済するときは、PositionsTotal() - 1 から 0 へ逆順に回します。
MQL4 と MQL5 の違い
MQL4 の OrderClose(チケット, ロット, OrderClosePrice(), スリッページ) にあたります。
CTrade::PositionClose() でよく出るエラー
関連する関数
CTrade クラス(MQL5)の関数一覧
- CTrade::Buy
- CTrade::Sell
- CTrade::BuyLimit
- CTrade::SellLimit
- CTrade::BuyStop
- CTrade::SellStop
- CTrade::PositionOpen
- CTrade::PositionClose
- CTrade::PositionClosePartial
- CTrade::PositionModify
- CTrade::OrderModify
- CTrade::OrderDelete
- CTrade::SetExpertMagicNumber
- CTrade::SetDeviationInPoints
- CTrade::SetTypeFilling
- CTrade::SetTypeFillingBySymbol
- CTrade::ResultRetcode
- CTrade::ResultRetcodeDescription
- CTrade::ResultOrder












