【MQL4】注文を出す関数について調べてみた【OrderSend】

公開日: : 最終更新日:2021/05/11 MT4 , , , , , ,

今回は、EAで注文を出すMQL4の関数「OrderSend()」について調べてみました。

OrderSend() 関数は、以下の11個の引数をとります。括弧内に引数の「型」を書いています。

  • symbol(string)
  • cmd(int)
  • volume(double)
  • price(double)
  • slippage(int)
  • stoploss(double)
  • takeprofit(double)
  • comment(string)
  • magic(int)
  • expiration(datetime)
  • arrow_color(color)

各引数について簡単に説明していきます。

引数

① symbol(string)

symbol には「通貨ペア」を指定します。

例えばドル円の場合「“USDJPY”」とします。

② cmd(int)

cmd には「注文方法」を指定します。

例えば、成行買いの場合は「OP_BUY」、成行売りの場合は「OP_SELL」とします。

③ volume(double)

volume には「ロット数」を指定します。

1ロットが10万通貨なので、例えば、1万通貨注文する場合「0.1」とします。

④ price(double)

price には「値段」を指定します。

例えば、買値の場合「Ask」、売値の場合「Bid」とします。

⑤ slippage(int)

slippage には「許容スリッページ」を設定します。

これは、成行注文時のみ設定する必要があります。

「要求された注文のオープン価格と市場価格との最大許容偏差(ポイント)」などとなっていますが、ようするに、成行注文時に(ネットワークの遅延などにより)どれだけ価格の変動を許容するかを設定する、と解釈しています。(私はなんとなくしか理解していません。。)

⑥ stoploss(double)

stoploss には「損切り価格」を設定します。

※注意しないといけないのは、損切価格なので、価格の下落幅(例えば「-1.0(円)」とか)ではなく、価格そのもの(例えば「110.0(円)」とか)を設定します。

私は、間違って価格幅を設定していたため、「130」エラーが出て、EAの注文がされないということがありました。(だいぶハマってしまいました。。)

ちなみに、130」エラーコードは「ERR_INVALID_STOPS」で、日本語だと「無効なストップ値」というエラーになります。

また、損切しない場合は「0」を設定します。

⑦ takeprofit(double)

takeprofit には「利確価格」を設定します。

利益確定するときの価格を「」で指定するので、こちらも stoploss と同様に「価格そのもの」を設定しないと「130」エラーになってしまいます。

⑧ comment(string)

comment には「コメント」を文字列で設定します。

そんなに使う必要ないかと思います。

comment は省略可能で、省略した場合「NULL」が自動的に入ります。

⑨ magic(int)

magic には「マジックナンバー」を設定します。

これは、複数の EA を同時に動かす場合、各プログラムを識別するために必要となってきます。

magic は省略可能で、省略した場合「0」が自動的に入ります。

⑩ expiration(datetime)

expiration には注文の「有効期限」を設定します。

有効期限を設定しない(無期限)場合は、「0」とします。

expiration は省略可能で、省略した場合「0」が自動的に入り「有効期限なし」となります。

⑪ arrow_color(color)

arrow_color には、注文時の「矢印の色」を設定します。

注文時にチャート上に表示される矢印の色です。

青色の場合「clrBlue」、赤色の場合「clrRed」とします。

arrow_color は省略可能で、省略した場合「CLR_NONE」が自動的に入ります。

戻り値

OrderSend 関数は、戻り値として、チケット番号を int 型で返します。

何らかのエラーで注文が正常に行われなかった場合は「-1」が返ってきます。

もし「-1」が返ってきたら、「GetLastError()」関数を使って、エラーコードを抽出し、エラーの原因を探る必要があります。

注文例

では最後に、実際に MQL4 での OrderSend 関数を使った注文コードを作成してみます。

これは、利確とロット数を OnTick() の外で設定してます。

また、省略できる引数については省略しています。

ただし、このままだと価格が更新される(OnTick() が呼ばれる)たびに注文が実行されてしまいますので注意して下さい。

関連記事

【MT4】チャート上にボリンジャーバンドを表示(削除)する方法。

今回は、MT4(メタトレーダー4)上に、ボリンジャーバンド(Bollinger Bands)を表示・

記事を読む

【MT4】チャート上に日本時間を表示させる方法【JPN_Time_SubZero】

今回は、MT4(メタトレーダー4)でチャート上に日本時間を表示させる方法について紹介します。

記事を読む

【MT4】複数口座を同時に起動させる方法【FX・CFD】

今回は、MT4(メタトレーダー4)で複数口座を同時にログインし、起動させる方法について紹介します。

記事を読む

【楽天MT4】ドル円のスワップとスプレッドについて調べてみた。

楽天MT4で、ドル円(USD/JPY)のスワップポイントとスプレッドについて調べてみました。

記事を読む

【MT4】日付と時間を指定してPCを自動起動させる方法【DELL】

今回は、日付と時間を指定してPCを自動的に起動させる方法について紹介します。 なぜPCの自動起

記事を読む

【MQL4】スプレッドを取得する方法【MT4】

今回は、MQL4 で対象通貨ペアのスプレッドを取得する方法について紹介します。 スプレッドを取

記事を読む

【MT4】ノートPCを閉じてもEAを実行させ続ける方法【Windows10】

今回は、MT4上でノートPCを閉じてもEAを実行させ続ける方法について紹介します。 通常、ノー

記事を読む

【MT4】PCが再起動しても自動的に起動させる方法【FX自動売買】

今回は、FX 自動売買用のツールの MT4 で、実行しているPCが再起動しても、MT4 を自動的に起

記事を読む

【MT4】EAを移行する方法【FX自動売買】

今回は、MT4(メタトレーダー4)で EA を別のPCに移行して動かす方法について紹介します。

記事を読む

【MT4】デモ口座で無効な口座になっているときの対処方法。

FXツールのMetaTrader4(メタトレーダー4)のデモ口座で色々と試そうとしていたら、

記事を読む

【MT4】日付と時間を指定してPCを自動起動させる方法【DELL】

今回は、日付と時間を指定してPCを自動的に起動させる方法について紹介し

【MT4】PCが再起動しても自動的に起動させる方法【FX自動売買】

今回は、FX 自動売買用のツールの MT4 で、実行しているPCが再起

【MT4】複数口座を同時に起動させる方法【FX・CFD】

今回は、MT4(メタトレーダー4)で複数口座を同時にログインし、起動さ

【MQL4】スプレッドを取得する方法【MT4】

今回は、MQL4 で対象通貨ペアのスプレッドを取得する方法について紹介

【楽天CFD】取引口座を開設してみた【MT4】

今回は、楽天CFDの取引口座(本番口座)の開設方法について紹介します。

→もっと見る

PAGE TOP ↑