
MQL5 標準ライブラリ CTrade クラス(MQL5)
CTrade::Buy()
- できること
- 成行で買い注文を出す
- 対応
- MQL5(#include <Trade\Trade.mqh> が必要)
CTrade::Buy() とは
CTrade クラスで、成行の買い注文を出すメソッドです。ロット数だけ指定すれば、チャートの銘柄を現在の Ask で買います。MQL4 の OrderSend() に近い感覚で、1行で発注できます。
CTrade::Buy() の書式と引数
bool CTrade::Buy(
const double volume,
const string symbol=NULL,
double price=0.0,
const double sl=0.0,
const double tp=0.0,
const string comment=""
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
volume | const double | 必須 | ロット数。 |
symbol | const string | NULL | 銘柄名。NULL ならチャートの銘柄。 |
price | double | 0.0 | 注文価格。0 なら現在の Ask が使われます。 |
sl | const double | 0.0 | 損切り価格。0 なら付けません。 |
tp | const double | 0.0 | 利確価格。0 なら付けません。 |
comment | const string | "" | 注文のコメント。 |
戻り値
リクエストを送信できたら true を返します。注文が成立したかは ResultRetcode() が TRADE_RETCODE_DONE(10009)かどうかで確認します。
CTrade::Buy() の使い方(コード例)
#include <Trade\Trade.mqh>
CTrade trade;
trade.SetExpertMagicNumber(12345);
trade.SetDeviationInPoints(30);
double pip = (_Digits == 3 || _Digits == 5) ? _Point * 10 : _Point;
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = NormalizeDouble(bid - 20 * pip, _Digits);
double tp = NormalizeDouble(bid + 40 * pip, _Digits);
if(trade.Buy(0.1, _Symbol, 0.0, sl, tp, "my EA") && trade.ResultRetcode() == TRADE_RETCODE_DONE)
Print("買い成功 deal=", trade.ResultDeal(), " 価格=", trade.ResultPrice());
else
Print("買い失敗 ", trade.ResultRetcode(), " ", trade.ResultRetcodeDescription());OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
CTrade::Buy() の注意点
- マジックナンバーは事前に SetExpertMagicNumber() で設定しておきます。設定しないと 0 になります。
- Trade.mqh の CTrade は、成行注文の執行タイプ(FOK・IOC)を銘柄に合わせて自動で選ぶため、10030 エラーが出にくくなっています。
- 失敗するとエキスパートタブに CTrade::OrderSend のログが出ます。
MQL4 と MQL5 の違い
MQL4 の OrderSend(_Symbol, OP_BUY, ロット, Ask, スリッページ, SL, TP, コメント, マジック) にあたります。
CTrade::Buy() でよく出るエラー
関連する関数
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












