【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() が呼ばれる)たびに注文が実行されてしまいますので注意して下さい。

関連記事

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

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

記事を読む

【楽天証券CFD】調整金(金利/配当)について調べてみた【MT4】

今回は、楽天証券CFDで日経平均(JP225)や SP500(US500)、ダウ(US30)、ナスダ

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【MT4】EAのバックテストをする方法【FX自動売買】

今回は、MT4を使って、EAのバックテストを行う方法について紹介します。 バックテストは、自分

記事を読む

【MQL4】使用できる時間足の種類について【MT4】

今回は、MQL4プログラミングによって EA を作成するときに使える時間足の種類について調べてみまし

記事を読む

【MQL4】EAファイルを作成・実行する方法【FX自動売買】

EAファイルとは、為替の価格データが更新されるたびに繰り返し実行してくれるプログラムのことです。

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

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

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

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

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

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

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

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

今回は、PyTorch を使って、ニューラルネットワーク(NN)を構築

→もっと見る

PAGE TOP ↑