【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】日付と時間を指定してPCを自動起動させる方法【DELL】

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【トラリピ】スプレッドについて調べてみた【FX自動売買】

トラリピは、マネースクエアが運営しているFXの自動売買システムです。 トラリピの詳細はここでは

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【Dell Vostro420】PCの電源が入らなかった時の対処方法。

Dell の タワー型デスクトップPC(Dell Vostro

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

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

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

今回は、MQL4プログラミングによって EA を作成するときに使える時

【PyTorch】GPUのメモリ不足でエラーになったときの対処方法。

PyTorch で深層学習していて、 GPUのメモリ不足でエラーが出て

【TensorFlow】GPUを認識しない時の対処方法【Python】

TensorFlow で GPU を認識させようとしたときにハマってし

→もっと見る

PAGE TOP ↑