- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mq4のプログラムについて)
mq4プログラムでの自作チャート表示インディケーターの問題
このQ&Aのポイント
- MT4で自作のインディケーターを表示しているが、値がゼロ以上の場合に自分の携帯にメールが飛ぶようにした結果、何度もメールが届く問題が発生。
- 前のティックの時は負で今のティックで正の値になった場合のみメールを送りたいが、どのような条件をプログラムに追加すれば良いかわからない。
- ゼロ近辺で値が行ったり来たりしている状態では何度もメールが届くのは仕方ないと理解しているが、解決策を教えていただきたい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
実際には色んな書き方があると思いますが、例えば、下記のようにすれば実行できます。 (もちろん、変数の定義などは、はしょってます) int start() { if(value_x < 0) cross_zero = -1; if(cross_zero == -1 && value_x > 0) { (処理) cross_zero = 1; } return(0); }
その他の回答 (1)
- Saitar
- ベストアンサー率41% (192/464)
回答No.1
私がよくやる方法は、ひとつ変数、例えば、cross_zeroを定義して、ある値がゼロ以下の場合は、cross_zeroを-1に設定して、ゼロ以上になったら、cross_zeroを1とします。 で、cross_zeroが-1→1になったことをif文の判断条件として、メールを送信するのです。 こうすれば、cross_zeroがずっと1(つまり、ある値がずっとゼロ以上)になってもメールを送り続けることがありません。 実際は、ある値がゼロ近傍をウロウロすることが多いので、TimeCurrent()関数でcross_zeroが-1→1になった時点の時刻を記録しておき、そこから3分間はメールを送らない、といった工夫もしています。 ご参考までに。
質問者
補足
御回答いただきありがとうございます。 cross_zeroが-1→1になったことをif文の判断条件としての書き方が分からず、困っております。 この部分のみ、具体的なコードとして、例示してもらえないでしようか。 if(int cross_zero == 1) → 一つ前が cross_zero == -1 であったという条件は ? { (処理内容) } 重ね重ね申し訳ありません。
お礼
ありがとうございます。 実際にプログラムに書き込んでみて、実験してみます。