タイトルが入力されていません。
コンテンツがありません。
There have no category
There have no subcategory
時間帯ではなく、日付時間を指定できる機能が欲しい
例えば 経済指標の時間を入力して、そのタイミングのみ稼働 経済指標の時間を入力して、そのタイミングのみ稼動停止 など
ご要望いただき誠にありがとうございます。 検討事項に追加いたしました。 実装可能な場合は改めてご連絡いたします。
EAつくーる本体に機能を実装するのは時間がかかりそうですが、取り急ぎ、コードの修正案を考えてみました。 通常通りEAをご作成いただいた後、ソースコードを次のようにご修正ください。
日付・時刻の期間を指定するための変数を用意します。
【修正前】
input int Magic1 = 1;
【修正後】
input int Magic1 = 1; input string Period1 = "2024/03/01 10:00~2024/03/01 11:00"; input string Period2 = "2024/04/01 10:00~2024/04/01 11:00"; input string Period3 = "2024/05/01 10:00~2024/05/01 11:00";
OnTick関数内のif(Trade == false) return;という行の直前にコードを追加します。 「指定した時間帯に入っているタイミングのみ取引を行う場合」(A)と「指定した時間帯に入っていないタイミングのみトレードを許可する場合」(B)でコードが異なるのでご注意ください。
OnTick
if(Trade == false) return;
【修正後】(A)
int is_time_in_period = IsTimeInPeriod(Period1) || IsTimeInPeriod(Period2) || IsTimeInPeriod(Period3); Trade = is_time_in_period; if(Trade == false) return;
【修正後】(B)
int is_time_in_period = IsTimeInPeriod(Period1) || IsTimeInPeriod(Period2) || IsTimeInPeriod(Period3); Trade = !is_time_in_period; if(Trade == false) return;
ソースコードの一番下に、下記コードをコピペします。
//+--------------------------------------------------------------------- //| 時間帯を判定する関数 //| 引数 : 時間帯 //| 戻り値: 時間帯に属しているかどうか (true: 属している, false: 属していない) //+--------------------------------------------------------------------- bool IsTimeInPeriod(string period) { // "~" を基準に分割 int sepIndex = StringFind(period, "~"); if (sepIndex == -1) return false; // 日時をdatetime型に変換 datetime startTime = StringToTime(StringSubstr(period, 0, sepIndex) + ":00"); datetime endTime = StringToTime(StringSubstr(period, sepIndex + 1) + ":00"); // 現在時刻を取得 datetime currentTime = TimeCurrent(); // 現在時刻が期間内にあるか判定 if (currentTime >= startTime && currentTime <= endTime) return true; return false; }
以上でございます。 ご参考になりましたら幸いです。
コメント文がありません。
ご要望いただき誠にありがとうございます。
検討事項に追加いたしました。
実装可能な場合は改めてご連絡いたします。
EAつくーる本体に機能を実装するのは時間がかかりそうですが、取り急ぎ、コードの修正案を考えてみました。
変数の定義通常通りEAをご作成いただいた後、ソースコードを次のようにご修正ください。
日付・時刻の期間を指定するための変数を用意します。
【修正前】
【修正後】
取引の可否の判定を行う処理の追加OnTick関数内のif(Trade == false) return;という行の直前にコードを追加します。「指定した時間帯に入っているタイミングのみ取引を行う場合」(A)と「指定した時間帯に入っていないタイミングのみトレードを許可する場合」(B)でコードが異なるのでご注意ください。
【修正前】
【修正後】(A)
【修正後】(B)
関数の定義ソースコードの一番下に、下記コードをコピペします。
以上でございます。
ご参考になりましたら幸いです。