ライブラリ: コントロール_トレード_セッション - ページ 2 12 新しいコメント Stanislav Korotky 2025.11.07 16:35 #11 Forester #: 単に時間による比較が行われています。 ちなみに、任意の値を設定することも可能です。 セッション時間はブローカーから取得されますが、手動で設定することも可能です。 私が言っていたのは内部コードのことであり、呼び出しや入力パラメータのことではありません。 datetime Sec = TimeSec(time); //その日の現在の秒数 ... if(( Sec >= this.TradeTimeFrom[i][DayOfWeek] ) && ( Sec < this.TradeTimeTo[i][DayOfWeek] )) ここではSecが24時間の範囲で指定されていますが、from-toの境界がありません。例えば、午前3時の時間がリクエストされ、セッションが夜21時から午前8時まで取引されている場合、trueが返されるはずですが、条件が満たされずfalseが返されます。 Aleksei Kuznetsov 2025.11.07 17:04 #12 Stanislav Korotky #:私が言っていたのは内部コードのことであって、呼び出しや入力パラメータのことではありません。 ここではSecが24時間単位の範囲で指定されていますが、from-toの境界がありません。例えば、午前3時の時刻がリクエストされ、セッションの取引時間が夜9時から午前8時までである場合、trueが返されるはずですが、条件が満たされずfalseが返されてしまいます。 これは2つのセッションで設定可能です: 21-24および0-8 これは理論上の質問ですが、実際の取引センターにはこのような「from-to」の範囲は存在するのでしょうか? Stanislav Korotky 2025.11.07 17:25 #13 Forester #:これは2つのセッションで設定できます: 21-24 および 0-8 これはあくまで理論上の質問ですが、DCには実際にこのようなfrom-toの設定があるのでしょうか? 「2つのセッションで設定する」とはどういう意味ですか? それらはMT5の設定から取得されるものであり、私たちが設定するものではありません。また、MT5では1つのセッション=1つのエントリです。一部のブローカー(市場から地理的に離れているため)では、そのようなケースがあるかもしれません。 その場合、SymbolInfoSessionTradeは追加の日数を考慮したtoの時刻を返します(少なくとも以前はそうでした――今すぐ確認はしていませんが)。つまり、from < toという条件は常に満たされていました。 Aleksei Kuznetsov 2025.11.07 17:44 #14 Stanislav Korotky #: 「2つのセッションを設定する」とはどういう意味ですか? sunputでは、日ごとにセッションを個別に設定することができます。プログラムはそれに基づいて動作します。 を接続します #define LoadSessionFromInputs // 入力からセッションを読み込みます Stanislav Korotky#: この場合、SymbolInfoSessionTradeは追加の日数を考慮した「to」の時間を返します(少なくとも以前はそうでした。今すぐ確認はしていませんが)。つまり、「from < to 」という条件は常に満たされていました。 つまり、20:00 ~ 32:00 ということですか? ブローカーからテスト可能な実例が提供されれば、その例に合わせて修正し、確認することができます。 現時点では、深夜0時を境にセッションを2つに分割するという簡単な解決策があります。また、どの日に分割するかを指定することも可能です。例えば、土曜日の8:00までは金曜日の残り、日曜日の20:00からは月曜日の開始とするなどです。 Stanislav Korotky 2025.11.07 21:20 #15 Forester #:つまり、20:00~32:00ということですか? はい。そのようなサーバーを備えた既成のデータセンターは、今のところ見当たりません。ニュージーランドのどこかで探す必要があります。 Aleksei Kuznetsov 2025.11.08 08:27 #16 Stanislav Korotky #: はい。そのようなサーバーを備えた既製のデータセンターは、今のところ見当たりません。ニュージーランドのどこかで探す必要があります。 カスタム記号エディタで次のように設定しました: Aleksei Kuznetsov 2025.11.17 15:21 #17 Forester #:カスタム記号のエディタでは、次のように設定しました: スクリーンショットにあるような設定、つまり20:00~08:00の時間帯で、翌日に移行するセッションをプログラムしました。 以下の関数を変更しました: for (int i = 0; i < this.TradeSessions[DayOfWeek]; i++){//その曜日のセッションを一通り確認する if(( Sec >= this.TradeTimeFrom[i][DayOfWeek] )){ //セッションが開始された - 終了点を検索 if(Sec < this.TradeTimeTo[i][DayOfWeek]){//まだ終わっていない、覚えておく this.NextTradeStop = (datetime)(day * 86400) + this.TradeTimeTo[i][DayOfWeek]; //現在のセッションの終了時刻。これまでは、次のセッションを検証する必要はない = (当日の開始時刻 + セッションの時間) //Print("new Stop ",this.NextTradeStop); return true; }else if (this.TradeTimeTo[i][DayOfWeek] < this.TradeTimeFrom[i][DayOfWeek]){// 終了 < 開始(例:20:00~04:00 - 翌日に切り替わり、時刻に1日を加算) this.NextTradeStop = (datetime)((day+1) * 86400) + this.TradeTimeTo[i][DayOfWeek]; //現在のセッションの終了時刻。これまでは、次のセッションを検証する必要はない = (当日の開始時刻 + セッションの時間) //Print("new Stop ",this.NextTradeStop); return true; } } } 追加したコードは、終了時刻がセッションの開始時刻より前であるかどうかを確認し、その後、終了時刻に 1日を加算する だけです。 以下のセッションで 検証しました: 日: 1 取引セッション: 1: 23:55-00:05 日: 2 取引セッション: 1: 00:15-00:17 翌日にまたがる最初のセッション: 2020.06.29 23:55:03 2020.06.29 23:55:03 2020.06.29 23:55:09 2020.06.29 23:55:09 2020.06.29 23:56:39 2020.06.29 23:56:39 2020.06.29 23:57:01 2020.06.29 23:57:01 2020.06.29 23:59:59 2020.06.29 23:59:59 2020.06.30 00:00:00 2020.06.30 00:00:00 2020.06.30 00:00:08 2020.06.30 00:00:08 2020.06.30 00:01:52 2020.06.30 00:01:52 2020.06.30 00:02:02 2020.06.30 00:02:02 2020.06.30 00:02:30 2020.06.30 00:02:30 2020.06.30 00:03:25 2020.06.30 00:03:25 2020.06.30 00:03:31 2020.06.30 00:03:31 第2セッション(通常は1日で行われる): 2020.06.30 00:15:29 2020.06.30 00:15:29 2020.06.30 00:16:01 2020.06.30 00:16:01 2020.06.30 00:16:09 2020.06.30 00:16:09 1週間後の第1回セッション: 2020.07.06 23:55:01 2020.07.06 23:55:01 2020.07.06 23:55:09 2020.07.06 23:55:09 12 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
単に時間による比較が行われています。
ちなみに、任意の値を設定することも可能です。
セッション時間はブローカーから取得されますが、手動で設定することも可能です。
私が言っていたのは内部コードのことであり、呼び出しや入力パラメータのことではありません。
ここではSecが24時間の範囲で指定されていますが、from-toの境界がありません。例えば、午前3時の時間がリクエストされ、セッションが夜21時から午前8時まで取引されている場合、trueが返されるはずですが、条件が満たされずfalseが返されます。
私が言っていたのは内部コードのことであって、呼び出しや入力パラメータのことではありません。
ここではSecが24時間単位の範囲で指定されていますが、from-toの境界がありません。例えば、午前3時の時刻がリクエストされ、セッションの取引時間が夜9時から午前8時までである場合、trueが返されるはずですが、条件が満たされずfalseが返されてしまいます。
これは2つのセッションで設定可能です:
21-24および0-8
これは理論上の質問ですが、実際の取引センターにはこのような「from-to」の範囲は存在するのでしょうか?
これは2つのセッションで設定できます:
21-24 および 0-8
これはあくまで理論上の質問ですが、DCには実際にこのようなfrom-toの設定があるのでしょうか?
「2つのセッションを設定する」とはどういう意味ですか?
sunputでは、日ごとにセッションを個別に設定することができます。プログラムはそれに基づいて動作します。
を接続します #define LoadSessionFromInputs // 入力からセッションを読み込みます
この場合、SymbolInfoSessionTradeは追加の日数を考慮した「to」の時間を返します(少なくとも以前はそうでした。今すぐ確認はしていませんが)。つまり、「from < to 」という条件は常に満たされていました。
つまり、20:00 ~ 32:00 ということですか?
ブローカーからテスト可能な実例が提供されれば、その例に合わせて修正し、確認することができます。
現時点では、深夜0時を境にセッションを2つに分割するという簡単な解決策があります。また、どの日に分割するかを指定することも可能です。例えば、土曜日の8:00までは金曜日の残り、日曜日の20:00からは月曜日の開始とするなどです。
つまり、20:00~32:00ということですか?
はい。そのようなサーバーを備えた既製のデータセンターは、今のところ見当たりません。ニュージーランドのどこかで探す必要があります。
カスタム記号エディタで次のように設定しました:
カスタム記号のエディタでは、次のように設定しました:
以下の関数を変更しました:
追加したコードは、終了時刻がセッションの開始時刻より前であるかどうかを確認し、その後、終了時刻に 1日を加算する だけです。
以下のセッションで 検証しました:
日: 1 取引セッション: 1: 23:55-00:05
日: 2 取引セッション: 1: 00:15-00:17
翌日にまたがる最初のセッション:
2020.06.29 23:55:03 2020.06.29 23:55:03
2020.06.29 23:55:09 2020.06.29 23:55:09
2020.06.29 23:56:39 2020.06.29 23:56:39
2020.06.29 23:57:01 2020.06.29 23:57:01
2020.06.29 23:59:59 2020.06.29 23:59:59
2020.06.30 00:00:00 2020.06.30 00:00:00
2020.06.30 00:00:08 2020.06.30 00:00:08
2020.06.30 00:01:52 2020.06.30 00:01:52
2020.06.30 00:02:02 2020.06.30 00:02:02
2020.06.30 00:02:30 2020.06.30 00:02:30
2020.06.30 00:03:25 2020.06.30 00:03:25
2020.06.30 00:03:31 2020.06.30 00:03:31
第2セッション(通常は1日で行われる):
2020.06.30 00:15:29 2020.06.30 00:15:29
2020.06.30 00:16:01 2020.06.30 00:16:01
2020.06.30 00:16:09 2020.06.30 00:16:09
1週間後の第1回セッション:
2020.07.06 23:55:01 2020.07.06 23:55:01
2020.07.06 23:55:09 2020.07.06 23:55:09