エラー、バグ、質問 - ページ 895

 
Konstantin83: マジックを使ったオーダーが開始される。そして、このマジックをトレードやポジションに反映させるのです。そして、ポジションが 利益またはストップで閉じられると、マジックナンバーは決済注文に転送されません。

マジックトレードを経て、ポジションの利益を知るにはどうすればよいのでしょうか?クロージングトレードは、マジックを持たないので、そこには行かない。

position_identifier

ポジションIDは、新しくオープンしたポジションに与えられるユニークな番号で、その生涯を通じて変わることはありません。ポジションのロールオーバーでは、position_identifier は変更されない。

deal_position_id

この案件が関与したポジション、オープニング、変更、クロージングの識別子。各ポジションには一意の識別子があり、その識別子はポジションの有効期間中にその商品で行われたすべての取引に割り当てられます。

 
異常終了とは、Expert Advisorがループし、IsStoppedを確認 せず、端末によって強制的に停止されることです。
 
Renat:
異常終了とは、Expert Advisorがループしており、IsStoppedを確認せず、端末によって強制的に停止させられている状態です。

異常終了はMQLのコードだけでなく、ランタイム自体の内部的な不具合によるものであることも注意できますね。つまり、MQLから制御不能な異常終了とします。

たとえば、MQL コードが ObjectDelete というコマンドを送信したとき、すでに存在するチャートからオブジェクトを削除します(オブジェクトもチャートもありません)。しかし、コマンドが送られた瞬間にそこにあったのです。
そして、ハングアップはMQLコードではなく、実行の深部で発生しているため、MQLコードはコマンドからの応答を待つことはありません。つまり、ObjectDelete 自体で、異常終了してしまうのです。
2つ目のよくあるケースは、ObjectsDeleteAll関数の 操作です。同期的であるため、すでに削除されたオブジェクトの削除にもハングしますが、これは呼び出された後にのみ行われます。
3つ目のケースは、EAがチャートから削除され、チャートが閉じられているため、ランタイムがDeinitからのExpert Advisorコマンドを完了できない場合であり、最も有害なケースです。環境フリーズや制御不能な異常終了も出てきます。

上記で説明したことは、すべてOnDeinit関数でのエクスパンダの動作の終了に特化したものです。 コードの奥底のどこかに、終了動作と、第一にチャートの存在、第二にエキスパート終了時の環境の動作との間に矛盾があるのです。
誰かが先に何かをしてしまい、異常終了してしまう。

もちろん、追加で空き状況を確認することで解決できたケースもあります。しかし、めったにないことですが、説明した同期の問題のうちの1つが発生します。クローズしようとしているチャート上のインジケーターの削除/インストール、オブジェクトの削除。

 

Absolute Drawdown MORE than Initial Balance(絶対引き出し額が初期残高を上回る)とはどういうことか、教えてほしい。

定義上はそうですが。

 Absolute Drawdown
Просадка от начального баланса показывает, насколько уменьшался баланс относительно первоначального значения. Максимально может быть равно начальному балансу, если потеряны все деньги.

トピックの詳細https://www.mql5.com/ru/forum/8996

 
Renat:
異常終了とは、EAがループしてIsStoppedを確認せず、端末によって強制的に停止させられることです。

間違っている。

セルゲイ

異常終了はMQLのコードだけでなく、ランタイム自体の内部的な不具合も原因であることを指摘しておきます。

そう、そして、そんな驚きがたくさんあるのです。

メモリ 不足でターミナルがハングアップしたり、Expert Advisorを削除できなくなったりしたことがあります。この場合、ロギングでも必ず記録されるとは限りません。

 
komposter:

間違っている。

そうですね、そういうサプライズもたくさんあります。

メモリが足りないと端末がハングアップしたり、EAを削除できなくなる現象が発生しました。この場合、ロギングさえもうまくいかないことがあります。

私が理解したところでは、このスレッドhttps://www.mql5.com/ru/forum/8278 は、まさにこの問題を扱っています。
Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс.
 
Yedelkin:

position_identifier

ポジション識別子は、新しく開設された各ポジションに割り当てられる一意の番号で、その生涯を通じて変更されることはありません。位置の反転は、position_identifier を変更しない。

deal_position_id

この案件が関与したポジション、オープニング、変更、クロージングの識別子。各ポジションには一意の識別子があり、その識別子はポジションの有効期間中にその商品で行われたすべての取引に割り当てられます。

ありがとうございます、助かりました)
 
iTC:
私が理解したところでは、このhttps://www.mql5.com/ru/forum/8278 の トピックは、まさにこの問題に関連しています。

いや、指標のことだった。

メモリ制限を超えたExpert Advisorは、端末が無音でハングアップします。例えば、異なるシンボル/期間のインジケータ付きチャートを多数読み込むと発生します。

 
sergeev:

異常終了はMQLのコードだけでなく、ランタイム自体の内部的な不具合によるものであることも注意できますね。そこで、MQLからAbnormal terminatioが制御不能になったとします。

たとえば、MQLコードが、すでに存在するチャート(オブジェクトでもチャートでもない)からObjectDeleteオブジェクトを削除するコマンドを送信する場合。しかし、コマンドを送った時点では存在していたのです。
そして、ハングアップはMQLコードではなく、実行の深部で発生しているため、MQLコードはコマンドからの応答を待つことはありません。つまり、ObjectDelete 自体で、異常終了してしまうのです。
2つ目のよくあるケースは、ObjectsDeleteAll関数の 操作です。同期的であるため、すでに削除されたオブジェクトの削除にもハングしますが、これは呼び出された後にのみ行われます。
3つ目のケースは、EAがチャートから削除され、チャートが閉じられているため、ランタイムがDeinitからのExpert Advisorコマンドを完了できない場合であり、最も有害なケースです。環境フリーズや制御不能な異常終了も出てきます。

上記で説明したことは、すべてOnDeinit関数でのエクスパンダの動作の終了に特化したものです。 コードの奥底のどこかに、終了動作と、第一にチャートの存在、第二にエキスパート終了時の環境の動作との間に矛盾があるのです。
誰かが先に何かをしてしまい、異常終了してしまう。

もちろん、追加で空き状況を確認することで解決できたケースもあります。しかし、めったにないことですが、説明した同期の問題のうちの1つが発生します。クローズしようとしているチャート上のインジケーターの削除/インストール、オブジェクトの削除。

ありがとうございます、確認させていただきます。
 
komposter:

いや、指標のことだった。

Expert Advisorがメモリ制限を超えた場合、端末が無音でハングアップします。これは、例えば、インジケータを持つ異なるシンボル/期間のチャートを多数読み込んだ場合に発生します。

ありがとうございます、ぜひ確認させていただきます。