
MQL5 標準ライブラリ CTrade クラス(MQL5)
CTrade::PositionModify()
- できること
- ポジションの損切り・利確を変更する
- 対応
- MQL5(#include <Trade\Trade.mqh> が必要)
CTrade::PositionModify() とは
CTrade クラスで、保有中のポジションの損切り(SL)・利確(TP)を変更するメソッドです。トレーリングストップや建値への移動に使います。
CTrade::PositionModify() の書式と引数
引数の組み合わせが違う 2 通りの書き方があります。
bool CTrade::PositionModify(
const ulong ticket,
const double sl,
const double tp
)
bool CTrade::PositionModify(
const string symbol,
const double sl,
const double tp
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
ticket | const ulong | 必須 | ポジションのチケット番号。 |
sl | const double | 必須 | 新しい損切り価格(0 なら損切りなし)。 |
tp | const double | 必須 | 新しい利確価格(0 なら利確なし)。 |
symbol | const string | 必須 | ポジションの銘柄名。 |
戻り値
リクエストを送信できたら true を返します。
CTrade::PositionModify() の使い方(コード例)
#include <Trade\Trade.mqh>
// 買いポジションの損切りを現在値の 20pips 下に追いかける
CTrade trade;
double pip = (_Digits == 3 || _Digits == 5) ? _Point * 10 : _Point;
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
if(ticket == 0 || PositionGetString(POSITION_SYMBOL) != _Symbol) continue;
if(PositionGetInteger(POSITION_TYPE) != POSITION_TYPE_BUY) continue;
double newSl = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_BID) - 20 * pip, _Digits);
if(newSl > PositionGetDouble(POSITION_SL) + _Point / 2)
if(!trade.PositionModify(ticket, newSl, PositionGetDouble(POSITION_TP)))
Print("変更失敗 ", trade.ResultRetcodeDescription());
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
CTrade::PositionModify() の注意点
- 今と同じ値で変更するとリターンコード 10025(変更なし)になります。値が変わるときだけ呼びます。
- 片方だけ変えるときも、もう片方には今の値(PositionGetDouble(POSITION_TP) など)を渡します。0 を渡すと外れます。
MQL4 と MQL5 の違い
MQL4 の OrderModify(チケット, OrderOpenPrice(), 新SL, 新TP, 0) にあたります。
CTrade::PositionModify() でよく出るエラー
関連する関数
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












