MetaTraderでFX自動売買研究所
5. MetaTraderで注文指示
ここからはMetaTraderでプログラミングする際、必要になる関数をいろいろと紹介していきます。
プログラミングの経験がある方も、ここからは読んでくださいね!
1. そもそも「関数」って!?
関数、なんだか聞き慣れない単語ですね。変数と同じように数学の時間習った記憶はあるが、何なのかよくわからない、そんな単語だと思います。
でも、安心してください。やはり「関数」も数学のそれとは意味が少し異なります。
関数を一言で説明すると、「機能」というとわかりやすいでしょう。
(そもそも「関数」も「機能」も英語"function"の訳語です)
すなわち「関数」を使うことで注文を出す(発注)といった機能を使うことができる訳です。
「機能」を自分で作ることももちろんできるのですが、それはもう少し後で触れることにします。
2. とりあえず、発注!
発注するための関数は、MetaTrader (MetaEditor)では、OrderSend()です。
前の章で以下のような行が出てきたのを思い出してください。
- OrderSend(Symbol(),OP_BUY,Lots,Ask,3,NULL,NULL,NULL,0,0,Blue);
さて、OrderSendに続くカッコ内の文字は何でしょうか?
これらは通常「引数」(ひきすう、Argument)と呼ばれ、関数のパラメータとなっています。
・・・何のことかさっぱりわかりませんね。
では想像してみてください。
OrderSend()だけが打ち込まれたとして、いったいコンピュータはどの通貨を買えばいいのでしょうか?
そもそも「買う(ロング)」のではなく、「売る(ショート)」のかも知れません。
何単位を取引するのかだって、指定しないとコンピュータはどうすることもできません。
カッコ内の文字は、そういった重要な情報をコンピュータに伝えるためのものです。
これは関数の内部で処理され、(関数に引数が渡る、といいます)コンピュータは必要な動作を行うことができます。
それでは上の例で、それぞれの引数が持つ意味を見ていきましょう。以下、各番号は引数の順番に対応しています。
- 通貨ペア Symbol() - データの型: 文字列(string)
「取引するべき通貨ペア」を表します。 - 参入方向 OP_BUY
「買い(ロング)」で市場に参入することを表します。
「売り(ショート)」では"OP_SELL"を入力します。 - 取引量 Lots - データの型: 小数(double)
「取引する通貨の量」を指定します。上記の例では、あらかじめ変数Lotsを定義しておく必要があります。
たとえば0.1を入力すると、0.1建玉すなわち10,000通貨単位の取引が行われます。 - 取引値 Ask - データの型: 小数(double)
「取引を行う値段」を表します。通常買いの時にはAsk、売りの時にはBidを指定します。
Ask、Bidは特殊変数です。それぞれ現在の売値、買値を表します。 - スリッページ 3 - データの型: 整数(integer)
「スリッページ」すなわち上の取引を行う値段から、いくら離れた値段までなら取引を実行するかを指定します。
単位は「ポイント(pips)」です。これは値段の情報がコンピュータに届くまでの、タイムラグ対策として使われます。 - ストップロス NULL - データの型: 小数(double)
6番目のNULLは、StopLossを表しています。指定しない場合は上のようにNULLを入力します。 - テイクプロフィット NULL - データの型: 小数(double)
7番目のNULLは、TakeProfitを表しています。指定しない場合は上のようにNULLを入力します。 - コメント NULL - データの型: 文字列(string)
8番目のNULLは、コメントを表しています。当該取引が行われた際に、何らかのコメントを表示させたい場合、ここに記入します。指定しない場合は上のようにNULLを入力します。 - マジックナンバー 0 - データの型: 整数(integer)
- 有効期限 0 - データの型: 日付(datetime)
- 色 0 - データの型: 色コード(color)
下の3つ(9~11)に関しては、今は使わないですし話が難しくなるので、とりあえずそんなものがあるのか、程度に考えてください。