エラー、バグ、質問 - ページ 1850 1...184318441845184618471848184918501851185218531854185518561857...3185 新しいコメント fxsaber 2017.04.11 16:01 #18491 バグでしょうか?struct STRUCT { int a; STRUCT() {} // Если закомментировать, ошибка пропадает }; void OnStart() { STRUCT Struct = {1}; // cannot be initialized with initializer list } kaus_bonus 2017.04.11 18:19 #18492 スタイラスを 使用する際のバグ?タブを使用して書いていたとします。//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ input int x=0; #define TWO_DIM (10000) //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- double massive[][TWO_DIM]; } //+------------------------------------------------------------------+ エラーはない。で、スタイラスを使用すると、次のようになります。//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ input int x=0; #define TWO_DIM(10000) //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- double massive[][TWO_DIM]; } //+------------------------------------------------------------------+ '10000' - unexpected in macro formal parameter list bug.mq5 7 17 '[' - invalid index value bug.mq5 13 25 すなわち、スタイラスはTWO_DIM(10000) の間のスペースを消去します。 fxsaber 2017.04.12 06:08 #18493 コンパイルエラーtemplate <typename T> struct STRUCT { template <typename T1> STRUCT( T1 Value ) {} // 'STRUCT<int><int>' - declaration without type }; void OnStart() { STRUCT<int> Struct(0); // 'STRUCT<int>' - cannot to apply function template } fxsaber 2017.04.12 06:38 #18494 ちょっとだけ脱帽。代入演算 子のバイパスtemplate <typename T> struct STRUCT_COPY { T Value; STRUCT_COPY( const T& tValue) { this = (STRUCT_COPY)tValue; } }; struct STRUCT { int i; void operator =( const STRUCT& ) { this.i = 5; } }; #define PRINT(A) ::Print(#A + " = " + (string)(A)); void OnStart() { STRUCT Struct; Struct.i = 1; PRINT(Struct.i); STRUCT StructCopy1 = Struct; PRINT(StructCopy1.i); // Обходим void STRUCT::operator=(const STRUCT&) STRUCT_COPY<STRUCT> StructCopy2(Struct); PRINT(StructCopy2.Value.i); }結果Struct.i = 1 StructCopy1.i = 5 StructCopy2.Value.i = 1 fxsaber 2017.04.12 12:27 #18495 正しい方法とは?struct STRUCT { template <typename T> void operator []( int ) {} }; void OnStart() { STRUCT Struct; Struct.operator[]<int>(0); // Нормально Struct[0]<int>; // Ошибка } kaus_bonus 2017.04.12 15:38 #18496 MT5では、CopyClose バッファの最初のコピー時間は、以下のものに依存すると理解しています。1.以前はティッカーのクォートを全く受信せず、チャートも開かなかった場合など。(Ping、インターネット速度、ハードディスク、Bases/Broker/history/ticker/cache/ファイルの準備に依存します。)2017.04.11 11:27:38.828 время копирования буфера (EURUSD,M1) проход = 0 время= 8355581 2017.04.11 11:27:38.828 время копирования буфера (EURUSD,M1) проход = 1 время= 10832. 相場が以前に受信され、その後ターミナルが再ロードされた場合、このティッカーのチャートが開かれていないことを条件とします(Bases/Broker/History/Ticker/Cache/ファイルの準備)。2017.04.11 11:29:14.672 время копирования буфера (EURUSD,M1) проход = 0 время= 599396 2017.04.11 11:29:14.734 время копирования буфера (EURUSD,M1) проход = 1 время= 259 ///////////////////////////// 2017.04.12 19:32:46.489 время копирования буфера (FULT,M5) проход = 0 время= 98167 2017.04.12 19:32:46.557 время копирования буфера (FULT,M5) проход = 1 время= 155 2017.04.12 19:32:46.557 время копирования буфера (FULT,M5) проход = 2 время= 14の時間はp.1より10-15倍短くなります。の比較のため、ポイント2によるМТ4でのアクセス時間、すなわち端末リセット後2017.04.12 19:30:38.831 время копирования буфера EURUSD,M1: проход = 2 время= 276 2017.04.12 19:30:38.831 время копирования буфера EURUSD,M1: проход = 1 время= 434 2017.04.12 19:30:38.831 время копирования буфера EURUSD,M1: проход = 0 время= 2260 2017.04.12 19:30:38.816 время копирования буфера EURUSD,M1: initialized 2017.04.12 19:30:38.666 время копирования буфера EURUSD,M1 inputs: Pair=USDCAD;すなわち、MT4ターミナル再起動後の時間は数桁少なくなります。今回はSSDを使わず、Windowsで全て確認しました引用元:端末が再起動されず、データにアクセスしたところ2017.04.11 11:35:30.648 время копирования буфера (EURUSD,M1) проход = 0 время= 89 2017.04.11 11:35:30.648 время копирования буфера (EURUSD,M1) проход = 1 время= 42キャッシュをロードした後、端末がそれ以上の要求(2回目の要求から)に対して必要とする時間がかなり短くなるというのは正しい理解でしょうか?ターミナル再起動後の初回呼び出しの時間を何とか短縮して、MT4と同じようにできないでしょうか?コードは https://www.mql5.com/ru/forum/1111/page1870#comment_4856899 にありました。 Ошибки, баги, вопросы www.mql5.com Форум алго-трейдеров MQL5 Renat Fatkhullin 2017.04.12 16:45 #18497 kaus_bonus:MT5では、同じCopyCloseバッファの最初のコピー時間が依存することを理解しています。環境と再生方法の記述が全く無いので、非常に汚いテスト方法になっていますね。特になし。ウィンドウ内のバーの制限端末データベースの実データ量すべてのデータがディスク上にあることが保証されている必要があります。テストするプラットフォームとビットレート(Wine環境?)かいほうそうこれなくしては、結論に根拠がない。 例えばEURUSDのM1を見て ください。MT5には600万本以上のバーがありますが(チャートで無制限モードの場合)、MT4にはいくつあるのでしょうか?実際のデータベースには、数万本のM1バーがあるのですか? kaus_bonus 2017.04.12 17:20 #18498 Renat Fatkhullin:環境と再生方法の記述が全くないので、非常に雑なテスト方法になっていますね。特になし。ウィンドウのバーの制限端末データベースの実データ量サーバーとは何なのか、ベースはディスクなのか、すべてのデータがディスク上にあることが保証されていなければならない。テストするプラットフォームとビットレート(Wine環境?)オープンウィンドウの可用性それがなければ、結論に根拠がない。 私の投稿でほとんど質問されましたが、問題ありません、今すぐすべてのデータをお渡しします。の答えがまず一つ。какой точно сервер, находятся ли базы на диске? все данные обязаны быть гарантированно на диске.MQ-demoサーバーでは、前回の記事のポイント2、ポイント3のように、データを読み込んでいます。ポイント1については、すべてが明確であり、質問はありません。лимиты баров в окнеエムティーフォーMT5фактические объемы данных в базах терминаловエムティーフォーMT5платформа и битность тестирования (под вайном? нужно указывать детально)win XP 32bit、MTの全ビルド最新版。наличие открытых оконMT4 - 1つのチャートを開き、別のシンボルで確認します。MT5 - 1つのチャートを開き、別のシンボルで確認します。ターミナルをリロードし、チャートにスクリプトを送信し、ターミナルをリロードする前に読み込まれた他のシンボルを選択することを繰り返してください。エムティーフォー2017.04.12 21:18:31.575 время копирования буфера EURUSD,M1: проход = 2 время= 36 2017.04.12 21:18:31.575 время копирования буфера EURUSD,M1: проход = 1 время= 282 2017.04.12 21:18:31.575 время копирования буфера EURUSD,M1: проход = 0 время= 1871 2017.04.12 21:18:31.575 время копирования буфера EURUSD,M1: initialized 2017.04.12 21:18:31.405 время копирования буфера EURUSD,M1 inputs: Pair=GBPUSD; MT52017.04.12 21:19:47.735 время копирования буфера (EURUSD,H1) проход = 0 время= 303951 2017.04.12 21:19:47.735 время копирования буфера (EURUSD,H1) проход = 1 время= 29 2017.04.12 21:19:47.735 время копирования буфера (EURUSD,H1) проход = 2 время= 25 Renat Fatkhullin 2017.04.12 18:47 #18499 ここでは、より詳細に、より精度を上げてテストしています。 条件説明 MetaTrader 4 ビルド 1065MetaTrader 5 x64 build 1580ハードウェアとオペレーションシステム Windows 10 Pro x64、Intel Xeon E5-2690 v3 @ 2.60GHz、RAM: 32Gb、SSDディスクトレードサーバーMetaQuotes-デモMetaQuotes-デモ設定でチャートにバーを制限する10 00010 000履歴の設定にバーを制限する 10 000 000制限なしEURUSDの実際のバー数(M1) 3.382百万円6,538百万円検証済みシンボルとピリオドEURUSD, M1EURUSD, M1オープンチャートGBPUSD、M1のみ、スクリプトも投げています。GBPUSD, M1のみ、同じスクリプトを投げています。結果は端末起動後のコールド状態#0 pass, 1000 records in 680 msc #1 pass, 1000 records in 2 msc #2 pass, 1000 records in 2 msc #0 pass, 1000 records in 113497 msc #1 pass, 1000 records in 3 msc #2 pass, 1000 records in 3 msc 結果はウォームアップ、1本目の直後に2本目を実行#0 pass, 1000 records in 13 msc #1 pass, 1000 records in 2 msc #2 pass, 1000 records in 2 msc #0 pass, 1000 records in 14 msc #1 pass, 1000 records in 2 msc #2 pass, 1000 records in 2 msc テストファイルを添付します。時間はすべてマイクロ秒(ミリ秒ではありません、1ミリ秒=1000マイクロ秒)です。さて、結論です。唯一の違いは、チャートキャッシュの初期化速度で、MT4が0.6msであるのに対し、MT5は113msです ここでは問題ありません。リフティングには常にリソースが必要です。 特に、概念的に異なるアーキテクチャを使用する場合:MT5は、スケーリングのために、より複雑なキャッシュ(cache*.hcファイルがオリジナルの*.hccから構築される)+サーバーデータ(バイナリ*.hccチャンク)との完全同期制御を必須とします。繰り返しリクエストしても、1回のデータコピーで2〜3マイクロ秒と同じ速度が出ます。 どちらの端末の実装でも失敗はなく、すべてが高速に動作しています。 ファイル: TestCopyClose.mq4 2 kb TestCopyClose.mq5 3 kb Errors, bugs, questions kaus_bonus 2017.04.12 19:07 #18500 ご返信ありがとうございました。全体としては、私の投稿で示したような結果になっています。普通のやつでテストしてきました。それなのに、MT4とMT5の結果は200倍近く違う(原因は -サーバーデータとの完全な同期を制御しなければならない?).ここに書き込む前になんとなく端末の機能なんだろうなと慣れてしまったんです。生活もできるのですが、難しいところもあります。例えば、MTにはマーケットスクリーナーがないので、マーケットウォッチにシンボルを追加する小さなスクリプトを書きましたが、価格はCopyCloseを介してのみ利用可能で、シンボルがウォッチに追加されるまでSymbolInfoDoubleやMqlTickを介しては利用できないので、非常に大きなステークで実行すると このスクリプトは「無限に」長く動作します。これはあくまで一例です。 1...184318441845184618471848184918501851185218531854185518561857...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
スタイラスを 使用する際のバグ?
タブを使用して書いていたとします。
エラーはない。
で、スタイラスを使用すると、次のようになります。
すなわち、スタイラスはTWO_DIM(10000) の間のスペースを消去します。
結果
正しい方法とは?
1.以前はティッカーのクォートを全く受信せず、チャートも開かなかった場合など。(Ping、インターネット速度、ハードディスク、Bases/Broker/history/ticker/cache/ファイルの準備に依存します。)
2. 相場が以前に受信され、その後ターミナルが再ロードされた場合、このティッカーのチャートが開かれていないことを条件とします(Bases/Broker/History/Ticker/Cache/ファイルの準備)。
の時間はp.1より10-15倍短くなります。
の比較のため、ポイント2によるМТ4でのアクセス時間、すなわち端末リセット後
すなわち、MT4ターミナル再起動後の時間は数桁少なくなります。
今回はSSDを使わず、Windowsで全て確認しました
引用元:端末が再起動されず、データにアクセスしたところ
キャッシュをロードした後、端末がそれ以上の要求(2回目の要求から)に対して必要とする時間がかなり短くなるというのは正しい理解でしょうか?
ターミナル再起動後の初回呼び出しの時間を何とか短縮して、MT4と同じようにできないでしょうか?
コードは https://www.mql5.com/ru/forum/1111/page1870#comment_4856899 にありました。
環境と再生方法の記述が全く無いので、非常に汚いテスト方法になっていますね。
特になし。
これなくしては、結論に根拠がない。
例えばEURUSDのM1を見て ください。MT5には600万本以上のバーがありますが(チャートで無制限モードの場合)、MT4にはいくつあるのでしょうか?実際のデータベースには、数万本のM1バーがあるのですか?
環境と再生方法の記述が全くないので、非常に雑なテスト方法になっていますね。
特になし。
ウィンドウのバーの制限
それがなければ、結論に根拠がない。
私の投稿でほとんど質問されましたが、問題ありません、今すぐすべてのデータをお渡しします。
の答えがまず一つ。
MQ-demoサーバーでは、前回の記事のポイント2、ポイント3のように、データを読み込んでいます。ポイント1については、すべてが明確であり、質問はありません。
エムティーフォー
MT5
エムティーフォー
MT5
win XP 32bit、MTの全ビルド最新版。
MT4 - 1つのチャートを開き、別のシンボルで確認します。
MT5 - 1つのチャートを開き、別のシンボルで確認します。
ターミナルをリロードし、チャートにスクリプトを送信し、ターミナルをリロードする前に読み込まれた他のシンボルを選択することを繰り返してください。
エムティーフォー
MT5
ここでは、より詳細に、より精度を上げてテストしています。
テストファイルを添付します。時間はすべてマイクロ秒(ミリ秒ではありません、1ミリ秒=1000マイクロ秒)です。
さて、結論です。
ここでは問題ありません。リフティングには常にリソースが必要です。
特に、概念的に異なるアーキテクチャを使用する場合:MT5は、スケーリングのために、より複雑なキャッシュ(cache*.hcファイルがオリジナルの*.hccから構築される)+サーバーデータ(バイナリ*.hccチャンク)との完全同期制御を必須とします。
どちらの端末の実装でも失敗はなく、すべてが高速に動作しています。
ご返信ありがとうございました。
全体としては、私の投稿で示したような結果になっています。
普通のやつでテストしてきました。
それなのに、MT4とMT5の結果は200倍近く違う(原因は -サーバーデータとの完全な同期を制御しなければならない?).
ここに書き込む前になんとなく端末の機能なんだろうなと慣れてしまったんです。生活もできるのですが、難しいところもあります。例えば、MTにはマーケットスクリーナーがないので、マーケットウォッチにシンボルを追加する小さなスクリプトを書きましたが、価格はCopyCloseを介してのみ利用可能で、シンボルがウォッチに追加されるまでSymbolInfoDoubleやMqlTickを介しては利用できないので、非常に大きなステークで実行すると このスクリプトは「無限に」長く動作します。これはあくまで一例です。