移動平均線のクロスで売買するEAの作成 その9 | メタトレーダー4でプログラムを作ってみよう

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

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

それでは、start の解説をしていきます。

今回はポジション計算のところです。

新しいことが色々出てきます。^^

//ポジション計算
   int buypos=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic01)
        {
         if(OrderType()==OP_BUY)  buypos++;
        }
     }

まず最初に、変数を一つ宣言します。

ポジションの数は整数なので、int で宣言し、初期値として 0 を入れておきます。

次に、for文で繰り返しの処理をします。

ここで新しい関数 OrdersTotal() が出てきます。

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

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

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

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

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


次の、OrderSelect はポジションを選択する関数です。

ポジションに対して何かアクションを起こしたい時は、

まずはどのポジションに対してアクションを起こすのか、

ポジションを指定しなければなりません。

メタトレーダーのポジションには番号が付いています。

古い順に 0 から1,2と番号が増えていきます。

i が 0 から始まり OrdersTotal() の数だけ増えていきます。

OrderSelect(i,SELECT_BY_POS,MODE_TRADES) は、

約定しているポジションを選択する関数で、

ポジションの選択が成功すると、true が返り、

ポジションの選択が失敗すると、false が返ります。


ポジションの選択が失敗するのは、ポジションがない時です。



if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;


は、ポジションがない時に、break しなさいということです。


break は、for文の繰り返し処理をやめる関数です。

for文の途中で break が実行されると、

for文の処理が残っていても無視して終了します。


ちょっと長くなってきたので残りは次回にします。

しかし、ごちゃごちゃしてきました。

注文に関する関数は数多くあります。

大変だと思いますが、覚えておかないといけないことも沢山あります。

焦らずに少しずつ覚えていきましょう。