メタトレーダー4でプログラムを作ってみよう -31ページ目

メタトレーダー4でプログラムを作ってみよう

無料のトレードソフトであるメタトレーダー4のプログラムを作るコツをアップします。初心者がインジケーターとEAのプログラムを作成できるのを目指します。

OrdersTotal() は現時点でのポジションの数を調べる関数です。

ポジションがなければ 0 で、ポジションがあればその数がわかります。

これは口座の全てのポジションの数で、

EAで建てたポジションも裁量で建てたポジションも区別しません。

また、約定していない指値注文も保有ポジションとして数えます。

注文の種類を区別することができるので、

保有ポジションと約定していない指値注文は区別することができます。

とにかく口座のポジションの数を調べる時に使います。

とりあえず何でも数えとけ~ってな感じです。

なんだかんだ言ってよく使うので覚えておいてください。




   
マジックナンバーというのは、EAの個別の識別番号です。

メタトレーダーは、同じ口座で色々なEAを同時に使用することができます。

例えば、

通貨ペア EURUSD 
5分足 
A のEA
1時間足 
B のEA


を動かした場合、A のEAがポジションを持ったとしても、

ポジションのEAの区別がつかなければ、

EURUSD のポジションということしかわかりません。



この時、A のEAが建てたポジションだったとしても、

B の手仕舞いのルールで手仕舞いする可能性があります。

このようなことを防ぐために、それぞれのEAにポジションの区別をつける必要があります。

その方法として、EAには個別のマジックナンバーを設定します。

一般的に変数を一つ用意しておいて、9桁までの整数を設定します。


また、1つのEAの中で複数のマジックナンバーを使用することもできます。

買いと売りで区別したり、1つのEAの中に複数のロジックを入れて、

別々に管理したりすることもできます。


市販のEAなどは変更できないものもあるようですので、運用には注意しましょう。




 
それでは~、 start の続きで仕掛判断をやっていきましょう

//仕掛判断
   if(buypos==0 && fast_ma1>slow_ma1 && fast_ma2<slow_ma2)
   {
      OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",magic01,0,Blue);
   }

buypos==0 は、買いのポジションが 0 の時ということで、

買いのポジションがない時だけ移動平均線の判断をするようにしています。

そして条件がそろった時に、OrderSend でエントリーします。

これは、新規の注文を行う関数です。

OrderSend(通貨ペア, 売買種類, ロットサイズ, 価格, スリッページ,
ストップの価格, リミットの価格, コメント, マジックナンバー, 矢印の色);

となっています。

通貨ペアは、Symbol() としておけばEAをセットしたチャートの通貨ペアを発注します

売買種類は、OP_BUY が買いで、OP_SELL が売り注文です。

ロットサイズは、変数で設定しています。

価格は、買い注文なら Ask、売り注文なら Bid を設定します。

スリッページは、決済のところでも説明しましたが、通常は 3 程度を設定しておきます。

ストップの価格リミットの価格は指定があれば個別に設定することができます。

コメントは、約定した後の保有のポジションにコメントをつけておくことができます。

「ターミナル」の「取引」タブの一番左側に表示させることができます。

マジックナンバーは、初期設定で使用したものを設定します。

矢印の色は、一般的に買いの場合は青、売りの場合は赤が設定されていることが多いですが、

好きな色に変更することができます。

説明をごちゃごちゃ書きましたが、

トレードの経験があれば理解するにはそれほど難しくないのではないかと思います。


今回は最初のEAということで、機能を絞って簡単なプログラムで済ませました。

徐々に色々な機能を詰め込みながら段階的に作成していこうと思います。

では~~~