OrderSend 関数
新規注文を行なう関数です。
成行、指値、逆指値、イフダン注文などが出来ます。
データ型と構成・戻り値
int OrderSend(①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,⑪)
戻り値は、注文が成立した場合はチケット番号、しなかった場合は -1 が返されます。
発生するエラーについては、GetLastError関数で取得することが出来ます。
引数 [11]
OrderSend関数は 11個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol | string | - | - | 取引する通貨ペア。通貨ペア名を”USDJPY”のように””で囲んで指定するか、Symbol関数を使うと現在のチャート通貨ペアが指定されます。 |
② | cmd | int | - | - | 売買注文のタイプ。買い成行注文、売り指値注文などの注文方法を指定します。 |
③ | volume | double | ロット | - | 取引ロット数。最小値が 0.01ロット。業者によって 1ロットあたり 1000通貨 (0.01ロット=10通貨)、10万通貨 (0.01ロット=1000通貨)になっています。 |
④ | price | double | ①の通貨単位 | - | 指値注文の価格設定。 成行注文の場合、買いは Ask、売りは Bidを設定します。 単位は、USDJPYや GBPJPYのような対日本円の場合は「円」、EURUSDのような対アメリカ・ドルの場合は「ドル」のように決済通貨の通貨単位に従います。 |
⑤ | slippage | int | Point | - | 最大許容スリッページの設定。 単位が「Point」なので注意。例えば、USDJPYの場合、0.03円のスリッページ許容として設定するなら「30」と入力する。詳しくは「Pips」と「Point」、「各国の通貨単位」の関係を参考にしてください。 |
⑥ | stoploss | double | ①の通貨単位 | - | 損切り価格の設定。設定しない場合は、0を入力。 |
⑦ | takeprofit | double | ①の通貨単位 | - | 決済価格の設定。設定しない場合は、0を入力。 |
⑧ | comment | string | - | NULL | コメント。設定しない場合は「NULL」を入力して、コメントがないことを表す。コメントは半角文字で最大31文字までです。超過した場合、コメントは表示されません。ターミナルにコメント欄が無い場合はこちら。 |
⑨ | magic | int | - | 0 | マジックナンバー。注文の識別番号として設定するもの。設定しない場合は「0」を入力。 |
⑩ | expiration | datetime | 秒 | 0 | 待機注文 (指値注文)の有効期限。有効期限を設定しない場合は「0」を入力。有効期限を設定する場合は TimeCurrent関数に経過秒数を足す。 例)1時間後を有効期限として約定しなかったら注文取り下げ。 「TimeCurrent() + 3600」と入力。 ※業者によるのかもしれませんが、600~660秒以上 (10~11分以上)にしないと注文が成立しません。 |
⑪ | arrow_color | color | - | clrNONE | 注文位置の矢印の色。設定しない場合は「clrNONE」を入力すると矢印が表示されない。 Webカラーの種類はこちら。 |
関数の引数を省略する時のルール
OrderSend関数の場合、初期値が設定されている⑧以降は省略して引数を入れなくても大丈夫です。但し、省略して書かない場合は、その引数より後ろについても省略する必要があります。省略した場合、その関数に設定されている初期値が設定されることになります。
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦)
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,⑧)
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,⑧,⑨)
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩) でもOK。
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦, ⑨,⑩,⑪) ⑧が無いのでダメ!
省略した場合は、⑧ NULL、⑨ 0、⑩ 0、⑪ clrNONE、の初期値の設定になります。
売買注文のタイプ
値 | 注文ID | 説明 |
---|---|---|
0 | OP_BUY | 買いの成行注文。 |
1 | OP_SELL | 売りの成行注文。 |
2 | OP_BUYLIMIT | 買いの指値注文。 |
3 | OP_SELLLIMIT | 売りの指値注文。 |
4 | OP_BUYSTOP | 買いの逆指値注文。 |
5 | OP_SELLSTOP | 売りの逆指値注文。 |
「注文ID」の代わりに「値」を引数にしても注文が可能です。
int ticket = OrderSend(①,OP_BUY,③,④,⑤,⑥,⑦,⑧,⑨,⑩,⑪)と
int ticket = OrderSend(①,0, ③,④,⑤,⑥,⑦,⑧,⑨,⑩,⑪)
は、同じ買いの成行注文になります。
使用例
OrderSend 関数による注文
コード
USDJPYのチャート上でテストをした場合。
USDJPYの価格が指値注文以下の時、次の内容で予約注文されます。
USDJPYを0.01ロット、100円で指値注文。105円で指値決済。95円で損切。許容スリッページは 0.03円(30Point)。コメント欄に「Buy」と入力。マジックナンバー1001。無期限で予約注文。約定時のチャート上の矢印は無し。
//注文例
#property strict
void OnInit() {
int ticket = OrderSend(Symbol(), OP_BUYLIMIT, 0.01, 100, 30, 95, 105, "Buy", 1001, 0, clrNONE);
if(ticket < 0) {
Print(Symbol(), "の注文が出来ません");
} else {
Print(Symbol(), "の注文成立!");
}
}
このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
その他
コメント欄の表示方法
MT4のターミナルにコメント欄が表示されていない時は、ターミナル上にカーソルを当てて右クリックして「コメント」にチェックを入れるとコメント欄が表示されるようになります。