MAのゴールデンクロス、デッドクロスを基準にしたインジケーターはいろいろあります。
しかし、クロスしただけでのエントリー判断では勝てません。
そこで今回は、クロス後の最初のタッチでサインを出すことに挑戦します。
20と80MAがクロスしてから最初に80MAにタッチした場所にサインを出したいと思います。
以前に作成した4本のMAを表示するインジケーターを流用していきます。
最初に作成したコードがこちらです。
1番目の条件として、1本前の20MAが80MAよりも下で現在20MAが80MAよりも上。
さらに2番目の条件として、現在の安値が80MAよりも上。
その時に安値が80MAよりも下になるj番目の足を探す。
そしてj番目の安値の下に上矢印を表示したい!
残念ながら、結果はMAクロスの1本後に矢印が表示されています。
j番目の80MAの価格が取得できていないのか?
そこでi番目の80MAに変更してみるとちゃんと表示されます。
こうなるとどうしたらいいのかわからないのが素人のつらいところです。
意味もなく「bar」と定義したbufferの名前を変えてみたり、
jをkにしてみたり、残念な試行錯誤が続きます。
最初に気づければいいのですが、ふとj番目のMAの価格ってどこだろうと思いました。
そこで必要な80MAだけ条件式の中で取得するようにコピペしてみました。
j番目の安値と比較するためのj番目の80MAの価格を取得するという意味になるんでしょうか?
結果的にはクロス後の最初の80MAへのタッチで矢印を表示することができました。
見つかったj番目の情報を「bar」に入れる必要があるのか疑問ですね。
bar = j;の代わりに
UP[j] = Low[j] – 30 * Point;を直接書いても同じ結果でした。
条件1をクリア後、さらに条件2をクリアした時にサインを表示することができました。
この調子でさらに条件を複雑にしていくことができるのか挑戦します。
例えば、今回の矢印を表示させた足の1本前の高値を超えたらサインを表示する。
これができたらトリガーの設定が可能になるのでぜひとも完成させたいですね。
コメント