
MQL5 MQL5 の取引関数
OrderCalcMargin()
- できること
- 注文に必要な証拠金を計算する
- 対応
- MQL5
OrderCalcMargin() とは
MQL5 で、指定した銘柄・ロット数・価格で注文したときに必要な証拠金を、口座通貨で計算する関数です。余剰証拠金で持てる最大ロットを計算するときなどに使います。
OrderCalcMargin() の書式と引数
bool OrderCalcMargin(
ENUM_ORDER_TYPE action,
string symbol,
double volume,
double price,
double &margin
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
action | ENUM_ORDER_TYPE | 必須 | 注文の種類。ORDER_TYPE_BUY または ORDER_TYPE_SELL。 |
symbol | string | 必須 | 銘柄名。 |
volume | double | 必須 | ロット数。 |
price | double | 必須 | 注文価格。 |
margin | double & | 必須 | 計算した必要証拠金が入る変数。 |
戻り値
計算できたら true、できなければ false を返します。
OrderCalcMargin() の使い方(コード例)
// 余剰証拠金の半分で持てるロット数を計算する
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double marginPerLot = 0;
if(OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, 1.0, ask, marginPerLot) && marginPerLot > 0)
{
double free = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
double step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
double lots = MathFloor(free * 0.5 / marginPerLot / step) * step;
Print("1ロットの必要証拠金=", marginPerLot, " 持てるロット=", lots);
}OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
OrderCalcMargin() の注意点
- 口座のレバレッジや銘柄の証拠金設定に従って計算されます。いま持っているポジションや待機注文は考慮されません。
MQL4 と MQL5 の違い
MQL4 では MarketInfo(銘柄, MODE_MARGINREQUIRED) で1ロットあたりの必要証拠金を取得します。
OrderCalcMargin() でよく出るエラー
関連する関数
MQL5 の取引関数の関数一覧
- OrderCheck
- OrderCalcMargin
- OrderCalcProfit
- PositionsTotal
- PositionGetTicket
- PositionGetSymbol
- PositionSelect
- PositionSelectByTicket
- PositionGetDouble
- PositionGetInteger
- PositionGetString
- OrderGetTicket
- OrderGetDouble
- OrderGetInteger
- HistorySelect
- HistoryDealsTotal
- HistoryDealGetTicket
- HistoryDealSelect
- HistoryDealGetDouble
- HistoryDealGetInteger
- HistoryDealGetString












