MT4 - MQLで大陽線と大陰線の判断をする

sitemap
世界最強のFXキャッシュバックサイト
MQLで大陽線と大陰線の判断をする
公開日:2018/06/15
前回、「MQLで価格の引き算をして結果をPipsに変換する方法」という記事を書きましたが、

今回は、これを応用して、大陽線と大陰線の判断をMQLでしてみます。

以下から作成過程を説明していきます。
ソースコードの説明①
前回、高値と安値の引き算をしましたが、今回は、始値と終値の引き算をします。

■始値と終値の引き算

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一覧
関連ページ
Subtraction change Pips
big_candlestick_judgment
Subtraction change Pips
スポンサードリンク
Twitter