忍者ブログ
2024 05
≪ 2024 04 1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31 2024 06 ≫


*admin*entry*file*plugin| 文字サイズ  

PC系スポンサーリンク







04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
[10/01 mz]
[10/01 天ノ川きらら]
[02/19 mz]
[02/18 天ノ川きらら]
[01/02 mz]
HN: 新堂 瑞樹, mz
性別: 男性
自己紹介:
健康第一

千葉市内一部地域を対象に出張整体やってます
仔細はコチラをご参照あれ

すかいぷ: mizuki_zero
予約等はこちらからも受け付けております
*付きは必須項目です
の記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。




特定の時間帯のみトレードするEAを作る法

MetaSysSeeker様のリファレンスからそれらしい関数探してたらできたのでチョー簡単と思われます。

たとえば日本時間の21:30から24:00の間に取引させたくない場合
datetime dt = TimeCurrent();// dddDTちゃうわ!
int hour = TimeHour( dt ), min = TimeMinute( dt );
if( !( (hour == 8 && min >= 30) ||
(hour >= 9 && hour < 11)
) )
{
// write trade coding
...
}
便宜上not演算子つことるけど個人的には「回避する時間帯でなければ」を真としたif文のほうがすっきりしてて好きね。あとfor文で i++ って後置するのはやめてほしい。いらん値評価=処理が生まれるのよ。++iにしましょう。

それはさておき時間指定、TimeCurrent()で取得した現在時刻(を示した莫大な整数)からTimeHour() TimeMinute() で24時間表記の数値を取得するわけですが。
多くの(すべての?)MT4でそうかと思われますがTimeCurrent()で取得するサーバー時刻は、ニューヨーク時間です。日本時間とは夏時間で13時間、冬時間で14時間の時差があります。
なのでニューヨーク時間の8:30 + 時差13:00 = 日本時間の21:30 ですね。正確を期すなら夏時間・冬時間の判定ルーチンも組むべき。
22・23時はminuteを使わずhourだけで判定できるのでもっと簡単。「8時かつ30分以降、または9時以降かつ11時前なら実行しない」処理の 爆 誕 というわけです。簡単でしょ?

時差を考えてコーディングするのはいやじゃー! いやなんじゃー! という人はTimeCurrent()で取得した値に時差ぶんの数値(たぶん時差ぶんのミリ秒)をあらかじめプラスしてやればいいのですが、わしには必要ない処理なので各々でやってつかあさい。
TimeLocal() っていうローカル時間を取得する関数もあるにはありますが、ことEAに関して「動作環境に依存した結果を返す関数」を使うのは危険かなと思います。まあTimeCurrent()もサーバー依存なわけだが、それはまた別のお話。

拍手

PR