MQLで大陽線と大陰線の判断をする
公開日:2018/06/15
ソースコードの説明①
前回、高値と安値の引き算をしましたが、今回は、始値と終値の引き算をします。
■始値と終値の引き算
1本前の足の始値と終値をそれぞれdouble型の変数(aとb)に代入します。
そして、引き算の結果をdouble型の変数(c)に代入します。
小数点以下の桁数の変更と四捨五入をして、結果をdouble型の変数(e)に代入して表示します。
①double a = Open[1];
③double b = Close[1];
③double c = a-b;
④string d = DoubleToStr(NormalizeDouble((c/(10*Point)),3),3);
⑤double e = StrToDouble(d);
⑥Comment("1本前の足の始値 - 終値は、"+e+"です。");
①double a = Open[1];
double型の変数aに1本前の足の始値を代入。
②double b = Close[1];
double型の変数bに1本前の足の終値を代入。
③double c = a - b;
double型の変数cにa - b(始値 - 終値)の結果を代入。
④string d = DoubleToStr(NormalizeDouble((c/(10*Point)),3),3);
string型の変数dを指定。
NormalizeDoubleでcの値を(10*Point)で割って小数点以下3桁で四捨五入。
その結果をDoubleToStrで小数点以下3桁で文字列に変換。
⑤double e = StrToDouble(d);
double型の変数eにstring型の変数dをdouble型に変換した値を代入。
⑥Comment("1本前の足の始値 - 終値は、"+e+"です。");
Commentで結果を表示。
それでは、コンパイルして実行してみます。
実行結果①
今回は、始値から終値を引いているので、陰線であれば、結果はプラスになりますが、
陽線の場合、結果がマイナスになってしまいます。
マイナスという表記は、ありえないので、プラスにする必要が出てきます。
ソースコードの説明②
陽線と陰線の判断をして、陽線だった場合にマイナスをプラスにするコードを追加していきます。
■陽線と陰線の判定とプラス化
①if(e < 0){
②e = -e;
}
①if(e < 0){}
陽線のときは、eの値がマイナスになるので、if文を使って判定します。
今回は、eの値が0以下のときという条件文にします。
②e = -e;
double型の変数eをプラスにした値を代入。
それでは、コンパイルして実行してみます。
実行結果②
無事、マイナスをプラスにすることができました。
ソースコードの説明③
ようやく、ここから大陽線と大陰線の判定をするためのコードを追加していきます。
■大陽線と大陰線の判定
①if(a < b && e >= judg){
②Comment("↑大陽線です。\n"+"実体の幅:"+e+"Pips");
}
③if(a > b && e >= judg){
④Comment("↓大陰線です。\n"+"実体の幅:"+e+"Pips");
}
⑤if(e < judg){
⑥Comment(judg+"Pips以下です。\n"+"実体の幅:"+e+"Pips");
}
①if(a < b && e >= 20){
陽線(始値より終値が大きい)のとき、かつ、実体の幅が20以上のとき。
②Comment("↑大陽線です。\n"+"実体の幅:"+e+"Pips");
Commentで判定結果と実体の幅を表示。
③if(a > b && e >= 20){
陰線(始値より終値が小さい)のとき、かつ、実体の幅が20以上のとき。
④Comment("↓大陰線です。\n"+"実体の幅:"+e+"Pips");
Commentで判定結果と実体の幅を表示。
⑤if(e < 20){
実体の幅を判定。今回は20pips以下の場合という条件。
⑥Comment("20Pips以下です。\n"+"実体の幅:"+e+"Pips");
Commentで判定結果と実体の幅を表示。
それでは、コンパイルして実行してみます。
実行結果③
今回は、実体の幅が20pips以上のときに、大陽線と大陰線という基準にしています。
3パターンを実行して結果を見てみました。
大陽線、大陰線以外のとき
大陰線のとき
大陽線のとき
うまく、判定して実体の幅も表示することができました。
ただ、大陽線と大陰線の文字が見にくかったので、上矢印と下矢印も一緒に表示してみました。
まとめ
いかがだったでしょうか?
今回は、引き算に加え、陽線と陰線の判定、さらに大陽線と大陰線の判定など、少し処理が多くなりました。
しかし、これができるようになると、これからのインジゲーターなどの作成に役立てることができる部分も多いと思うので、今後の開発に活かしていきます。
それでは、また。
今回使用したMQL一覧
関連ページ