MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 570

 

ある時刻の状態を確認するにはどうすればよいですか?例えば、M5チャートで、22時59分、すなわちバーが閉じる1分前に、1分全体を確認します。

      //22:59
      if(open[i]>close[i] && high[i]-low[i]>=100*Point)
        {
         BufferUP[i]=low[i]-distance*Point;
        }
 
PolarSeaman:

ある時刻の状態を確認するには? 例えば、M5チャートで、22:59、つまりバーが閉じる1分前。

履歴上の指標で - だけ若いTF(この場合はM1)からデータを読み取ることによって、我々は大騒ぎする必要があります。でも、ゼロバーには。

  1. バーを閉じるまでの残り時間を計算します。
  2. 1分以内であれば、必要なことを行う。

 
Ihor Herasko:

...まあ、ゼロバーには。

  1. バーが閉じるまでの時間を計算します。
  2. 残り時間が1分以内なら、必要なことをする。

つまり、現在時刻からバーの開店時刻を 差し引いた時刻?

時間が22:59, 23:00の範囲にない場合は、反復をスキップすべきかもしれない

この条件を正しく書くには?

 
PolarSeaman:

バーの開店時間から 現在時刻を引いたものですか? 1分未満をカウントするのですか?

時間が22:59, 23:00の範囲にない場合、反復をスキップすることができる。

この条件を正しく書くにはどうしたらよいでしょうか?

時刻が明示的に設定されている場合は、上記の方式と同じになります。

input uint i_uHoursStart = 22; // Час начала действия диапазона
input uint i_uMinutesStart = 59; // Минуты начала действия диапазона
input uint i_uHoursEnd = 23; // Час окончания действия диапазона
input uint i_uMinutesEnd = 00; // Минуты окончания действия диапазона

uint g_uTimeStart, g_uTimeEnd;

int OnInit()
{
...
   g_uTimeStart = i_uHoursStart * 60 + i_uMinutesStart;
   g_uTimeEnd = i_uHoursEnd * 60 + i_uMinutesEnd;
...

}

...
uint uCurDayMinutes = Hour() * 60 + Minute();
if (uCurDayMinutes >= g_uTimeStart && uCurDayMinute < g_uTimeEnd)
{
   // Время от 22:59 до 23:00
}

コードの確認はしていない。誤植や多少の誤差がある場合があります。ここで重要なのは、思考の方向性です。

また、時、分の値が正しいかどうかも確認する必要があります。結局のところ、ユーザーは38時間112分といった値を入力することができる。

 
Ihor Herasko:

時刻が明示的に設定されている場合は、上記と同じです。

コードの確認はしていません。誤字・脱字がある場合があります。ここで重要なのは、思考の方向性です。

また、時間や分の値が正しいかどうかも確認する必要があります。結局、ユーザーは38時間112分のような値を入力することができます。

目の中、ユーザー、112分)

どうしてこうなんだろう

if (TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)>="22:59"&&TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES)<"23:00")

は指定時刻に表示されない

スイッチオフにするレンジはそれぞれ複数あります

 

引用符が一瞬「寝落ち」して時間を忘れてしまうことがあります。)

正しい方法は、タイマーを作り、ローカルと現在の時刻を 同期させ、タイマー内で正しい時刻を「キャッチ」することです。

 
PolarSeaman:

目に、ユーザーに、112分で、)

なぜ、この方法ではダメなのか?

これはまさに間違った解決方法です。なぜなら、比較するのは文字列であって、数値ではないからです。TimeToStrでも何かできるけど。しかし、この方法は、数字で操作するよりも遅いという運命にある。結局のところ、文字列操作は最も単純な算術演算(+、-、/、*)よりもずっと時間がかかるのです。

いくつかのレンジがあり、それぞれを無効にする必要があります。

これは、目的の範囲の値を配列に格納することによって行われる。確かに、コンフィギュレーション・パラメーターでこれがどう見えるかは不明です。あまりにも多くのパラメータが必要でしょう。しかし、解決策は存在します。シンプルではありませんが、利用可能です。

 
Taras Slobodyanik:

引用符が一瞬「寝落ち」して時間を忘れてしまうことがあります。)

正しい方法は、タイマーを作り、ローカルと現在の時刻を 同期させ、タイマーで正しい時刻を「キャッチ」することです

まあ、決まった時間に何かする必要はないんですけどね。だからいいんです))

 
Taras Slobodyanik:

引用元:ちょっと寝てしまい、時間がずれることがあります)

正しくタイマーを作成し、ローカルと現在の時刻を 同期させ、タイマーで正しい時刻を「キャッチ」する。

OnTimer()の中にOnCalculate()を挿入できないでしょうか?

ローカルタイムとカレント タイムを同期させる方法がわからない、ヘルプにも載って いない。

 
Ihor Herasko:

まあ、それこそ、その時その時で何もしなくてもいいんですけどね。だからいいんです ))

この分しか確認できないのに、24時間眠り続けるなんて。)