2. 戦略とパラメータ

Bookmark and Share

1. 新しいExpert Advisorを作成

まずは新しいExpert Advisorを作成する必要があります。
(作り方を忘れてしまった方は、上のリンク先を確認してくださいね)

新規作成ボタンをクリックし、ウィザードではExpert Advisorを選んでください。  
次に開かれるプロパティ設定画面では、NameBreakout_1とでもしておきましょう。
Authorにはご自分の名前(ニックネームでも無記入でも構いません)を記入、LinkParametersはそのままにしておいてください。 

最初の画面はこのようなものになるはずです。

新しいExpert Advisor
(再掲載しています。ファイル名は異なるはずですが、今回は関係ありません)

2. 変数の設定

Expert Advisorのプログラムを組み立てていく前に、まずは変数を定義しましょう。
このようなコードを書いてください。 

  1. // Variables
  2. extern double Lots=1.0;
  3. extern int BreakPeriod = 10;
  4. extern int ExitTime = 10;
  5. extern int Slippage=3;
  6. extern int StopLoss=25;
  7.  
  8. datetime timeprev=0;
  9.  
  10. // 以下の行の前に上記の記述を書く必要があります。
  11.  
  12. //+------------------------------------------------------------------+
  13. //| expert initialization function                                   |
  14. //+------------------------------------------------------------------+

変数を定義するとき、最初についている"extern"という語に注意してください。
これはその変数が、後からプログラムの外で変更可能であることを示します。
バックテスト時には大いに助かる機能ですが、まずはとにかくこの語を付けておきましょう。

3. それぞれの変数の意味 

さて、それではそれぞれの変数が何のためにあるのか、それぞれ見て行きましょう。

Lots

  1. extern double Lots=1.0;

ロット数。上昇トレンド/下降トレンドが発生したときに、どれくらいのポジションを取るのかをここで設定します。
単位は「建玉(construct)」すなわち、100,000通貨単位であることに注意してください。
例えば上の例では、USDJPYが上昇トレンドと判断されたとき、100,000USDをロングすることになります。

BreakPeriod

  1. extern int BreakPeriod = 10;

BreakOut戦略では、一定期間の最安値、最高値を越す点を、トレンドの発生とみなします。
この「一定期間」を定義している変数がBreakPeriodです。
例えば上の例では、このExpert Advisorが5分足のチャートに張り付けられた場合、直前50分間(= 5x10)の最安値、最高値を越す点を、トレンドの発生とみなします。

ExitTime

  1. extern int ExitTime = 10;

一般にポジションを持つ根拠としたトレンド判断は、時間がたつごとに危ういものになって行きます。
上昇トレンドと判断してロングした通貨がなかなか上がらないときには、その判断に疑問が持たれるべきでしょう。

したがってこのプログラムでは、ポジションが一定時間内に決済されないとき、自動的にポジションを決済します。

ExitTimeはこの期間を設定している変数です。
上の例では、Expert Advisorが5分足のチャートに張り付けられた場合、ポジションを持った50分後(= 5x10)に自動的にそのポジションを決済します。

Slippage

  1. extern int Slippage=3;

成行注文を出すとき、判断している間に値段が動いてしまうことは良くあります。もちろんコンピュータが計算するシステムトレードは、人間が判断する裁量取引よりもずっとそのケースは少ないのですが、それでも判断時と注文執行時で価格が異なることは十分あり得ます。

Slippageは、その価格差をどこまで許容するかを規定します。
上の例では、3pipsの価格差を許容することとなります。 

StopLoss

  1. extern int StopLoss=25;

読んで字のごとく、StopLoss(ストップロス)を規定します。
上の例では、25pipsに損失が達したときに、自動的に決済注文が執行されるような注文が出されます。