
MQL5 標準ライブラリ CTrade クラス(MQL5)
CTrade::PositionClosePartial()
- できること
- ポジションの一部を決済する
- 対応
- MQL5(#include <Trade\Trade.mqh> が必要)
CTrade::PositionClosePartial() とは
CTrade クラスで、ポジションのロットのうち指定した量だけを決済するメソッドです。利益が出たら半分だけ利確する、といった分割決済に使います。
CTrade::PositionClosePartial() の書式と引数
引数の組み合わせが違う 2 通りの書き方があります。
bool CTrade::PositionClosePartial(
const ulong ticket,
const double volume,
const ulong deviation=ULONG_MAX
)
bool CTrade::PositionClosePartial(
const string symbol,
const double volume,
const ulong deviation=ULONG_MAX
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket | const ulong | 必須 | 決済するポジションのチケット番号。 |
volume | const double | 必須 | 決済するロット数。 |
deviation | const ulong | ULONG_MAX | 許容するスリッページ(ポイント)。 |
symbol | const string | 必須 | 決済するポジションの銘柄名。 |
戻り値
リクエストを送信できたら true を返します。
CTrade::PositionClosePartial() の使い方(コード例)
#include <Trade\Trade.mqh>
CTrade trade;
if(PositionSelect(_Symbol))
{
ulong ticket = (ulong)PositionGetInteger(POSITION_TICKET);
double step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
double half = MathFloor(PositionGetDouble(POSITION_VOLUME) / 2 / step) * step;
if(half >= SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN))
if(!trade.PositionClosePartial(ticket, half))
Print("一部決済 失敗 ", trade.ResultRetcodeDescription());
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
CTrade::PositionClosePartial() の注意点
- 決済するロット数は最小ロット・刻み幅に合わせます。残りのロットも最小ロット以上になるようにします。
MQL4 と MQL5 の違い
MQL4 では OrderClose() の lots に保有量より小さい値を渡すと一部決済になります。
CTrade::PositionClosePartial() でよく出るエラー
関連する関数
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












