[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 98

 

キムには機能がある。

//+------------------------------------------------------------------+
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
} 

2つ質問させてください。

1. なぜ、時刻を一気に文字 列に変換し、さらに文字列を時刻に変換するのでしょうか?

2. なぜ、このような条件が関数にあるのでしょうか?

  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

なぜなら、下の時間を確認すると...ここです。

if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);

また、関数のパラメータでは、時間変数がdatetime 型ではなく、なぜかint 型になっています...。

 
ははは、わかりましたよ。というのも、編集作業をしていたファイルを昨日、フラッシュメモリーから開いたのです。テキストは開いていて、何も問題ないのですが、今日はフラッシュドライブを挿していません。コンパイルしたい内容がわからない、テキストはあるが、編集のためにアクセスできないだけ。そんなこともあるんですね。
 
hoz:

キムには機能がある。

2つ質問させてください。

1. なぜ、時刻を一気に文字列に変換し、さらに文字列を時刻に変換するのでしょうか?

2. なぜ、このような条件が関数にあるのでしょうか?

なぜなら、下の時間を確認すると...ここです。

また、関数のパラメータでは、時間変数がdatetime 型ではなく、なぜかint 型になっています...。


1.時刻の「時」と「分」の値を、機能パラメータで指定した値に置き換える場合

私ならこうする。

db=TimeCurrent()-TimeCurrent()%86400+hb*3600+mb*60;

2.日ごとに正しい開始日または終了日を追加するには

datetimeとintは本質的に同じものであり、パラメータは完全な日付ではなく、時間と分の数だけである

 
MikeM:


2.日ごとの開始日または終了日を追加で修正する場合

なぜ?EAの取引時間を制限する必要があります。また、取引時間が終了 する時間から取引時間が始まる までの時間には興味がありません。なぜなら、その時間にはEAは取引を行わないからですNONSENSESの意味がわからない...。

MikeM:

datetimeとintは本質的に同じもので、パラメータは完全な日付ではなく、時間数と分数だけです

しかし、時間は時間でなければならない、どうして差がないのだろう?
 
hoz:


しかし、時間は時間でなければならない、どうして差がないのだろう?


時間は数であり、整数である。
 
Vinin:

時間は数字であり、整数である。


時間については、日付ではない、だから数字で宣言する、というのはよくわかります。しかし、どうでしょう。

  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

今まで多くのバリエーションを見てきましたが、こんなのは初めてです......。なんだか不思議な感じです。しかも、ここには周期がなく、取引の始まりと終わりの時間をマイナスとプラスで表しています。この点が理解できない。

実際、上記のdbと deの トレードの開始時刻と終了時刻を取得しました。そこで、この作品は消去して、時間を確認することがあります。

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);

余計なコードを書く意味はあるのか?この点について説明してください。実は論理的ではないんです。

 
hoz:


分単位を使わないのであれば、簡略化できるかもしれません。 時間で言いたいことはわかりますが、日付ではなく、日付を宣言するのです。どうなんでしょう。

今まで多くのバリエーションを見てきましたが、こんなのは初めてです......。なんだか不思議な感じです。しかも、ここには周期がなく、取引の始まりと終わりの時間をマイナスとプラスで表しています。この点が理解できない。

実際、上記のdbと deの トレードの開始時刻と終了時刻を取得しました。そこで、この作品は消去して、時間を確認することがあります。

余計なコードを書く意味はあるのか?この点について説明してください。理屈じゃないんです。


誰もが自分のことを自由にできる。イゴールはこのようにした。やり方が違うんです。

そして、プラスになるかマイナスになるか。だから、取引時間にもよる。例えば、21時間から5時間への取引をどうアレンジするか。

議事録が使われなければ、すべてがもっとシンプルになるはずです。

 
Vinin:


みんな自分のやり方で自由にやっているんです。イゴールはこのようにした。私は今までと違うことをやっています。

そして、それがプラスなのかマイナスなのか。だから、取引時間にもよる。例えば、午後9時から午前5時までの取引をどう整理するか。

そして、コードは冗長です。そんなことはどうでもいいのです。

議事録が使われなければ、すべてがもっとシンプルになるはずです。


取引時間を21:00から23:59までとし、00:01から5:00までとする。

他に選択肢はないのでしょうか?

 
hoz:


取引時間を21:00から23:59までとし、その後00:01から5:00までとする。

他の選択肢はないのか?

if(Hour() >= 21 || Hour() < 5)と書けば、21時から4時59分までとなる。
 
borilunad:
if(Hour() >= 21 || Hour() < 5)と書けば、21時から4時59分までとなる。

それは変ですね。深夜0時を飛び越えて、全く考慮されてない?