order_check

必要な取引操作を実行するために充分な資金があるかを確認します。確認の結果はMqlTradeCheckResult構造体として返されます。

order_check(
  request      // リクエスト構造体
  );

パラメータ

request

[in] 必要な取引アクションを記述するMqlTradeRequest型の構造体。名前なし必須パラメータ。リクエストの記入例と列挙内容を以下に示します。

戻り値

MqlTradeCheckResult構造体としての確認の結果。回答のrequestフィールドには、order_check()に渡される取引リクエストの構造体が含まれています。

注意事項

リクエストが正常に送信されても、リクエストされた取引操作が正常に実行されるとは限りませんorder_check関数はOrderCheckに似ています。

TRADE_REQUEST_ACTIONS

ID

説明

TRADE_ACTION_DEAL

指定されたパラメータを使用してインスタント取引を注文します(成行注文を設定します)

TRADE_ACTION_PENDING

指定された条件(未決注文)で取引を実行するために取引注文を出します。

TRADE_ACTION_SLTP

ポジションの決済逆指値と決済指値を変更する

TRADE_ACTION_MODIFY

以前に行った取引注文のパラメータを変更する

TRADE_ACTION_REMOVE

以前に出した未決注文を削除する

TRADE_ACTION_CLOSE_BY

反対のポジションでポジションを決済する

ORDER_TYPE_FILLING

ID

説明

ORDER_FILLING_FOK

この実行ポリシーは、注文が指定された量でのみ満たすことが出来ることを意味します。金融製品の必要量が市場で現在利用できない場合、注文は実行されません。希望するボリュームは、いくつかの利用可能なオファーで構成できます。

ORDER_FILLING_IOC

注文で指定されたボリューム内で市場で利用可能な最大ボリュームで取引を実行するための合意。リクエストを完全に満たすことができない場合、利用可能なボリュームの注文が実行され、残りのボリュームはキャンセルされます。

ORDER_FILLING_RETURN

このポリシーは、「市場」または「取引所」実行モードを持つ銘柄に対してのみ、成行注文(ORDER_TYPE_BUY及びORDER_TYPE_SELL)、指値注文及びストップリミット注文(ORDER_TYPE_BUY_LIMIT、ORDER_TYPE_SELL_LIMIT、ORDER_TYPE_BUY_STOP_LIMIT、ORDER_TYPE_SELL_STOP_LIMIT)の実行に使用されます。部分的に充填された場合、残りの数量を持つ市場や指値注文はキャンセルされず、さらに処理されます。

ORDER_TYPE_BUY_STOP_LIMIT及びORDER_TYPE_SELL_STOP_LIMIT注文の発動のためには、ORDER_FILLING_RETURN実行型と対応する指値注文ORDER_TYPE_BUY_LIMIT/ ORDER_TYPE_SELL_LIMITが作成されます。

ORDER_TYPE_TIME

ID

説明

ORDER_TIME_GTC

注文は手動でキャンセルされるまでキューに残ります。

ORDER_TIME_DAY

注文は現在の取引日にのみアクティブです。

ORDER_TIME_SPECIFIED

注文は指定された日付までアクティブです。

ORDER_TIME_SPECIFIED_DAY

注文は、指定された日の23:59:59までアクティブです。この時間が取引セッションの外にあると思われる場合、有効期限は最も近い取引時間に処理されます。

例:

import MetaTrader5 as mt5
# MetaTrader 5パッケージにデータを表示する
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# MetaTrader 5ターミナルへの接続を確立する
if not mt5.initialize():
   print("initialize() failed, error code =",mt5.last_error())
  quit()
 
# 口座通貨を取得する
account_currency=mt5.account_info().currency
print("Account сurrency:",account_currency)
 
# リクエスト構造体を準備する
symbol="USDJPY"
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
  print(symbol, "not found, can not call order_check()")
  mt5.shutdown()
  quit()
 
# 銘柄が「気配値表示」似ない場合は追加する
if not symbol_info.visible:
  print(symbol, "is not visible, trying to switch on")
  if not mt5.symbol_select(symbol,True):
      print("symbol_select({}}) failed, exit",symbol)
      mt5.shutdown()
      quit()
 
# リクエストを準備する
point=mt5.symbol_info(symbol).point
request = {
  "action": mt5.TRADE_ACTION_DEAL,
  "symbol": symbol,
  "volume": 1.0,
  "type": mt5.ORDER_TYPE_BUY,
  "price": mt5.symbol_info_tick(symbol).ask,
  "sl": mt5.symbol_info_tick(symbol).ask-100*point,
  "tp": mt5.symbol_info_tick(symbol).ask+100*point,
  "deviation": 10,
  "magic": 234000,
  "comment": "python script",
  "type_time": mt5.ORDER_TIME_GTC,
  "type_filling": mt5.ORDER_FILLING_RETURN,
}
 
# チェックを実行し、結果を「そのまま」表示する
result = mt5.order_check(request)
print(result);
# 結果をディクショナリとしてリクエストし、要素ごとに表示する
result_dict=result._asdict()
for field in result_dict.keys():
  print("   {}={}".format(field,result_dict[field]))
  # if this is a trading request structure, display it element by element as well
  if field=="request":
       traderequest_dict=result_dict[field]._asdict()
      for tradereq_filed in traderequest_dict:
          print("       traderequest: {}={}".format(tradereq_filed,traderequest_dict[tradereq_filed]))
 
# MetaTrader 5ターミナルへの接続をシャットダウンする
mt5.shutdown()
 
 
Result:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Account сurrency: USD
  retcode=0
  balance=101300.53
  equity=68319.53
  profit=-32981.0
  margin=51193.67
  margin_free=17125.86
  margin_level=133.45308121101692
  comment=Done
  request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=1.0, ...
      traderequest: action=1
      traderequest: magic=234000
      traderequest: order=0
      traderequest: symbol=USDJPY
      traderequest: volume=1.0
      traderequest: price=108.081
      traderequest: stoplimit=0.0
      traderequest: sl=107.98100000000001
      traderequest: tp=108.181
      traderequest: deviation=10
      traderequest: type=0
      traderequest: type_filling=2
      traderequest: type_time=0
      traderequest: expiration=0
      traderequest: comment=python script
      traderequest: position=0
      traderequest: position_by=0

参照

order_send OrderCheck取引操作の種類取引リクエスト構造体取引リクエストのチェック結果の構造体取引リクエスト結果の構造体