【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)

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

Contents

引数

① 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】ノートPCを閉じてもEAを実行させ続ける方法【Windows10】

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【楽天CFD】デモ口座を開設してみた【MT4】

CFDとは、Contract For Difference の略で、差金決済取引(さきんけっさいとり

記事を読む

無料動画編集ソフト AviUtl で mp4 形式の動画を読み込み・出力する方法【Windows】

今回は、無料動画編集ソフト AviUtl で mp4 形式の動画を読み

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

→もっと見る

PAGE TOP ↑