新規注文 OrderSend 関数

関数

取引関数

OrderSend 関数

 新規注文を行なう関数です。
 成行、指値、逆指値、イフダン注文などが出来ます。

データ型と構成・戻り値

int OrderSend(①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,⑪)

 戻り値は、注文が成立した場合はチケット番号、しなかった場合は -1 が返されます。
 発生するエラーについては、GetLastError関数で取得することが出来ます。

引数 [11]

 OrderSend関数は 11個の引数で構成されます。


引数名データ型単位初期値説明
symbolstring取引する通貨ペア。通貨ペア名を”USDJPY”のように””で囲んで指定するか、Symbol関数を使うと現在のチャート通貨ペアが指定されます。
cmdint売買注文のタイプ。買い成行注文、売り指値注文などの注文方法を指定します。
volumedoubleロット取引ロット数。最小値が 0.01ロット。業者によって 1ロットあたり 1000通貨 (0.01ロット=10通貨)、10万通貨 (0.01ロット=1000通貨)になっています。
pricedouble①の通貨単位指値注文の価格設定。
成行注文の場合、買いは Ask、売りは Bidを設定します。
単位は、USDJPYや GBPJPYのような対日本円の場合は「円」、EURUSDのような対アメリカ・ドルの場合は「ドル」のように決済通貨の通貨単位に従います。
slippageintPoint最大許容スリッページの設定。
単位が「Point」なので注意。例えば、USDJPYの場合、0.03円のスリッページ許容として設定するなら「30」と入力する。詳しくは「Pips」と「Point」、「各国の通貨単位」の関係を参考にしてください。
stoplossdouble①の通貨単位損切り価格の設定。設定しない場合は、0を入力。
takeprofitdouble①の通貨単位決済価格の設定。設定しない場合は、0を入力。
commentstringNULLコメント。設定しない場合は「NULL」を入力して、コメントがないことを表す。コメントは半角文字で最大31文字までです。超過した場合、コメントは表示されません。ターミナルにコメント欄が無い場合はこちら
magicint0マジックナンバー。注文の識別番号として設定するもの。設定しない場合は「0」を入力。
expirationdatetime0待機注文 (指値注文)の有効期限。有効期限を設定しない場合は「0」を入力。有効期限を設定する場合は TimeCurrent関数に経過秒数を足す。

例)1時間後を有効期限として約定しなかったら注文取り下げ。
TimeCurrent() + 3600」と入力。
※業者によるのかもしれませんが、600~660秒以上 (10~11分以上)にしないと注文が成立しません。
arrow_colorcolorclrNONE注文位置の矢印の色。設定しない場合は「clrNONE」を入力すると矢印が表示されない。
Webカラーの種類はこちら。
※初期値があるものは省略可。但し、省略した引数以降は省略しなければなりません。

関数の引数を省略する時のルール

 OrderSend関数の場合、初期値が設定されている⑧以降は省略して引数を入れなくても大丈夫です。但し、省略して書かない場合は、その引数より後ろについても省略する必要があります。省略した場合、その関数に設定されている初期値が設定されることになります。

int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦)
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,⑧)
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,⑧,⑨)
int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩) でもOK。

int ticket = OrderSend(①,②,③,④,⑤,⑥,⑦,  ⑨,⑩,⑪)  ⑧が無いのでダメ!

 省略した場合は、⑧ NULL、⑨ 0、⑩ 0、⑪ clrNONE、の初期値の設定になります。

売買注文のタイプ

注文ID説明
0OP_BUY買いの成行注文。
1OP_SELL売りの成行注文。
2OP_BUYLIMIT買いの指値注文。
3OP_SELLLIMIT売りの指値注文。
4OP_BUYSTOP買いの逆指値注文。
5OP_SELLSTOP売りの逆指値注文。
「値」は「注文ID」を整数型に変換した時の数字になります。
「注文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のターミナルにコメント欄が表示されていない時は、ターミナル上にカーソルを当てて右クリックして「コメント」にチェックを入れるとコメント欄が表示されるようになります。

タイトルとURLをコピーしました