エラー、バグ、質問 - ページ 2753 1...274627472748274927502751275227532754275527562757275827592760...3185 新しいコメント Igor Makanu 2020.05.22 15:50 #27521 Alexey Navoykov: C#ではコンパイル段階で計算される定数式にのみconst 指定子が使われますが、C++にはそのアナログであるconstexprがあり、MQLには それがないのです。 は 一般的には、言語の構文構造の問題である。 自然言語における定数とは...まあ、恒例といえば恒例なんですけどね)) C++では,コンパイラが変数のスコープ(またはライフタイム)内に定数があるかどうかを機械的にチェックします C#では、定数は自然言語のルールに近い構文的な意味を持つ そして、この議論はそのためのものです。 const MqlTick _Tick; // Текущий _Symbol-тик. 少なくともMQL4にはBidとAskがあり、それが正当であるかどうか誰も疑問視していませんでした。 プロファイラーによると、SymbolInfoDouble()とSymbolInfoTick()への永久アクセスは、最適化速度を低下させることが分かっています。 Mihail Matkovskij 2020.05.22 16:02 #27522 Mihail Matkovskij: コンパイラを変更するにはどうしたらよいですか? 900ビルドからMetaEditorにコンパイラが内蔵されていることがわかりました。https://www.mql5.com/ru/forum/21374。 では、なぜVSがインストールされているディレクトリにつながる行があるウィンドウが表示されるのでしょうか? Обратите внимание, что компилятор переехал внутрь MetaEditor, начиная с 900 билда 2014.03.01www.mql5.com Консольный компилятор MQL4/MQL5 остался, обновляется вместе с платформами МетаТрейдер 4/5 и всегда доступен по ссылкам:. Alexey Navoykov 2020.05.22 16:15 #27523 Igor Makanu: デマゴギーは抜きにして、現在の価格に できるだけ早くアクセスできるようにする必要があります。プロファイラーは、SymbolInfoDouble()とSymbolInfoTick()への一定の呼び出しが最適化速度を低下させていることを示しています。 さて、ここで先ほどから提案されている、現在のシンボル名の代わりにNULLを渡す機能を追加します。一般的には、シンボルのテキスト値ではなく、ハンドルでアクセスする必要があります。 しかし、開発者はそのような複雑なことはしないと思います。 問題が突飛なようです。 上記の測定では、テスターのアイドルラン(負荷なし)のわずか6%のコストでした。 また、実用的なコードでは一桁少なくなります。 このような些細なことに注意を払う価値はありませんし、ハンドラ内でこれらの関数を複数回呼ぶこと自体、誤った判断となります。 A100 2020.05.22 16:18 #27524 Alexey Navoykov: さて、ここで以前、現在のシンボル名の代わりにNULLを渡す 可能性を追加することが提案されました。しかし、一般的には、文字のテキスト値ではなく、ハンドルでアクセスする必要があります。 しかし、開発者がそのような複雑なことをする可能性は低いと思います。 また、その価値はないように思います。 この問題は、かなり突飛なものです。 すでに動作しているが、加速がない(確認した) - どうやらすべてがすでに最大限に加速されているか、またはその逆である - 加速のためにまだ長い道のりである(開発者に下線を引くように依頼してください)。 fxsaber 2020.05.22 16:33 #27525 A100: したがって、厳密性を期すために、_Digitsの代わりにDigits()を使用する必要があります。そうすると、形式的に、論理矛盾は生じない。Digits()はconst修飾子によって束縛されない。 私の理解では、_DigitsはMT4との互換性のために必要であり、それ以上のものではありません。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム バグ、バグ、質問 イリヤス さん 2020.05.20 15:39 Symbol() の呼び出しは、Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() と同様に、常にグローバル変数 _Symbol にアクセスする。 Mihail Matkovskij 2020.05.22 16:52 #27526 Mihail Matkovskij: デバッグ中やインジケータが動作しているときに、ログに突然Stack overflowと書き込まれます。デバッグそのものは、「Critical error occurred, debugging stopped」というメッセージがポップアップ表示されます。以下は私の類似スレッドです。https://www.mql5.com/ru/forum/338301。 しかし、コンパイル中はコンパイラが叱ることもなく、すべてうまくいっています。デバッグの際、どの時点でプログラムがクラッシュしたかを判断することは不可能です。 コンパイラのせいかな?使っているコンパイラにはあまり興味がないのですが、私の設定だとこんな感じです。 VSをインストールしているので、設定にこのリンクがあります。ということは、コンパイラも適当なのか......?でも、VSがないときにどんなコンパイラがあったかというと、正直なところ手を出していないんです。もしかしたら、そのコンパイラーに戻って、そのコンパイラーでプロジェクトをコンパイルしてみるべきかもしれませんね。 どうにかならないかと考えているうちに、別の端末のアップデートが来て、デバッグが正常にできるようになりました。なんとかエラーを見つけることができました。一部のメソッドがループし、自分自身を呼び出していた。そのため、"Stack overflow "というメッセージを出してプログラムがクラッシュしてしまったのです。しかし、動作するデバッガーの助けを借りて、問題のある行をすべて見つけ出し、それを修正することができました。デバッグをしながら、迅速にバグフィックスしてくれた開発者に感謝します。 削除済み 2020.05.22 17:02 #27527 в естественном языке (в математике) константа это... ну как бы константа! )) C++では、定数とは、変数のスコープ(またはライフタイム)における不変性をコンパイラが機械的にチェックするものである。 C++でもMQLでも、定数は作成時に一度定義すれば二度と変更することはありません。スコープは関係ない。 数学と大差ない。 削除済み 2020.05.22 17:03 #27528 Mihail Matkovskij: 900ビルドからMetaEditorにコンパイラが内蔵されていることがわかりました。https://www.mql5.com/ru/forum/21374。 では、なぜこのウィンドウには、VSがインストールされているディレクトリにつながる行があるのでしょうか? DLLを記述する場合は、VSコンパイラを使用します。 A100 2020.05.22 17:27 #27529 fxsaber: このことから、_Digits,_Point , _Period, _LastErrorなどを直接 使う意味がないことが改めて確認できます(_SymbolもNULLで置き換えることができますし)。実際には、const volatileとして宣言する必要があります。 そして、あなたは逆に、追加することを提案しています。 fxsaber 2020.05.22 17:52 #27530 A100: このことから、_Digits,_Point , _Period, _LastErrorなどを直接使用 する意味がないことが改めて確認されました。また、_SymbolでもNULLに置き換えることができる。 そして、あなたは逆にこのシリーズの補足を申し出ているのです。 ポイントは、参照渡しが可能な点にある。 1...274627472748274927502751275227532754275527562757275827592760...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
C#ではコンパイル段階で計算される定数式にのみconst 指定子が使われますが、C++にはそのアナログであるconstexprがあり、MQLには それがないのです。
は
一般的には、言語の構文構造の問題である。
自然言語における定数とは...まあ、恒例といえば恒例なんですけどね))
C++では,コンパイラが変数のスコープ(またはライフタイム)内に定数があるかどうかを機械的にチェックします
C#では、定数は自然言語のルールに近い構文的な意味を持つ
そして、この議論はそのためのものです。
少なくともMQL4にはBidとAskがあり、それが正当であるかどうか誰も疑問視していませんでした。
プロファイラーによると、SymbolInfoDouble()とSymbolInfoTick()への永久アクセスは、最適化速度を低下させることが分かっています。
コンパイラを変更するにはどうしたらよいですか?
900ビルドからMetaEditorにコンパイラが内蔵されていることがわかりました。https://www.mql5.com/ru/forum/21374。
では、なぜVSがインストールされているディレクトリにつながる行があるウィンドウが表示されるのでしょうか?
デマゴギーは抜きにして、現在の価格に できるだけ早くアクセスできるようにする必要があります。プロファイラーは、SymbolInfoDouble()とSymbolInfoTick()への一定の呼び出しが最適化速度を低下させていることを示しています。
さて、ここで先ほどから提案されている、現在のシンボル名の代わりにNULLを渡す機能を追加します。一般的には、シンボルのテキスト値ではなく、ハンドルでアクセスする必要があります。 しかし、開発者はそのような複雑なことはしないと思います。 問題が突飛なようです。
上記の測定では、テスターのアイドルラン(負荷なし)のわずか6%のコストでした。 また、実用的なコードでは一桁少なくなります。 このような些細なことに注意を払う価値はありませんし、ハンドラ内でこれらの関数を複数回呼ぶこと自体、誤った判断となります。
さて、ここで以前、現在のシンボル名の代わりにNULLを渡す 可能性を追加することが提案されました。しかし、一般的には、文字のテキスト値ではなく、ハンドルでアクセスする必要があります。 しかし、開発者がそのような複雑なことをする可能性は低いと思います。 また、その価値はないように思います。 この問題は、かなり突飛なものです。
すでに動作しているが、加速がない(確認した) - どうやらすべてがすでに最大限に加速されているか、またはその逆である - 加速のためにまだ長い道のりである(開発者に下線を引くように依頼してください)。
したがって、厳密性を期すために、_Digitsの代わりにDigits()を使用する必要があります。そうすると、形式的に、論理矛盾は生じない。Digits()はconst修飾子によって束縛されない。
私の理解では、_DigitsはMT4との互換性のために必要であり、それ以上のものではありません。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
バグ、バグ、質問
イリヤス さん 2020.05.20 15:39
Symbol() の呼び出しは、Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() と同様に、常にグローバル変数 _Symbol にアクセスする。
デバッグ中やインジケータが動作しているときに、ログに突然Stack overflowと書き込まれます。デバッグそのものは、「Critical error occurred, debugging stopped」というメッセージがポップアップ表示されます。以下は私の類似スレッドです。https://www.mql5.com/ru/forum/338301。 しかし、コンパイル中はコンパイラが叱ることもなく、すべてうまくいっています。デバッグの際、どの時点でプログラムがクラッシュしたかを判断することは不可能です。
コンパイラのせいかな?使っているコンパイラにはあまり興味がないのですが、私の設定だとこんな感じです。
VSをインストールしているので、設定にこのリンクがあります。ということは、コンパイラも適当なのか......?でも、VSがないときにどんなコンパイラがあったかというと、正直なところ手を出していないんです。もしかしたら、そのコンパイラーに戻って、そのコンパイラーでプロジェクトをコンパイルしてみるべきかもしれませんね。
どうにかならないかと考えているうちに、別の端末のアップデートが来て、デバッグが正常にできるようになりました。なんとかエラーを見つけることができました。一部のメソッドがループし、自分自身を呼び出していた。そのため、"Stack overflow "というメッセージを出してプログラムがクラッシュしてしまったのです。しかし、動作するデバッガーの助けを借りて、問題のある行をすべて見つけ出し、それを修正することができました。デバッグをしながら、迅速にバグフィックスしてくれた開発者に感謝します。
в естественном языке (в математике) константа это... ну как бы константа! ))
C++では、定数とは、変数のスコープ(またはライフタイム)における不変性をコンパイラが機械的にチェックするものである。
C++でもMQLでも、定数は作成時に一度定義すれば二度と変更することはありません。スコープは関係ない。
数学と大差ない。
900ビルドからMetaEditorにコンパイラが内蔵されていることがわかりました。https://www.mql5.com/ru/forum/21374。
では、なぜこのウィンドウには、VSがインストールされているディレクトリにつながる行があるのでしょうか?
DLLを記述する場合は、VSコンパイラを使用します。
このことから、_Digits,_Point , _Period, _LastErrorなどを直接 使う意味がないことが改めて確認できます(_SymbolもNULLで置き換えることができますし)。実際には、const volatileとして宣言する必要があります。
そして、あなたは逆に、追加することを提案しています。
このことから、_Digits,_Point , _Period, _LastErrorなどを直接使用 する意味がないことが改めて確認されました。また、_SymbolでもNULLに置き換えることができる。
そして、あなたは逆にこのシリーズの補足を申し出ているのです。
ポイントは、参照渡しが可能な点にある。