解決済み

時間を指定して動くようにする機能が欲しい

EAつくーる
いちやま
2025/01/02 16:17
51

時間帯ではなく、日付時間を指定できる機能が欲しい

例えば
経済指標の時間を入力して、そのタイミングのみ稼働
経済指標の時間を入力して、そのタイミングのみ稼動停止
など

コメント

GogoJungle
2025/01/07 16:30

ご要望いただき誠にありがとうございます。
検討事項に追加いたしました。
実装可能な場合は改めてご連絡いたします。

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)でコードが異なるのでご注意ください。

【修正前】

   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開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。