では、自動売買に必要となるであろうプログラムを試していきたいと思います。
何はともあれ、注文するプログラムを作ってみます。
注文する時のプログラムの書き方が分からなかったので、Google で”MetaEditor と 注文”をキーワードにネットで調べてみると、”
OrderSend()”というものを使ってプログラムを書くことが分かりました。
MetaEditor の Navigator ウィンドウの Search タグにて”OrderSend()”を検索してみると Help タグに詳しい説明が表示されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtHssR1NFlWud8PTu5N1Q8bG5Wi4M8md-PLTPJJA9Kfg-fdH1mm3pz1pzsUTF-faC_lentlUqyWDEV5gXjt4sg2Z47fEAfFE0Vl5gE45f4ElAFIRX80J_zFNFrEpx_ItYM14TGpDk7agU/s200/0_Pic.bmp)
ヘルプの中には具体的なプログラムの書き方も紹介されており、次のように記載されています。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKcQJWMqQcU9knWvOyEt6hpUjRw68m2RuZKQysx_PL123d8ZGx5xSpvTMnxMuR7mz22TVznd68EVVIjk6r8dkPIOYb0yTeef-Oo8QWp_xFob1afjh_ctaoSVMNxbam7fnR7rvPyPIL05c/s320/1_Pic.bmp)
いろいろ書いてありますが、とりあえず必要なのは OrderSend(); の行みたいなので、この部分だけカンマごとに分解してみます。
OrderSend(
Symbol(),
//通貨ペアOP_BUY,
//注文方法1,
//ロット数(取引数)Ask,
//売買価格3,
//スリッページAsk-25*Point,
//損きり価格Ask+25*Point,
//利食い価格"My order #2",
//コメント16384,
//識別番号0,
//有効期限Green
//チャート上矢印の色);
大体見聞きしたことがある言葉ばかりだと思いますが、OrderSend は括弧の中で指定された内容に従い注文をします。
また、注文内容の指定順番は決まっており、カンマで区切って指定する形になります。
それぞれの指定内容について、もう少し詳しく見ていきます。
[通貨ペア]注文したい通貨ペアを指定します。指定の種類としては次のようになります。
指定内容 : 通貨ペア
----------------------------
"EURUSD" : ユーロ・ドル
"USDJPY" : ドル・円
"EURJPY" : ユーロ・円
そのため、”ドル・円”で取引をしたい場合には、
OrderSend(
"USDJPY",・・・);
と書きます。
#通貨ペアは文字で指定する必要があるためダブルクォーテーション("")で囲みます。
なお、サンプルに記載されている「
Symbol()」は、
プログラムを連動させているチャートと同じ通貨ペアを指定する場合の記述方法になるようです。
[注文方法]注文方法を指定します。指定の種類としては次のようになります。
指定内容 : 注文方法
--------------------------------------------------
0 : 成り行き買い
1 : 成り行き売り
2 : 指値買い
3 : 指値売り
4 : 逆指値買い
5 : 逆指値売り
そのため、「指値買い」で取引したい場合には
OrderSend("USDJPY",
2,・・・);
と書きます。
#注文方法は数値で指定する必要があるためダブルクォーテーション("")では囲みません。
また、次のような指定方法もできます。
指定内容 : 注文方法
------------------------------------------------------
OP_BUY : 成り行き買い
OP_SELL : 成り行き売り
OP_BUYLIMIT : 指値買い
OP_SELLLIMIT : 指値売り
OP_BUYSTOP : 逆指値買い
OP_SELLSTOP : 逆指値売り
そのため、次の注文方法の指定は、同じ「指値買い」を意味しています。
OrderSend("USDJPY",
OP_BUYLIMIT,・・・);
[ロット数]売買数量を指定します。1 ロット当たり 10 万通貨となりますので、1 万通貨の場合には、0.1 を次のように指定します。
OrderSend("USDJPY",OP_BUYLIMIT ,
0.1,・・・);
#ロットは数値を指定する必要があるためダブルクォーテーション("")では囲みません。
[売買価格]売買価格を指定します。指定の仕方として売買価格(105.25)を直接指定する場合
OrderSend("USDJPY",OP_BUYLIMIT ,0.1,
105.25,・・・);
と書きます。
#売買価格は数値を指定する必要があるためダブルクォーテーション("")では囲みません。
なお、上記は価格を直接記載する方法ですが、
注文時に計算(情報取得)させる記載方法もあります。
チャート表示されている通貨ペアの注文時レート(売り値)で指定する場合
OrderSend(Symbol(),OP_BUYLIMIT ,0.1,
Ask,・・・);
チャート表示されている通貨ペアの注文時レート(買い値)で指定する場合
OrderSend(Symbol(),OP_BUYLIMIT ,0.1,
Bid,・・・);
「
Ask」と「
Bid」は
プログラムを連動させているチャートの通貨ペアの現在レート価格を取得する書き方のため、一番最初に指定する「通貨ペア」も”Symbol()”を指定することになると思われます。
[スリッページ]スリッページの許容範囲を指定します。Pips で指定します。
3 Pips (USDJPYならば 0.03円)までを許容する場合には
OrderSend("USDJPY",OP_BUYLIMIT ,0.1,105.25,
3,・・・);
と書きます。
#スリッページは数値を指定する必要があるためダブルクォーテーション("")では囲みません。
[損きり価格]損きり価格を指定します。損きり価格を設定しない場合には 0 (ゼロ)を指定します。
OrderSend("USDJPY",OP_BUYLIMIT ,0.1,105.25,3,
0,・・・);
価格(105.00)を直接記載する場合には
OrderSend("USDJPY",OP_BUYLIMIT ,0.1,105.25,3,
105.00,・・・);
と書きます。
#損きり価格は数値を指定する必要があるためダブルクォーテーション("")では囲みません。
なお、上記は価格を直接記載する方法ですが、
注文時に計算(情報取得)させる記載方法もあります。
注文時に計算した結果を損きり価格として指定する場合には
OrderSend(Symbol(),OP_BUYLIMIT ,0.1,Bid,3,
Ask-25*Point,・・・);
などと書きます。
これは「注文時レート価格(売値)から 25 ポイント引いた価格を損きり価格とする
式」を表しています。
”ポイント(Point)” とは、
プログラムを連動させているチャートの通貨ペアの最小単位を取得する書き方で、”USD/JPY”の場合には「0.01」になります。
つまり、注文時レート価格(売値)が 105.25 ならば、損きり価格は「105.00」になります。
Ask - 25 * Point
105.25 - 25 * 0.01 = 105.00
#上記計算式の * は掛け算を意味します。
[利食い価格]利食い価格を指定します。利食いを設定しない場合には 0(ゼロ) を指定します。
指定の仕方は[損きり価格]の場合と同じです。
[コメント]注文時の履歴情報としてコメントを残す場合に指定します。
#コメントは文字を指定する必要があるためダブルクォーテーション("")で囲みます。
MetaTrader は以前作成した”Test1”プログラムのように、注文時の結果を自動的に画面に表示する仕組みの様子です。 その際に、この「コメント」欄に記載された内容が表示されます。
[識別番号]注文を識別するための番号を指定します。複数の注文をする場合や、後から注文したものを特定する場合に有効な情報です。不要であれば 0(ゼロ) を指定します。
#識別番号は数値を指定する必要があるためダブルクォーテーション("")では囲みません。
[有効期限]注文の有効期限を指定します。指値注文と逆指値注文の時のみ有効であり、期限を設けない場合には 0 (ゼロ)を指定します。
有効期限を指定する場合には、Navigator ウィンドウの Dictionary タグ にて「MQL4 Reference」-「Basics 」-「Data types」-「Datetime constants」を選択し、サンプルとして記載してある各種日時指定方法を参考にします。
[チャート上矢印の色]チャート上に表示される注文印の色を指定します。MetaTrader では、プログラムが連動しているチャート上に、注文が成立した日時ならびに価格情報を矢印で表現してくれます。
色を指定する場合には、Navigator ウィンドウの Dictionary タグ にて「MQL4 Reference」-「Basics 」-「Data types」-「Color constants」を選択し、サンプルとして記載してある各種色指定方法を参考にします。
なお、Color constants ページ内にある「Web colors set」リンク部分をクリックすると実際の色を見比べながら指定すべき文字を検索できます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSREE0CpzBxn3ncYxITKJTjZZd-25b_RrsBK6NPfvYMCQVPs0SQAT_1c2L-VGIt7A6NTZc-74Mn8YMTQSMy5Sst3PkJTnvpPpDSjasxOPpMd58uZ7W2fw1IEX-9hl6DTqicwX5wyUNPFM/s320/2_Pic.bmp)
長くなりましたので実際の注文は次回にします。