いろ〜んな、EAがありますが、あなたが作ろうとしているEAには
時間の概念がありますか?
あるとしたら、ちょっとお役にたてる情報かもしれません。
時間が絡んでいるEAというと、
1. ○月○日 ○時○分 になったら、オーダー とか、
2. オーダーしてから、30分後に決済 とか、
3. 毎日○時○分〜○○分までの1時間しか動かない とか。。。。
いろいろ有るかと思います。
1の場合だと、予約EAなんかが作れます。
2の場合だと、値動きに関係なく決済したり、まぁ、オーダーしたり
5分おきにリミットを変更なんてのも、作れるかな。
3.だと、特徴のある時間帯だけに動作するEAだったり。
いろいろです。
今回、1.のオーダー予約EAを作っている時に、時間を計算したくなったんですね。
それは、特定の時間になったら、動作するという部分を、
現在の時 = 指定の時
現在の分 = 指定の分
という判断をさせていたんですが、ちょっと不安です。
というのも、= ということは、かならず1分以内に判断されないと、ダメです。
ひょっとしてパソコンが、忙しかったら・・・10秒間期限を損ねたら、、、、
判断を誤る事があるかもしれません。
そこで、指定した時間〜5分間の間に、オーダーする見たいな事をしてみたかった
わけです。
その時、ぶち当たったのが、5分後をどうやって求めるか?
例えば、19:30 という指定なら、19:35 が求めたい答えです。
まず、指定の日時をセットする方法から。
(日時のセットの仕方で、ちょっと悩んだのは内緒です(^^ゞ
datetime test_date
test_date = StrToTime("2008.07.23 19:30");これで、「test_date」っていう変数に、今日(2008.07.23)の19:30が入りました。
ここから、5分足したいわけです。
例えば、こんな方法もあるかもです。
int h=TimeHour(test_date);
int m=TimeMinute(test_date);セットした時間から、時 と 分 をとりだして。
int mPlus = m + 5;
分 の部分に、5を足してみる。
んーーー。一応出来ないことも無いけど、これだと。
1. 19:58 っていう指定時間じゃ 63分になっちゃう。。
2. 23:58 だと、日にちも次の日にしなきゃだね!
3. っていうか、2008年12月31日の 23:58なんて考えたくない(><)
ってなったので、こんなのを試してみました^^)
datetime test_date1, test_date2, test_date3, test_date4;
test_date1 = TimeLocal();
test_date2 = StrToTime("2000.01.01 00:00");
test_date3 = StrToTime("2000.01.01 00:05");
test_date4 = test_date1 - test_date2 + test_date3;test_date1 には、TimeLocal() で現在の時刻を入れます。
test_date2 には、2000年01月01日 の0時0分です。
test_date3 には、その5分後の日時をセット。
で、、、date2を引いて、date3を足してみました。
2000年ひいといて、2000年と5分足したわけです。
そしたら、5分後の日時が求まりました!!
00:05とかは、プログラムで、変更できるから、時間が計算
できますねぇ〜。
ちょっと、テストしてみたんですが、日付をまたいだりするのもOKです。
これを、応用すれば、時間の足し引きは、ファンクションにできますね。
作ったら、公開しようと思います。
ちょこっと役だったら、嬉しいです。
でわ(^-^)/
theme : システムトレード
genre : 株式・投資・マネー