3. サンプルプログラム作成(1)

Bookmark and Share

プログラムの中身

それでは早速、次の部分に「プログラムの中身」にあたるものを書いていきましょう。

  1. int start(){
  2. }

繰り返しになってしまいますが、うえの括弧(デリミタ)内に書かれた命令は、市場でtickが動く度に実行される部分です。
この中に書く命令は、大きく分けて3つの部分に分けることができます。

  1. ロングポジションをとる命令
  2. ショートポジションをとる命令

1. ロングポジションをとる命令

ブレイクアウトシステムでは前述の通り、一定期間の高値を現在値が上回ったときに、上昇トレンドが形成されたと判断し、ロングポジション(買い持ち)を取ります。
つまりプログラムが実行するべき内容は、このようになります:

  1. 一定期間の高値を計算
  2. 計算した一定期間の高値と、現在値とを比較
  3. (もし現在値の方が高ければ、)
    ロングにポジションを取る

一定期間の高値を計算する

さて、それではまず始めに「1. 一定期間の高値を計算」から始めましょう。

  1. double max = High[iHighest(NULL, PERIOD_H1, MODE_HIGH, BreakPeriod, 1)];

このように入力することで、変数「BreakPeriod」に代入された「一定期間」中の最高値を求めることができます。

関数iHighest()は、一定期間の高値を含むシフトを返す関数です。
つまりiHighest()は、下の図のような場合、黄色い「足」を(number型で)返してきます。
MetaTraderのExpert Advisorは標準でHigh[]という配列を用意し、この中にはそれぞれの足の最高値が入っているので、High[iHighest()]と記述することで結果として「ある期間の最高値」が求められるわけです。

MetaTraderで表現するブレイクアウト戦略

やや複雑な説明になってしまいましたが、「High[iHighest()]とすることで、一定期間の最高値がdouble型で求められる。」ということを知っているだけで実用上は十分でしょう。