MQL4プログラミングの初心者の勉強記録です。
前回までに作成した3本のMAを表示するインジケーターにサインを追加します。
今回は、20MAにタッチしたらサインを出すインジケーターを作ります。
まずは前回同様に11行目と12行目の数字を増やします。
今回は上矢印と下矢印の2つを追加していきます。
続いて変数も宣言しておきます。
カンマで区切って連続することで1行にまとめておきました。
SetIndexBufferの3番と4番として設定します。
画像では3番と3番になってしまってます。
SetIndexStyleも追加します。
今回は矢印を使用するのでDRAW_ARROWとしています。
それぞれオレンジとダークカーキの太さ2の実線としています。
さらに矢印の場合には
SetIndexLabelとSetIndexArrowの設定も必要です。
指定する番号によってさまざまな記号を表示することができます。
今回は233番の上矢印と234番の下矢印としています。
どんな記号を表示するかの設定が完成しました。
次はいつその記号を表示するのかを指定します。
指定する場所はfor文の中に書き込みます。
矢印を表示するタイミングの指示は上矢印と下矢印に分けて設定します。
まずは上矢印を設定してちゃんと表示されたら下矢印をコピペで代用します。
今回は条件を2つ設定しました。
Low[i+1] > MA20[i+1] && Low[i] < MA20[i]
Low[i+1] > MA20[i+1] 1本前の安値が1本前の20MAよりも大きい
&& かつ。前後の条件を両方満たす場合の記号
Low[i] < MA20[i] 現在の安値が現在の20MAよりも小さい
簡単に説明すると「1本前の安値が20MAよりも上で現在の安値が20MAよりも下」
2つの条件を満たしたときに上矢印を表示するという指示になります。
矢印を表示する場所は現在の安値の30pips下です。
1本前の足に条件を付ける場合にはlimit-2に変更しておくことが必要です。
limit-1のままだとすべて消えてしまいます。
上矢印同様に下矢印についても設定します。
今度は高値をのHighを基準に20MAに対する等符号が逆になります。
else
{
DN[i] = EMPTY_VALUE;
条件に合致しなかったら何も表示しないという指示がついています。
今回作成したインジケーターをセットした状態です。
20MAに反応したところで矢印が表示されています。
インジケーターをセットしたので矢印が表示された次の足でロングした場合を検証しました。
TPには直近の高値、SLには直近の安値としています。
ローソク足が480MA=日足の20MAの上にあるので今回はロングだけ検証しています。
手動での検証ですが結果は
勝率:48% PF:0.68 PR:0.74
25トレードで-122pipsとなりました。
単純な規則通りにやっても決して勝てません。
勝率50%PR2.0以上を満たしたら実弾トレードに移行したいですね。
20MAと80MAがゴールデンクロスした後の最初の矢印だけにするとか
TPとSLを変えて検証してみることが大事です。
コメント