Version:5.00 build 2007 25 Feb 2019 を使用しています。
(以下は、build 2005からの現象と思われます。)
OnDeinitイベント中に、ループ処理を行いObjectDeleteメソッドを実行。
ループ中に2.5秒を超えた場合に、OnDeintイベントは途中で終了しますが、
ターミナルのタスクが残る現象が発生します。
そのため、次回ターミナルを起動しようとしても、正常に起動できません。
確認する指標を作成しました。ソースコードを添付いたします。
During the OnDeinit event, execute the loop processing and execute the ObjectDelete method.
When the loop exceeds 2.5 seconds, the OnDeint event ends in the middle,
Terminal tasks will be left behind.
Therefore, even if you try to start the next terminal, it can not start up.
Also, in the same situation as above, even if you open another chart with the template, the terminal task remains.
I created an indicator to confirm.
As we attach the source code, thank you for your consideration.
ファイル:
Confirmation_method.zip
176 kb
そもそも、なぜ越えようとするのか
goldilocksbears:
そもそも、なぜ越えようとするのか
そもそも、なぜ越えようとするのか
問題発生の条件について、「そもそも」というご質問は不毛ですので、
ご容赦いただきたいと存じます。
新しいバージョンの不具合に関しましては、ロシア語のフォーラムで活発な
ディスカッションがおこなわれているようで、
この件に関しましては、すでに対処されている旨のコメントをいただきました。
https://www.mql5.com/ru/forum/304239/page23
バージョンアップを待ちたいと思います。
ありがとうございました。
Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов и API для языка R
- 2019.03.07
- www.mql5.com
21 февраля 2019 года будет выпущена обновленная версия платформы MetaTrader 5...
その後、サービスを適当に試してみたところ、サービスでも上記の現象が発生した
また、サービスを停止することができないという現象も発生した
まだバグが多いって感じだけど
サービス機能は、個人的には便利なので、今後に期待したい
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
2019年2月21日には更新されたMetaTrader 5 プラットフォームがリリースされます。この新バージョンは次の変更を含みます。
- ターミナル: 内蔵の経済指標カレンダーを完全に更新しました。

- ターミナル: MQL5アプリケーションの新タイプとして「サービス」が追加されました。この新しいタイプによってターミナルのためのカスタム価格フィードの作成が可能になります。つまり、ブローカーの取引サーバ上で実施されるのと同様に、外部システムからの価格をリアルタイムで実装できるようになります。

- ターミナル: 学習プログラムが実装されました。

- ターミナル: 取引口座履歴をポジションとして表示できます。プラットフォームは、ポジションに関連する取引(始値、数量の増加、部分的または全額の決算)に関するデータを収集し、その情報を単一のレコードにグループ化します。したがって、ポジションの詳細(開閉時刻、ボリューム、価格、結果)にアクセスすることができます。この効率的なプレゼンテーション形式は、ファイルにエクスポートされた履歴レポートで利用可能になりました

- ターミナル: ポジションを反対のポジションによって決済するためのClose Byダイアログを最適化しました。多数のポジションがあってもダイアログは遅くならなくなりました。
- ターミナル: 合成銘柄の計算エラーとそれによって生じるデータの省略を修正しました。
- ターミナル: カスタム銘柄が削除されると、ティックとバー履歴を格納するファイルも削除されるようになりました。これにより、ハードディスクに未使用のデータが蓄積されるのを防ぎます。
- Terminal: High DPI画面での検索結果の表示を修正しました。
- MQL5: MQL5プログラムからの経済指標カレンダーへのアクセスを実装しました。
- MQL5: ティックとバーの履歴に関する修正と操作速度の向上。
- MQL5: カスタム取引銘柄のティックおよびバー履歴修正関数であるCustomTicks*および CustomRates *の修正と大幅な操作速度の向上。
- MQL5: 新しいデータ変換関数。
- ushort、uint、ulong値のバイト位置を変更するMathSwap関数を追加しました。
- MQL5: システムソケットを介してリモートホストへのTCP接続を作成するネットワーク関数を追加しました。
- SocketCreate指定されたフラグを持つソケットを作成してハンドルを返します
- SocketCloseはソケットを閉じます
- SocketConnectはサーバーに接続し、タイムアウト管理を備えます
- SocketIsConnectedはソケットが現在接続されているかどうかを確認します
- SocketIsReadableソケットから読み込むことができるバイト数を取得します
- SocketIsWritableこのソケットへのデータの書き込みが現在可能かどうかを確認します
- SocketTimeoutsシステムソケットオブジェクトのデータ送受信タイムアウトを設定します。
- SocketReadはソケットからデータを読み込みます
- SocketSendはソケットにデータを書き込みます
- SocketTlsHandshakeTLS Handshakeプロトコルを使用して、指定されたホストとの安全なTLS(SSL)接続を開始します
- SocketTlsCertificate安全なネットワーク接続に使用される証明書に関する情報を受信します
- SocketTlsRead安全なTLS接続からデータを読み込みます
- SocketTlsReadAvailable安全なTLS接続から利用可能なすべてのデータを読み取ります
- SocketTlsSend安全なTLS接続を使用してデータを送信します
ネットワーク機能を使用した接続が確立されているホストのアドレスは、ターミナル設定の[list of allowed addresses](許可済みのアドレスリスト)に明示的に追加する必要があります。
- ERR_NETSOCKET_INVALIDHANDLE (5270): 無効なソケットハンドルが関数に渡されました
- ERR_NETSOCKET_TOO_MANY_OPENED (5271): 開いているソケットが多すぎます(最大128)
- ERR_NETSOCKET_CANNOT_CONNECT (5272): リモートホストへの接続中にエラーが発生しました
- ERR_NETSOCKET_IO_ERROR (5273): ソケットとのデータ送受信中にエラーが発生しました
- ERR_NETSOCKET_HANDSHAKE_FAILED (5274): セキュア接続確立エラー(TLS Handshake)
- ERR_NETSOCKET_NO_CERTIFICATE (5275) — 安全な接続に使用される証明書に関するデータがない
- MQL5: 新しい文字列操作関数を追加しました。
- MQL5: 新しい配列操作関数を追加しました。
- MQL5: CustomRatesUpdate、CustomRatesReplace、CustomTicksAdd、CustomTicksReplace関数に新しい"uint count"パラメータが追加されましたs。これによって、これらの関数に使用されるために渡される配列の要素数を指定できます。デフォルト値はWHOLE_ARRAYです。この場合配列全体が使用されます。
- MQL5: カスタム銘柄のいた情報ステータスを渡すCustomBookAdd関数を追加しました。この関数を使用すると、あたかも価格がブローカーのサーバーから到着したかのようにいた情報をブロードキャストできます。
- MQL5: CustomSymbolCreate関数のオーバーロードを追加しました。これにより、既存の取引シンボルに基づいてカスタム取引シンボルを作成することができます。作成後、任意の銘柄プロパティは対応する関数を使用して編集できます。
- 日付/時刻付きの文字列を日時値に変換するStringToTime関数が更新されました。以下のデータ形式がサポートされます。
- yyyy.mm.dd [hh:mi]
- yyyy.mm.dd [hh:mi:ss]
- yyyymmdd [hh:mi:ss]
- yyyymmdd [hhmiss]
- yyyy/mm/dd [hh:mi:ss]
- yyyy-mm-dd [hh:mi:ss]
- MQL5: ENUM_TERMINAL_INFO_INTEGER列挙型にターミナルがMetaTrader仮想ホストサーバー(MetaTrader VPS)上で実行されていることを示す新しいTERMINAL_VPSプロパティが追加されました。アプリケーションがホストサーバー上で実行されている場合、仮想サーバーにはグラフィカルユーザーインターフェイスがないため、すべての視覚機能を無効にします。
- MQL5: ENUM_SYMBOL_INFO_INTEGER列挙型に、対応する名前の銘柄が存在することを意味する新しいSYMBOL_EXISTプロパティが追加されました。
- MQL5: テンプレート関数の事前宣言を使用しているときのタイピングを修正しました。
- MQL5: 取引口座を偏国するときの指標の最初期化を追加しました。
- MQL5: StringSplit関数を最適化しました。
- MQL5: 標準ライブラリ操作のエラーを修正しました。
- テスター: テストエージェントのエキスパートアドバイザーで早期シャットダウンをルーチン化するTesterStop関数を追加しました。指定された数の負け取引数や事前設定されたドローダウンレベルなどのの基準に達したときに、テストを強制的に停止できるようになりました。
- テスター: 「真のティック」モードでMQL5クラウドネットワークを介してエキスパートアドバイザーをテストおよび最適化する機能を無効にしました。このモードは、ローカルエージェントとローカルネットワークファームでのみ使用できます。
- テスター: ビジュアルテスト中の指標の処理を改善しました。視覚化速度が最大であっても、価格チャートと指標のラインが同期して描画されるようになりました。
- テスター: 最適化されたテストと最適化が大幅に加速されました。
- テスター: 履歴データ上の指標のデバッグを修正しました。OnInitとOnDeinitの指標関数は正しくデバッグされるようになりました。
- テスター: 複数通貨のエキスパートアドバイザーをテストする際の履歴データへのアクセスの高速化。
- テスター: 履歴データのデバッグ中にビジュアルテスターが時々フリーズするのを修正しました。
- テスター: エージェントによってタスクパッケージを処理するときに、最適化がより早く開始します。
- テスター: タスクパッケージをテストエージェントに配布するポリシーを変更しました。パッケージサイズが大きくなり、ネットワーク運用におけるリソース消費が大幅に削減されました。
- テスター: ローカルエージェント、ネットワークエージェント、クラウドエージェントの使用を可能にするオプションの動作を変更しました。オプションをオフにすると、エージェントは受信したタスクの処理を完了するが新しいタスクは割り当てられないようになりました。以前のバージョンでは、この動作は "Disable"コマンドと似ていて、エージェントの動作はすぐに停止されていました。

- MetaEditor: デバッガでの非ANSI文字のサポートを追加しました。変数名がキリル文字で指定されていても、式は正しく表示されるようになりました。
- MetaEdito: High DPI画面での検索結果の表示を修正しました。
- ユーザインターフェイスがクロアチア語でも利用できるようになりました。
- ドキュメントが更新されました。
更新はLive Updateシステムを介して利用できるようになります。経済指標カレンダーは当社独自の祖ルーションです。ここには、米国、欧州連合、日本、英国、カナダ、オーストラリア、中国などの13の世界経済リーダーに関する金融ニュースと指標があります。データは、公開情報からリアルタイムに収集されます。
新バージョンでは、時間、優先度、通貨、国ごとに、最新のコンテンツと高度なイベントフィルタが追加されています。
カレンダーデータはMQL5プログラムからアクセスできるようになりました。詳細は以下でご覧ください。
エキスパートアドバイザー、指標、スクリプトとは異なり、サービスは特定のチャートにリンクされていません。このようなアプリケーションはバックグラウンドで実行され、ターミナルの起動時に自動的に起動されます(アプリケーションが強制的に停止された場合を除く)。
サービスは、ナビゲータウィンドウ内の新しいセクションから管理できます。
サービスを作成する方法
サービステンプレートを作成するには、対応するMQL5ウィザードオプションを使用します。スクリプト同様、サービスにはOnstartエントリポイントが1つあります。この時点で、ネットワーク機能を使用して、無限のデータ受信および処理サイクルを実装できます。
サービスをリリースする方法
異なるパラメータで複数のエキスパートアドバイザーまたは指標のコピーを実行するには、それらを異なるチャートで起動する必要があります。この場合、異なるプログラムインスタンスが作成され、独立して動作します。サービスはチャートにリンクされていないため、サービスインスタンスを作成するための特別なメカニズムが実装されています。
ナビゲータからサービスを選択して、そのコンテキストメニューの[サービスの追加]をクリックします。これにより標準のMQL5プログラムダイアログが開き、取引やシグナルへのアクセスを有効/無効にしたり、パラメータを設定したりできます。

サービスインスタンスは適切なインスタンスメニューを使用して起動および停止できます。すべてのインスタンスを管理するには、サービスメニューを使用します。新しい機能によって、初心者はプラットフォームを操作する方法を簡単に学ぶことができるようになりました。プラットフォームの主な機能に関する100以上のインタラクティブなヒントを追加しました。
- ヒントはツールバー上の進行状況バーとしてシームレスに表示されるため、ユーザーの注意をそらすことはありません。
- ヒントは、プラットフォームでこれまでに実行したことがない操作に対してのみ表示されます。
- すべてのヒントにはインタラクティブリンクが含まれており、これによって関連するインターフェース要素に移動できます。例えば、取引ダイアログまたは所望のプログラムを含むメニューを先端から直接開くことができます。
プログレスバーの塗りつぶされた領域は、適切な行動をとってトレーニングを続けるたびに大きくなります。新機能
CalendarCountryById — 国の説明をIDによって取得します。
CalendarEventById — イベントの説明をIDによって取得します。
CalendarValueById — イベント値の説明をIDによって取得します。
CalendarEventByCountry — 国の利用できるイベントの配列を取得します。
CalendarEventByCurrency — 影響された通貨の利用できるイベントの配列を取得します。
CalendarValueHistoryByEvent — イベントIDによって指定された期間の値の配列を取得します。
CalendarValueHistory — 国および/または通貨によって絞り込まれた、指定された期間の値の配列を取得します。
CalendarValueLastByEvent — 最後のイベントの値をIDによって取得します。この関数は前回のリクエスト以降に現れた値のリクエストを可能にします。この操作には、入出力パラメータ「change_id」が追加で使用されます。
カレンダデータベースが変更されるたびに、「change_id」プロパティ(最後の変更識別子)が更新されます。データのリクエスト中に「change_id」を指定すると、端末はそれ以降に発生したイベントと、次のリクエストに使用できる現在の「change_id」値を返します。最初の関数呼び出しでゼロ「change_id」を指定します。関数はイベントを返しませんが、それ以降の要求では現在の「change_id」を返します。
CalendarValueLast — 国および/または通貨によって絞り込まれた、すべてのイベントの最後の値の配列を取得します。この関数は前回のリクエスト以降に現れた値のリクエストを可能にします。CalendarValueLastByEvent同様、「change_id」プロパティはリクエストに使用されます。
新しい構造体
MqlCalendarCountry — 国の説明
MqlCalendarEvent — イベントの説明
MqlCalendarValue — イベント値の説明
新しい列挙型
新しいエラーコード
CharArrayToStructはuchar配列をPOD構造体にコピーします。
StructToCharArrayはPOD構造体をuchar配列にコピーします。
ネットワーク関数に新しいエラーコードが追加されました。
StringReserve指定されたサイズのメモリバッファを文字列用に予約します。
StringSetLengthは指定した文字列の長さを文字数で設定します。
ArrayRemove指定されたインデックスから始まる指定された数の要素を配列から削除します。
ArrayInsertは、指定されたインデックスから開始して、ソース配列から指定された数の要素をターゲット配列に挿入します。
ArrayReverseは指定されたインデックスで始まる指定された数の要素を配列内で反転します。
作成されたカスタム銘柄のプロパティのコピー元となる銘柄の名前は、"symbol_origin"パラメータで指定されます。
この関数を使用して完了したテストは成功したと見なされます。関数呼び出しの後、テスト中に取得された取引履歴とすべての取引統計がターミナルに渡されます。