【連載】EAの作り方~その④:注文のコードを覚えよう!

(FX)自動売買EA

いよいよEAを作る上で必須の注文コード!

注文コードとは、まさに「売り」「買い」を実行せよ!という命令文です。

どの通貨をどんなロットでどんな注文(成行か指値か等)で行うかを指定します。

少し複雑になってきますが、頑張っていきましょー!

注文コードを覚える前に必要な「宣言」と「代入」

「宣言」と「代入」は、注文コードとセットになる作業です。

注文を出したら、必ず「注文番号」というものが発生します。例えば、買いの注文を出して「1234」という注文番号が与えられたとしましょう。

これを決済したい時は、「1234の注文を決済してね!」と指示することになります。

この注文番号は、注文を出すたびに変わります!

プログラムを作る上で、注文を出したときの注文番号が何になるか不明なので、決済のコードを書くときに「1234を決済してね!」「3456を決済してね!」といちいち書く訳にはいけません。

そこで便利なのが「宣言」です。

「宣言」とは…注文番号を入れる箱を作る作業です。

そして、注文の際に発生する注文番号をこの箱に入れる作業…これが「代入」です。

注文コードを学ぶ前に言われても理解しにくいと思いますが…。やりながら慣れていきましょう。

宣言と代入の仕方

注文番号の箱の名前を「Ticket」とします。

その名前の前に「int」という合図を書けば、宣言は完了です。

int Ticket;

※「;」は忘れずに!

代入は、簡単です。Ticketの箱の中に1234を入れたい場合は、

Ticket=1234;

実際のプログラムでは、「Ticket=(注文のコード)」となり、注文時に発生する注文番号をTicketに入れてね!という書き方をします!

「宣言」は、箱の中に何を入れたいかによって、コードが変わってきます。

  • 注文番号は、小数点の付かない数字(1234567とか)なので、この場合は「int」で宣言します。
  • 少数点がつく数字を入れたい場合は、「double」を使います。これは、ドル円の「110.123円」を入れたいという場合などで使います。結構使う頻度も高いので覚えましょう。(例えば、「前日の高値を代入する箱を作りたい」というときに使います)
  • 文字を入れる箱を作りたい場合は、「string」
  • 正(1)か負(−1)の2択を入れる箱を作る場合は、「bool」。あまり使ったことないですが、特定の状況の時だけtrue(1)を入れて、その他はfalse(-1)とする場合とかに使われます。

エントリーの注文コード

エントリー注文は「OrderSend( )」というコードで行います。

OrderSend(

  1. 通貨ペア:USDJPYとか。NULLでもsymbol()でもよい。
  2. 注文方法:OP_BUY(成行買い:0でも良い)、OP_SELL(成行売り:1でも良い)、OP_BUYLIMIT(指値買い:2でも良い)、 OP_BUYSTOP(逆指値買い:4でも良い)
  3. ロット数:0.1とか
  4. 価格:成行買いはAsk、成行売りはBid。指値や逆指値の時はエントリーしたい価格。
  5. 許容スリッページ:どのくらい注文スベって良いか。1ポイント=その通貨の小数点の最小。ドルなら10=0.01(1pips)。10とかで良い。
  6. 損切価格:注文と同時に損切を設定したい場合。0で指定なし。
  7. 利確価格:注文と同時に利確を設定したい場合。0で指定なし。
  8. コメント:注文に名前を付けれる…が使ったことがない。0でよい。
  9. マジックナンバー:0で良い。同一口座内で複数のEAを使いたい場合に使用。
  10. 注文の有効期限:0で指定なし。24時に取消すとか、8時間後に消すとかできる。
  11. 矢印の色:チャート上にエントリーした場所が矢印で表示されるが、その色を指定できる。0で黒、clrBlueで青、clrRedで赤)

);

(例)ロット0.1で成行買いをする場合

OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,0,0,0,clrBlue);

決済の注文コード

決済は、「OrderClose( )」というコードで行います。

「宣言」で説明した通り、決済時は、エントリーした時の注文番号を指定しなければなりません。

OrderSend(

  1. 注文番号:「宣言」した注文番号を入れる箱の名前(Ticketなど)を記入する。
  2. ロット:0.1とか。
  3. 価格:買いをクローズする場合Bid、売りをクローズする場合Ask。
  4. 許容スリッページ:10とかでよい。
  5. 矢印の色:買いと同様。0で黒、clrBlueで青、clrRedで赤。

);

(例)注文番号を「Ticket」として宣言した場合。

OrderClose(Ticket,0.1,Bid,10,clrBlue);

「宣言」と注文コードの流れ

エントリー時に発生する注文番号を入れる箱を作るときは、「int Ticket;」等で作ります。

決済の時も、「その決済がうまくいったか?」の結果を入れる箱を作ってあげます。例えば「int TicketClose」とします。

TicketCloseには、決済したら「1」が代入されて、それ以外は「−1(エラー)」が入ります。

注文から決済の流れは、以下の通りとします。

  1. 「int Ticket;」:注文番号を入れる箱を宣言する。
  2. 「int TicketClose;」:決済の結果を入れる箱を宣言する。
  3. 「Ticket=OrderSend( );」:エントリー注文をして、注文番号をTicketに代入。
  4. 「TicketClose=OrderClose( );」:決済注文をして、決済できたらTicketCloseに結果(1)を代入。

注文の度にTicketの中に注文番号が入って、決済の度にTicketCloseに結果(1か−1)が入ります。

次回はいよいよEAの作成!

ここまできたら、実際に注文→決済を行うEAを作成することが可能になります!

今回の「宣言」というのは、ちょっと複雑でしたが、いくつか例を見てもらうと、イメージがつかめてくると思います。

では、次回はEAの作り方について、書いていきたいと思います!!

コメント

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