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::PositionClose() を使う逆引きレシピ
- チャートにボタンを置いて、押したら注文したいOBJ_BUTTON を作り、OnChartEvent() で CHARTEVENT_OBJECT_CLICK を受け取ってボタン名を判定します。
- ゴールデンクロス・デッドクロスで売買したい短期 MA と長期 MA の値を「2本前」と「1本前」で比べ、上下が入れ替わったらクロスと判定します。
- 全ポジションを決済したい(EA のポジションだけも可)ポジションの一覧を後ろから順にループして、1つずつ決済します。マジックナンバーで絞れば特定の EA の分だけ決済できます。
- 一定時間たったポジションを決済したい現在のサーバー時刻 TimeCurrent() から約定時刻を引いて保有時間(秒)を求め、上限を超えたら決済します。
- 金曜日の指定時刻にポジションを決済したい(週末持ち越しを避けたい)サーバー時刻の曜日(day_of_week が 5)と時刻を判定し、指定時刻を過ぎたら全決済し、新規注文も止めます。
関連する関数
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
- CTrade::ResultDeal
- CTrade::ResultPrice












