記事「JSONをマスターする:MQL5で独自のJSONリーダーをゼロから作成する」についてのディスカッション

 

新しい記事「JSONをマスターする:MQL5で独自のJSONリーダーをゼロから作成する」はパブリッシュされました:

オブジェクトと配列の処理、エラーチェック、シリアル化を備えたMQL5でカスタムJSONパーサーを作成する手順をステップバイステップで説明します。MetaTrader5でJSONを処理するためのこの柔軟なソリューションを使用して、取引ロジックと構造化データを橋渡しするための実用的な洞察を得ることができます。

本記事では、そのギャップを埋めるべく、MQL5で自作のJSONリーダーを作成する方法を紹介します。その過程で、JSONを解析するための基本概念を解説し、さまざまなJSON要素(オブジェクト、配列、文字列、数値、ブール値、null値など)を柔軟に扱えるクラス構造の作り方を一歩一歩説明します。最終的には、MetaTrader 5環境でJSON文字列を自在に解析・操作できるようになることを目指します。

本記事の構成は、他のMQL5関連記事と同様の流れに沿いながらも、JSONの解析と活用に特化した内容となっています。本記事は全体で5つの主要セクションに分かれています。「はじめに」(今ご覧いただいているこのセクション)に始まり、JSONの基礎とそれがMQL5においてどのように活用できるかを深掘りした解説へと続きます。その後、基本的なJSONパーサーをゼロから構築するためのステップバイステップのガイドを紹介し、さらにJSONを扱う上での高度な機能について探っていきます。最後に、全体のコードリストとまとめを掲載し、記事を締めくくります。


作者: Sahil Bagdi

 
あ、もう一つあった。
まあ、手に入ったら比較ベンチマークをやってみるよ。
 

MQL5BookのToyJson3を含む4つのライブラリの速度を比較した。サンプルjsonとして、Binanceの "exchangeInfo "に対する768Kbのサイズのレスポンスを取りました。ライブラリが文字列からそれを読み取るとき、それは全体として解析され、その後、私は1つのシンボルを選択し、そのすべてのデータを読み込みます。ループで100回。

MetaTrader 5 x64 build 5370 started for MetaQuotes Ltd.
Windows 10 build 19045, 4 x AMD Ryzen 3 PRO 3200 GE w/ Radeon Vega, AVX2, 6 / 13 Gb memory, 241 / 427 Gb disk, UAC, GMT+3
cpu='AVX2 + FMA3'

結果(クエリー処理時間):

99.5 ms - JAson 1.12(https://www.mql5.com/ja/code/13663)

85.5 ms - JAson 1.13

46.9 ms - ToyJson3 (https://www.mql5.com/ru/forum/459079/page4#comment_57805801)

41 ms - JSON(https://www.mql5.com/ja/code/53107)

1132 ms - JsonNode (このライブラリ)

38 ms - JSONに基づく私の実装

追記:むかしむかし、ここに別の、非常にシンプルなライブラリが登場したようだ。しかし、もう見失ってしまった。

追記:計測用のスクリプトは公開していない。コードはまったく見苦しい形になっている。

 
Edgar Akhmadeev #:

MQL5BookのToyJson3を含む4つのライブラリの速度を比較した。サンプルjsonとして、Binanceの "exchangeInfo "に対する768Kbのサイズのレスポンスを取りました。ライブラリが文字列からそれを読み取るとき、それは全体として解析され、その後、私は1つのシンボルを選択し、そのすべてのデータを読み込みます。100回のループで。

結果(クエリー処理時間):

99.5 ms - JAson 1.12(https://www.mql5.com/ja/code/13663)

85.5 ms - JAson 1.13

46.9 ms - ToyJson3 (https://www.mql5.com/ru/forum/459079/page4#comment_57805801)

41 ms - JSON(https://www.mql5.com/ja/code/53107)

1132 ms - JsonNode (このライブラリ)

38 ms - JSONに基づく私の実装

追記:むかしむかし、ここに別の、非常に簡素化されたライブラリが出現したようだ。しかし、もう見失ってしまった。

追記:計測用のスクリプトは公開していない。コードはまったく見苦しい形になっている。

jsonの文字列かファイルを掲載していただけますか?
 
Alain Verleyen #:
json文字列またはファイルを投稿してもらえますか?

https://fapi.binance.com/fapi/v1/exchangeInfo

https://eapi.binance.com/eapi/v1/exchangeInfo

778 KB (796,729 バイト)。

 
Alain Verleyen #:
json文字列またはファイルを投稿してもらえますか?
APIからプログラムで取得した文字列のコピーです。
ファイル: