MetaTraderでFX自動売買研究所
FX自動売買システムトレードを行う方法を解説
3. サンプルプログラム作成(1)
プログラムの中身
それでは早速、次の部分に「プログラムの中身」にあたるものを書いていきましょう。
- int start(){
- }
繰り返しになってしまいますが、うえの括弧(デリミタ)内に書かれた命令は、市場でtickが動く度に実行される部分です。
この中に書く命令は、大きく分けて3つの部分に分けることができます。
- ロングポジションをとる命令
- ショートポジションをとる命令
1. ロングポジションをとる命令
ブレイクアウトシステムでは前述の通り、一定期間の高値を現在値が上回ったときに、上昇トレンドが形成されたと判断し、ロングポジション(買い持ち)を取ります。
つまりプログラムが実行するべき内容は、このようになります:
- 一定期間の高値を計算
- 計算した一定期間の高値と、現在値とを比較
- (もし現在値の方が高ければ、)
ロングにポジションを取る
一定期間の高値を計算する
さて、それではまず始めに「1. 一定期間の高値を計算」から始めましょう。
- double max = High[iHighest(NULL, PERIOD_H1, MODE_HIGH, BreakPeriod, 1)];
このように入力することで、変数「BreakPeriod」に代入された「一定期間」中の最高値を求めることができます。
関数iHighest()は、一定期間の高値を含むシフトを返す関数です。
つまりiHighest()は、下の図のような場合、黄色い「足」を(number型で)返してきます。
MetaTraderのExpert Advisorは標準でHigh[]という配列を用意し、この中にはそれぞれの足の最高値が入っているので、High[iHighest()]と記述することで結果として「ある期間の最高値」が求められるわけです。
やや複雑な説明になってしまいましたが、「High[iHighest()]とすることで、一定期間の最高値がdouble型で求められる。」ということを知っているだけで実用上は十分でしょう。