ライブラリ: JSONシリアライズとデシリアライズ(ネイティブMQL) - ページ 8 123456789101112131415...18 新しいコメント Andrey Salnikov 2017.11.23 12:05 #71 o_o:ライブラリはMQL4とMQL5で動作します。感謝の気持ちは、MQLのウェブリソースを使った実践的な仕事の例という形で受け取ります。)こんにちは!ライブラリをありがとうございます!私は暗号通貨マイニングのためのプールに接続されたコンピュータの作業を監視するためにあなたのライブラリを使用しました。プール(のウェブサイト)は、ステータスクエリに応答して、次のような形式で応答を返します:/* {"status": "OK", "data":[ {"worker": "riga1", "lastSeen":1511432055, "currentHashrate":2746.6666666666665,"validShares":103,"invalidShares":0,"staleShares":null}, {"worker":"riga2","lastSeen":1511432068,"currentHashrate":3040,"validShares":114,"invalidShares":1,"staleShares":null}, {"worker":"riga3","lastSeen":1511432057,"currentHashrate":2426.6666666666665,"validShares":91,"invalidShares":0,"staleShares":null}, {"worker":"riga4","lastSeen":1511432055,"currentHashrate":2266.6666666666665,"validShares":85,"invalidShares":0,"staleShares":null}, {"worker":"riga5","lastSeen":1511432061,"currentHashrate":2666.6666666666665,"validShares":100,"invalidShares":0,"staleShares":null}, {"worker":"riga6","lastSeen":1511432050,"currentHashrate":2293.3333333333335,"validShares":86,"invalidShares":0,"staleShares":null}, {"worker":"riga7","lastSeen":1511432069,"currentHashrate":1013.3333333333334,"validShares":38,"invalidShares":0,"staleShares":null}]} */RIGA1、RIGA2など。- これらはコンピュータであり、その "currentHashrate "が閾値を下回らないように監視する必要がある。コードは非常にシンプルだ:void Fly_API_Monitor() { int res=0; string url; string cook=""; string ref=""; string res_header=""; char result[]; char data[]; string strRes=""; // Тут вписывается свой кошелек string wallet="t1L8S ............"; ResetLastError(); url="https://api-zcash.flypool.org/miner/" + wallet + "/workers/monitor"; res=WebRequest("GET", url, cook, ref, 5000, data,0, result, res_header); strRes=CharArrayToString(result,CP_ACP); if (res !=-1) { //Print("No error"); //Print(strRes); CJAVal dataM; dataM.Deserialize(strRes); string stat=dataM["status"].ToStr(); int i=0; for(i=0; i< ArraySize(dataM["data"].m_e); i++) { Print(dataM["data"].m_e[i]["worker"].ToStr()+「ハッシュレート: "+ dataM["data"].m_e[i]["currentHashrate"].ToStr()); } } else { Print(「エラー+IntegerToString(GetLastError())); Print(strRes); } } のように出力する:riga7 ハッシュレート:826.6666riga6 ハッシュレート:2293.333riga5 ハッシュレート:3200.riga4 ハッシュレート: 1866.666riga3 ハッシュレート:2800riga2 ハッシュレート:2853.333riga1 ハッシュレート:2933.333 Daniil Kurmyshev 2017.12.25 13:42 #72 ライブラリーの開発者には感謝するが、動作は非常に遅かった。通常、製品やコードを出す前に、プロファイリングを行うべきだが、この場合、ライブラリーは無料なので、文句を言う必要はない:было: virtual CJAVal* AddBase(const CJAVal &item) { int c=ArraySize(m_e); ArrayResize(m_e, c+1); m_e[c]=item; m_e[c].m_parent=GetPointer(this); return GetPointer(m_e[c]); } // 追加 virtual CJAVal* NewBase() { int c=ArraySize(m_e); ArrayResize(m_e, c+1); return GetPointer(m_e[c]); } // 追加 стало: virtual CJAVal* AddBase(const CJAVal &item) { int c=ArraySize(m_e); ArrayResize(m_e, c+1, 50000); m_e[c]=item; m_e[c].m_parent=GetPointer(this); return GetPointer(m_e[c]); } // 追加 virtual CJAVal* NewBase() { int c=ArraySize(m_e); ArrayResize(m_e, c+1, 50000); return GetPointer(m_e[c]); } // 追加そうでなければ、以前はこうだった(この画面のウェブ・リクエスト自体にかかった時間は16,718,439で、残りの処理はすべて):そして調整後(矢印は同じウェブリクエストを示す):ほぼ20倍速くなった。 --- 2017.12.25 14:23 #73 Daniil Kurmyshev:なぜ5万人なのか?20,000,000でも100,000でもなく?--どのようなテストデータを使ったのですか? Daniil Kurmyshev 2017.12.25 16:25 #74 合計で10000からであることが判明したデータに - 30000、この理由のために私は予備と50000を選んだ)が、以前は配列内の約280の値にこのライブラリを使用し、このバージョンでは、500で十分ですが、50000は確かにシステムのリソースを持っている人のためのものです。 --- 2017.12.25 18:00 #75 ドキュメントによると、reservationパラメータは単にメモリの再割り当ての回数を減らすだけです。パラメータ100 (1000, 10000)のテストサンプルを確認してください。この場合、プロファイリング画面ではどのような速度向上が見られますか? Daniil Kurmyshev 2017.12.28 18:15 #76 o_o:ドキュメントによると、reservationパラメータは単にメモリの再割り当ての回数を減らすだけです。パラメータ100 (1000, 10000)のテストサンプルを確認してください。プロファイリング画面での速度向上はどうなりますか?はい、その通りです。個人的に最適な再分配のパラメータをピックアップしたのですが、一番長い関数はデシリアライズです。プロファイリング、メモリ再配置パラメータ5000のスクリーンショットを添付します。 --- 2018.01.02 12:54 #77 1.12ArrayResizeに ステップ100を設定 ファイル: JAson.mqh 31 kb Renat Fatkhullin 2018.01.03 04:52 #78 プロファイラーは 最適化されていないコードで動作することに注意してください。したがって、非常に優れたオプティマイザを使用した後にリリースで再コンパイルすると、ボトルネックはまったく別のゾーンに移動します。プロファイラのセミリリース最適化については、もう少し後で試してみる予定です。そこにはかなり多くの問題点があります。 削除済み 2018.02.07 14:42 #79 このネイティブなMQLと高速ライブラリに感謝します。JSON配列やオブジェクトを操作するときに特別な、それらからデータを抽出する方法のドキュメントがあれば、より便利でしょう: 仮に:[[0.88678,true],[0.88668,false]]、これをDeserialize 後にMQL型にマッピングするにはどうすればよいですか? Delta.800 2018.02.20 18:12 #80 スペシャリストの皆様へ私はまだオブジェクト指向プログラミングが得意ではありません。(私はまだオブジェクト指向プログラミングが得意ではないので、ライブラリ自体のコードやBTC-E取引所に特化した記事を理解することができません。 そのため、 #58)の投稿のように簡単な例をお願いしています。 私はWEX.NZ取引所の2つのパブリックapiを解析する必要があります。 https://wex.nz/api/3/info { "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ... ここから、私はすべての利用可能なペア(btc_usd、btc_rur、...)を配列に取得する必要があります(パラメータなしでペア名だけ、私は既知の名前でパラメータを取得することができます...)。 https://wex.nz/api/3/depth/btc_usd { "btc_usd": { "asks": [ [ 11550, 0.00998 ], [ 11559.9, 0.01731136 ], ... ] ], "bids": [ [ 11506.031, 1.756 ], [ 11506.03, 1.23 ], ... ] ] } } そして、ここから2つの配列(asksとbids)に注文の価格と値を取得します。 助けていただけるとありがたいです!よろしくお願いします! 123456789101112131415...18 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ライブラリはMQL4とMQL5で動作します。
感謝の気持ちは、MQLのウェブリソースを使った実践的な仕事の例という形で受け取ります。)
こんにちは!
ライブラリをありがとうございます!
私は暗号通貨マイニングのためのプールに接続されたコンピュータの作業を監視するためにあなたのライブラリを使用しました。
プール(のウェブサイト)は、ステータスクエリに応答して、次のような形式で応答を返します:
/* {"status": "OK", "data":[ {"worker": "riga1", "lastSeen":1511432055, "currentHashrate":2746.6666666666665,"validShares":103,"invalidShares":0,"staleShares":null}, {"worker":"riga2","lastSeen":1511432068,"currentHashrate":3040,"validShares":114,"invalidShares":1,"staleShares":null}, {"worker":"riga3","lastSeen":1511432057,"currentHashrate":2426.6666666666665,"validShares":91,"invalidShares":0,"staleShares":null}, {"worker":"riga4","lastSeen":1511432055,"currentHashrate":2266.6666666666665,"validShares":85,"invalidShares":0,"staleShares":null}, {"worker":"riga5","lastSeen":1511432061,"currentHashrate":2666.6666666666665,"validShares":100,"invalidShares":0,"staleShares":null}, {"worker":"riga6","lastSeen":1511432050,"currentHashrate":2293.3333333333335,"validShares":86,"invalidShares":0,"staleShares":null}, {"worker":"riga7","lastSeen":1511432069,"currentHashrate":1013.3333333333334,"validShares":38,"invalidShares":0,"staleShares":null}]} */RIGA1、RIGA2など。- これらはコンピュータであり、その "currentHashrate "が閾値を下回らないように監視する必要がある。
コードは非常にシンプルだ:
のように出力する:
riga7 ハッシュレート:826.6666
riga6 ハッシュレート:2293.333
riga5 ハッシュレート:3200.
riga4 ハッシュレート: 1866.666
riga3 ハッシュレート:2800
riga2 ハッシュレート:2853.333
riga1 ハッシュレート:2933.333
ライブラリーの開発者には感謝するが、動作は非常に遅かった。通常、製品やコードを出す前に、プロファイリングを行うべきだが、この場合、ライブラリーは無料なので、文句を言う必要はない:
そうでなければ、以前はこうだった(この画面のウェブ・リクエスト自体にかかった時間は16,718,439で、残りの処理はすべて):
そして調整後(矢印は同じウェブリクエストを示す):
ほぼ20倍速くなった。
なぜ5万人なのか?
20,000,000でも100,000でもなく?
--
どのようなテストデータを使ったのですか?
合計で10000からであることが判明したデータに - 30000、この理由のために私は予備と50000を選んだ)が、以前は配列内の約280の値にこのライブラリを使用し、このバージョンでは、500で十分ですが、50000は確かにシステムのリソースを持っている人のためのものです。
ドキュメントによると、reservationパラメータは単にメモリの再割り当ての回数を減らすだけです。
パラメータ100 (1000, 10000)のテストサンプルを確認してください。
この場合、プロファイリング画面ではどのような速度向上が見られますか?
ドキュメントによると、reservationパラメータは単にメモリの再割り当ての回数を減らすだけです。
パラメータ100 (1000, 10000)のテストサンプルを確認してください。
プロファイリング画面での速度向上はどうなりますか?
はい、その通りです。個人的に最適な再分配のパラメータをピックアップしたのですが、一番長い関数はデシリアライズです。プロファイリング、メモリ再配置パラメータ5000のスクリーンショットを添付します。
1.12
ArrayResizeに ステップ100を設定
仮に:
、これをDeserialize 後にMQL型にマッピングするにはどうすればよいですか?
スペシャリストの皆様へ私はまだオブジェクト指向プログラミングが得意ではありません。(私はまだオブジェクト指向プログラミングが得意ではないので、ライブラリ自体のコードやBTC-E取引所に特化した記事を理解することができません。 そのため、 #58)の投稿のように簡単な例をお願いしています。
私はWEX.NZ取引所の2つのパブリックapiを解析する必要があります。
https://wex.nz/api/3/info
{ "server_time": 1519120845, "pairs": { "btc_usd": { "decimal_places": 3, "min_price": 0.1, "max_price": 500000, "min_amount": 0.001, "hidden": 0, "fee": 0.2 }, "btc_rur": { ...ここから、私はすべての利用可能なペア(btc_usd、btc_rur、...)を配列に取得する必要があります(パラメータなしでペア名だけ、私は既知の名前でパラメータを取得することができます...)。
https://wex.nz/api/3/depth/btc_usd
{ "btc_usd": { "asks": [ [ 11550, 0.00998 ], [ 11559.9, 0.01731136 ], ... ] ], "bids": [ [ 11506.031, 1.756 ], [ 11506.03, 1.23 ], ... ] ] } }そして、ここから2つの配列(asksとbids)に注文の価格と値を取得します。
助けていただけるとありがたいです!よろしくお願いします!