ライブラリ: カレンダー - ページ 4 1234567891011...15 新しいコメント Drake 2021.05.09 22:54 #31 fxsaber:これはできない。専門家に連絡してください。 もちろんです。ありがとう。 mqtrader 2022.05.28 18:58 #32 すべてのニュースイベントが正しくダウンロードされているにもかかわらず、バックテストが 約5年間(2017年以降)に制限されているようです(BINファイルは67MB)。MT5がバックテスト用のメモリで処理できるイベント数に制限があるのでしょうか? fxsaber 2022.05.30 00:03 #33 mqtrader #: すべてのニュースイベントが正しくダウンロードされているにもかかわらず、バックテストが約5年間(2017年以降)に制限されているようです(BINファイルは67MB)。MT5がバックテスト用のメモリで処理できるイベント数に制限があるのでしょうか? #property script_show_inputs #include <fxsaber\Calendar\Calendar.mqh> //https://www.mql5.com/ja/code/32430 input bool inFromFile = false; #define CALENDAR_FILENAME "Calendar.bin" // カレンダーを読み書きするためのファイル名。 void OnStart() { CALENDAR Calendar; if (inFromFile) Calendar.Load(CALENDAR_FILENAME); else { Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // カレンダーを全部使った。 Calendar.Save(CALENDAR_FILENAME); // 65 MB。 } Print(Calendar[0].ToString()); } 結果 2007.01.06 23:30 USD 1 CFTC Crude Oil Non-Commercial Net Positions(cftc-crude-oil-non-commercial-net-positions), United States(US) | 2.2 K | | 19.8 K | カレンダーデータベースの最初のイベントは2007年1月です。 mqtrader 2022.05.30 02:17 #34 Forecast "の値が2017.05.05から始まっていることに今気づきました。他の値はその日より前に使用できます。 fxsaberさん、大変便利なライブラリをありがとうございました! fxsaber 2022.06.15 11:42 #35 イベントカレンダーは、大幅に未来に向かって規定されています。そのため、あらかじめMT5のデータからファイルを保存しておけば、MT4でリマインダーを使用することができます(たとえば、1ヶ月前)。 これは、私がMT4でやっていることです。 MT4でカレンダーを使う手順。 1.MT5でカレンダーをCommonファイルに保存するスクリプトを実行する。 #include <fxsaber\Calendar\Calendar.mqh> //https://www.mql5.com/ja/code/32430 #define CALENDAR_FILENAME "Calendar.bin" // カレンダーを読み書きするためのファイル名。 void OnStart() { CALENDAR Calendar; Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // カレンダーを全部使った。 Calendar.Save(CALENDAR_FILENAME, true); // カレンダーを記録。> 65 MBを超える。 } 2.共通ファイルからMT4にカレンダーをロードする。 例として、MT4で現在のシンボルの通貨に関する重要なイベントのリマインダーを以下に示します。 #include <fxsaber\Calendar\Calendar.mqh> //https://www.mql5.com/ja/code/32430 #define CALENDAR_FILENAME "Calendar.bin" // カレンダーを読み書きするためのファイル名。 int OnInit() { return(!EventSetTimer(1)); } void OnTimer() { static CALENDAR Calendar; if (Calendar.GetAmount()) // カレンダーが空でない場合。 { static int Pos = 0; Pos = Calendar.GetPosAfter(TimeCurrent(), Pos); // 未来のイベントを見つけた。 Comment(Calendar.ToString(Pos, 5, true)); // プリントアウトした。 } else if (Calendar.Load(CALENDAR_FILENAME, true)) // カレンダーをファイルからロード。 { string Currencies[2]; // 現在の文字の通貨を取得します。 Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE); Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT); Calendar.FilterByCurrency(Currencies); // シンボルの通貨にイベントを残す。 Calendar.FilterByImportance(CALENDAR_IMPORTANCE_HIGH); // 重要な出来事だけが残された。 } } 起動後、チャートが更新され(カウントダウン)、シンボルの通貨の重要なイベントのリマインダーがMT4で直接表示されます。 同様にCalendarもMT4-Testerで動作します。 fxsaber 2022.06.20 17:38 #36 Mark Taylor #:しかし、カレンダーファイルの標準ダウンロードを行うと、次のような問題が発生する。その後、開始時間を設定し、各通貨のループでこの時間以降のイベントを取得します。 ソースが読めるように貼り付けてみてください。 BillionerClub 2022.10.08 23:14 #37 力強い労働をありがとう。もちろん、このような仕事は、開発され、修正され、ドキュメント、コミュニティ全体、一人ではなく、記述されるべきです。しかし、何らかの理由で、管理自体がそのような規定を与えていないだけでなく、適切な組織のために、同じGitHubへのリンクを挿入していません。プロジェクトは ありますが、その使用は、ほとんど同じGitHubです。 ありがとうございました!コードのために、それは正直なところ、このようなコードを読むことは非常に興味深いです:オーバーロードテンプレート コメントの欠如 ))この創造性の 価値が何であるか、5分はそれが何であるかを考えた:クラスのインスタンスまたはデータを持つ配列。一般的に、脳の発達のためのすべて。 CALENDAR Calendar; Calendar[i].time もちろん、仕事はクールです、あなたはそれがどのように動作するかを理解する必要があります。 BillionerClub 2022.11.04 02:52 #38 をマージした後、配列全体を時間順にソートする関数があればいいのですが。 int operator +=( const CALENDAR &Value ) { const int Size1 = this.GetAmount(); const int Size2 = Value.GetAmount(); if (!Size1) for (int i = ::ArrayResize(this.Events, Size2) - 1; i >= 0; i--) this.Events[i] = Value.Events[i]; else if (Size2) { EVENT Array[]; ::ArrayResize(Array, Size1 + Size2); int i = 0; int j = 0; int k = 0; while ((i < Size1) && (j < Size2)) Array[k++] = (this.Events[i] < Value.Events[j]) ? this.Events[i++] : Value.Events[j++]; while (i < Size1) Array[k++] = this.Events[i++]; while (j < Size2) Array[k++] = Value.Events[j++]; #ifdef __MQL5__ ::ArraySwap(this.Events, Array); #else // #ifdef __MQL5__ ::ArrayFree(this.Events); ::ArrayCopy(this.Events, Array); #endif // #ifdef __MQL5__ #else } return(this.GetAmount()); } bool operator <( const EVENT &Value ) const { return(!Value.time || (this.time < Value.time)); } fxsaber 2022.11.04 07:09 #39 BillionerClub #:をマージした後、配列全体を時間順にソートしてくれるとうれしい。 そうならない例を挙げてください。 BillionerClub 2022.11.04 07:43 #40 fxsaber #:そうでない例を挙げてほしい。 あなたのコードはわかりにくいですが、上のコードでは最終的なソートが行われていると思いますが、おそらくそのコードには誤りがあります。あまりないことですが、配列をマージするとき、配列の中で最も新しい要素はより長い期間を持つはずなので、最終的な配列はソートがないという形でエラーになります。 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 08:00 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 13:30 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 16:30 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 20:00 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.05 00:00 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.07 00:00 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 00:30 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 00:30 2022.11.04 07:05:33.053 EventsManager (FUTSP500CONT,M15) 2022.11.04 00:30 int totall = Calendar+=Calendar3; for(int i=0;i<totall;i++) { Print(TimeToString(Calendar[i].time)); } 1234567891011...15 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これはできない。専門家に連絡してください。
すべてのニュースイベントが正しくダウンロードされているにもかかわらず、バックテストが約5年間(2017年以降)に制限されているようです(BINファイルは67MB)。MT5がバックテスト用のメモリで処理できるイベント数に制限があるのでしょうか?
結果
カレンダーデータベースの最初のイベントは2007年1月です。
イベントカレンダーは、大幅に未来に向かって規定されています。そのため、あらかじめMT5のデータからファイルを保存しておけば、MT4でリマインダーを使用することができます(たとえば、1ヶ月前)。
これは、私がMT4でやっていることです。
MT4でカレンダーを使う手順。
1.MT5でカレンダーをCommonファイルに保存するスクリプトを実行する。
2.共通ファイルからMT4にカレンダーをロードする。
例として、MT4で現在のシンボルの通貨に関する重要なイベントのリマインダーを以下に示します。
起動後、チャートが更新され(カウントダウン)、シンボルの通貨の重要なイベントのリマインダーがMT4で直接表示されます。
同様にCalendarもMT4-Testerで動作します。
しかし、カレンダーファイルの標準ダウンロードを行うと、次のような問題が発生する。
その後、開始時間を設定し、各通貨のループでこの時間以降のイベントを取得します。
ソースが読めるように貼り付けてみてください。
力強い労働をありがとう。
もちろん、このような仕事は、開発され、修正され、ドキュメント、コミュニティ全体、一人ではなく、記述されるべきです。しかし、何らかの理由で、管理自体がそのような規定を与えていないだけでなく、適切な組織のために、同じGitHubへのリンクを挿入していません。プロジェクトは ありますが、その使用は、ほとんど同じGitHubです。
ありがとうございました!コードのために、それは正直なところ、このようなコードを読むことは非常に興味深いです:オーバーロードテンプレート コメントの欠如 ))この創造性の 価値が何であるか、5分はそれが何であるかを考えた:クラスのインスタンスまたはデータを持つ配列。一般的に、脳の発達のためのすべて。 もちろん、仕事はクールです、あなたはそれがどのように動作するかを理解する必要があります。をマージした後、配列全体を時間順にソートする関数があればいいのですが。
をマージした後、配列全体を時間順にソートしてくれるとうれしい。
そうならない例を挙げてください。
そうでない例を挙げてほしい。
あなたのコードはわかりにくいですが、上のコードでは最終的なソートが行われていると思いますが、おそらくそのコードには誤りがあります。あまりないことですが、配列をマージするとき、配列の中で最も新しい要素はより長い期間を持つはずなので、最終的な配列はソートがないという形でエラーになります。