エラー、バグ、質問 - ページ 1658 1...165116521653165416551656165716581659166016611662166316641665...3185 新しいコメント Sergei Vladimirov 2016.09.01 01:12 #16571 Alexey Volchanskiy:質問に関係なく、どんな関数を呼んでも、スタック上の変数(この場合はnType)にアクセスするよりも常に遅くなるのです。この自明性はともかく、質問はインライン関数に関するものでした。すなわち、OrderType()は、コンパイル時にorder.typeのようなものに置き換えられないのでしょうか。個人的には、このようなMQLの関数呼び出しは、2番目のケースのように常にキャッシュしています。測定結果が示すように、それは不要なものです。 fxsaber 2016.09.01 05:02 #16572 Sergei Vladimirov:この自明性はともかく、質問はインライン関数に関するものでした。つまり、コンパイル時にOrderType()がorder.typeのようなものに置き換わっていないでしょうか。計測の結果、これは不要であることがわかりました。配列の内部実装から 判断して、同じArraySizeをインラインで使用する必要があります。でも、いつもこんな感じで使っています(計ってません)。の代わりにfor (int i = 0; i < ArraySize(Array); i++)を使用しています。const int Amount = ArraySize(Array); for (int i = 0; i < Amount; i++) 性能面では、最近この事実に驚かされました。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム エニュメレーションを一貫して行うにはどうしたらいいですか? fxsaber さん 2016.08.22 09:13 配列にstaticを追加しました。スイッチの約3倍の速さ!?そんなスイッチをゴミ箱に。ご指摘ありがとうございます。 つまり、コンパイラの最適化に頼らず、最小限の関数呼び出しで常に「手助け」し、可能な限り論理的にconstとstaticを使い分けるのが良いようです。 Alexey Volchanskiy 2016.09.01 05:07 #16573 Sergei Vladimirov:この自明性はともかく、質問はインライン関数に関するものでした。つまり、コンパイル時にOrderType()がorder.typeのようなものに置き換わっていないでしょうか。測定の結果、不要であることがわかりました。自分で書いたんでしょ?Sergei Vladimirov2016.09.01 02:53# RU自分で確認した。2番目のコードは、4倍速く動作します。すべてクリア、質問はお預けです。 fxsaber 2016.09.01 05:25 #16574 Sergei Vladimirov: 自分でテストしてみた。2番目のコードは、4倍速く動作します。すべてが明らかになり、疑問が取り除かれる。プロファイリング/デバッグモードのみでの 測定はしないでください。そこにはインラインが全くない。Release-versionだけが存在するはずです。 Inv Андрей Иващенко 2016.09.01 07:34 #16575 Inv Андрей Иващенко:こんにちは。将校諸君、どこから虫を捕まえればいいのか、教えてくれないか?マルチカレンシー・エキスパート・アドバイザー。最初の取引の後、テスターは停止します。エラーが表示され、コードが見つかりません。はい、テスターは開始日2016.05.01から正常に動作しています。助けてください自分への返信これはテスターのバグです。とりあえず、Expert Advisorが動作するすべてのシンボルに、OnInitで任意のテクニカルインジケータの ハンドルを追加する必要があります。 Sergei Vladimirov 2016.09.01 09:20 #16576 Alexey Volchanskiy:自分で書いたんでしょ?Sergei Vladimirov2016.09.01 02:53# RU自分で確認した。2番目のコードは、4倍速く動作します。すべてクリア、質問はお預けです。 次のコメントで、1回の操作で得られるゲインを1ナノ秒と数字で書きました。2年かけて数千回走らせ、刻みで戦略を最適化する場合、1nsを節約することは理にかなっているかもしれません。しかし、実際の取引では...。 A100 2016.09.01 10:52 #16577 A100:ビルド1398では、「EX5の読み込みに失敗しました」というエラーはまだ残っています(その例とは関係ないようです)。修正ビルドでは、同様のケースでの1400エラーは、「純粋な仮想関数 呼び出し」として再現されるようになりました。そして、コメントなしでも問題なし//Script1.mq5 typedef void (*fn)(); #import "Script2.ex5" void g( fn ); #import void h() /*export*/ {} //если export без комментария - нормально void OnStart() { g( h ); }//Script2.mq5 #property library typedef void (*fn)(); void g( fn f ) export { f(); } A100 2016.09.01 12:07 #16578 適用できない :: あいまいさを解消するため #import "Script1.ex5" void g(); #import "Script2.ex5" void g(); #import typedef void (*fn)(); void OnStart() { Script1::g(); //нормально Script2::g(); //нормально fn f = Script1::g; //Error } transcendreamer 2016.09.01 18:08 #16579 Inv Андрей Иващенко:自分自身への答え。これはテスターのバグです。とりあえず、Expert Advisorが動作するすべてのシンボルに、OnInitで任意のテクニカルインジケータの ハンドルを追加する必要があります。そして、新しいバーの最初のティックだけを取得するときに問題が発生するようです、テスターは "立ち往生 "と1バー遅れているようです、つまり、EAはバーが存在しないと思い、視覚化では本当にそうではありませんが、数秒後にバーが現れます、M1のテストの場合には、正しい値は、2番目のティックで来る(私が正しく理解していれば)、私は開発者ができるだけ早くこの迷惑な瞬間を修正してくれることを願っています...を追加しました。この点を回避するために、新しいバーの最初のティックを人為的にスキップしなければならないことがわかりました...。 fxsaber 2016.09.01 18:18 #16580 RTS-9.16 BCS-MetaTrader5で、CTRL+F5でEAのデバッグが できない。テスターは次のように書いています。Tester Leverage 1:1 set error 1...165116521653165416551656165716581659166016611662166316641665...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
質問に関係なく、どんな関数を呼んでも、スタック上の変数(この場合はnType)にアクセスするよりも常に遅くなるのです。
この自明性はともかく、質問はインライン関数に関するものでした。すなわち、OrderType()は、コンパイル時にorder.typeのようなものに置き換えられないのでしょうか。
個人的には、このようなMQLの関数呼び出しは、2番目のケースのように常にキャッシュしています。
測定結果が示すように、それは不要なものです。
この自明性はともかく、質問はインライン関数に関するものでした。つまり、コンパイル時にOrderType()がorder.typeのようなものに置き換わっていないでしょうか。
計測の結果、これは不要であることがわかりました。
配列の内部実装から 判断して、同じArraySizeをインラインで使用する必要があります。でも、いつもこんな感じで使っています(計ってません)。
の代わりに
を使用しています。
性能面では、最近この事実に驚かされました。トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
エニュメレーションを一貫して行うにはどうしたらいいですか?
fxsaber さん 2016.08.22 09:13
この自明性はともかく、質問はインライン関数に関するものでした。つまり、コンパイル時にOrderType()がorder.typeのようなものに置き換わっていないでしょうか。
測定の結果、不要であることがわかりました。
自分で書いたんでしょ?
自分で確認した。2番目のコードは、4倍速く動作します。すべてクリア、質問はお預けです。
自分でテストしてみた。2番目のコードは、4倍速く動作します。すべてが明らかになり、疑問が取り除かれる。
こんにちは。
将校諸君、どこから虫を捕まえればいいのか、教えてくれないか?
マルチカレンシー・エキスパート・アドバイザー。最初の取引の後、テスターは停止します。
エラーが表示され、コードが見つかりません。
はい、テスターは開始日2016.05.01から正常に動作しています。
助けてください
自分への返信
これはテスターのバグです。とりあえず、Expert Advisorが動作するすべてのシンボルに、OnInitで任意のテクニカルインジケータの ハンドルを追加する必要があります。
自分で書いたんでしょ?
自分で確認した。2番目のコードは、4倍速く動作します。すべてクリア、質問はお預けです。
ビルド1398では、「EX5の読み込みに失敗しました」というエラーはまだ残っています(その例とは関係ないようです)。
修正ビルドでは、同様のケースでの1400エラーは、「純粋な仮想関数 呼び出し」として再現されるようになりました。そして、コメントなしでも問題なし
適用できない :: あいまいさを解消するため
自分自身への答え。
これはテスターのバグです。とりあえず、Expert Advisorが動作するすべてのシンボルに、OnInitで任意のテクニカルインジケータの ハンドルを追加する必要があります。
そして、新しいバーの最初のティックだけを取得するときに問題が発生するようです、テスターは "立ち往生 "と1バー遅れているようです、つまり、EAはバーが存在しないと思い、視覚化では本当にそうではありませんが、数秒後にバーが現れます、M1のテストの場合には、正しい値は、2番目のティックで来る(私が正しく理解していれば)、私は開発者ができるだけ早くこの迷惑な瞬間を修正してくれることを願っています...
を追加しました。
この点を回避するために、新しいバーの最初のティックを人為的にスキップしなければならないことがわかりました...。