• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mq4のプログラムについて)

mq4プログラムでの自作チャート表示インディケーターの問題

このQ&Aのポイント
  • MT4で自作のインディケーターを表示しているが、値がゼロ以上の場合に自分の携帯にメールが飛ぶようにした結果、何度もメールが届く問題が発生。
  • 前のティックの時は負で今のティックで正の値になった場合のみメールを送りたいが、どのような条件をプログラムに追加すれば良いかわからない。
  • ゼロ近辺で値が行ったり来たりしている状態では何度もメールが届くのは仕方ないと理解しているが、解決策を教えていただきたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Saitar
  • ベストアンサー率41% (192/464)
回答No.2

実際には色んな書き方があると思いますが、例えば、下記のようにすれば実行できます。 (もちろん、変数の定義などは、はしょってます) int start() { if(value_x < 0) cross_zero = -1; if(cross_zero == -1 && value_x > 0) { (処理) cross_zero = 1; } return(0); }

shirohato4169
質問者

お礼

ありがとうございます。 実際にプログラムに書き込んでみて、実験してみます。

その他の回答 (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分間はメールを送らない、といった工夫もしています。 ご参考までに。

shirohato4169
質問者

補足

御回答いただきありがとうございます。 cross_zeroが-1→1になったことをif文の判断条件としての書き方が分からず、困っております。 この部分のみ、具体的なコードとして、例示してもらえないでしようか。 if(int cross_zero == 1)   → 一つ前が cross_zero == -1 であったという条件は ? { (処理内容) } 重ね重ね申し訳ありません。

関連するQ&A