いよいよEAを作る上で必須の注文コード!
注文コードとは、まさに「売り」「買い」を実行せよ!という命令文です。
どの通貨をどんなロットでどんな注文(成行か指値か等)で行うかを指定します。
少し複雑になってきますが、頑張っていきましょー!
注文コードを覚える前に必要な「宣言」と「代入」
「宣言」と「代入」は、注文コードとセットになる作業です。
注文を出したら、必ず「注文番号」というものが発生します。例えば、買いの注文を出して「1234」という注文番号が与えられたとしましょう。
これを決済したい時は、「1234の注文を決済してね!」と指示することになります。
この注文番号は、注文を出すたびに変わります!
プログラムを作る上で、注文を出したときの注文番号が何になるか不明なので、決済のコードを書くときに「1234を決済してね!」「3456を決済してね!」といちいち書く訳にはいけません。
そこで便利なのが「宣言」です。
「宣言」とは…注文番号を入れる箱を作る作業です。
そして、注文の際に発生する注文番号をこの箱に入れる作業…これが「代入」です。
注文コードを学ぶ前に言われても理解しにくいと思いますが…。やりながら慣れていきましょう。
宣言と代入の仕方
注文番号の箱の名前を「Ticket」とします。
その名前の前に「int」という合図を書けば、宣言は完了です。
※「;」は忘れずに!
代入は、簡単です。Ticketの箱の中に1234を入れたい場合は、
実際のプログラムでは、「Ticket=(注文のコード)」となり、注文時に発生する注文番号をTicketに入れてね!という書き方をします!
「宣言」は、箱の中に何を入れたいかによって、コードが変わってきます。
- 注文番号は、小数点の付かない数字(1234567とか)なので、この場合は「int」で宣言します。
- 少数点がつく数字を入れたい場合は、「double」を使います。これは、ドル円の「110.123円」を入れたいという場合などで使います。結構使う頻度も高いので覚えましょう。(例えば、「前日の高値を代入する箱を作りたい」というときに使います)
- 文字を入れる箱を作りたい場合は、「string」
- 正(1)か負(−1)の2択を入れる箱を作る場合は、「bool」。あまり使ったことないですが、特定の状況の時だけtrue(1)を入れて、その他はfalse(-1)とする場合とかに使われます。
エントリーの注文コード
エントリー注文は「OrderSend( )」というコードで行います。
OrderSend(
- 通貨ペア:USDJPYとか。NULLでもsymbol()でもよい。
- 注文方法:OP_BUY(成行買い:0でも良い)、OP_SELL(成行売り:1でも良い)、OP_BUYLIMIT(指値買い:2でも良い)、 OP_BUYSTOP(逆指値買い:4でも良い)
- ロット数:0.1とか
- 価格:成行買いはAsk、成行売りはBid。指値や逆指値の時はエントリーしたい価格。
- 許容スリッページ:どのくらい注文スベって良いか。1ポイント=その通貨の小数点の最小。ドルなら10=0.01(1pips)。10とかで良い。
- 損切価格:注文と同時に損切を設定したい場合。0で指定なし。
- 利確価格:注文と同時に利確を設定したい場合。0で指定なし。
- コメント:注文に名前を付けれる…が使ったことがない。0でよい。
- マジックナンバー:0で良い。同一口座内で複数のEAを使いたい場合に使用。
- 注文の有効期限:0で指定なし。24時に取消すとか、8時間後に消すとかできる。
- 矢印の色:チャート上にエントリーした場所が矢印で表示されるが、その色を指定できる。0で黒、clrBlueで青、clrRedで赤)
);
(例)ロット0.1で成行買いをする場合
決済の注文コード
決済は、「OrderClose( )」というコードで行います。
「宣言」で説明した通り、決済時は、エントリーした時の注文番号を指定しなければなりません。
OrderSend(
- 注文番号:「宣言」した注文番号を入れる箱の名前(Ticketなど)を記入する。
- ロット:0.1とか。
- 価格:買いをクローズする場合Bid、売りをクローズする場合Ask。
- 許容スリッページ:10とかでよい。
- 矢印の色:買いと同様。0で黒、clrBlueで青、clrRedで赤。
);
(例)注文番号を「Ticket」として宣言した場合。
「宣言」と注文コードの流れ
エントリー時に発生する注文番号を入れる箱を作るときは、「int Ticket;」等で作ります。
決済の時も、「その決済がうまくいったか?」の結果を入れる箱を作ってあげます。例えば「int TicketClose」とします。
TicketCloseには、決済したら「1」が代入されて、それ以外は「−1(エラー)」が入ります。
注文から決済の流れは、以下の通りとします。
- 「int Ticket;」:注文番号を入れる箱を宣言する。
- 「int TicketClose;」:決済の結果を入れる箱を宣言する。
- 「Ticket=OrderSend( );」:エントリー注文をして、注文番号をTicketに代入。
- 「TicketClose=OrderClose( );」:決済注文をして、決済できたらTicketCloseに結果(1)を代入。
注文の度にTicketの中に注文番号が入って、決済の度にTicketCloseに結果(1か−1)が入ります。
次回はいよいよEAの作成!
ここまできたら、実際に注文→決済を行うEAを作成することが可能になります!
今回の「宣言」というのは、ちょっと複雑でしたが、いくつか例を見てもらうと、イメージがつかめてくると思います。
では、次回はEAの作り方について、書いていきたいと思います!!
コメント