この投稿文は次の言語で読めます: 日本語
Contents
CPUパワーをクラウドから借りる
以前の記事では、主にCPUパワーを貸して利益を得る方でしたが、
今回は借りる側で、どれだけテストが高速化されるかを試してみました。
めっっちゃ速いです!!!
自機+ローカルネットワークだけでも11CPU分を使用していますが、その比じゃないくらいの速度です。
上記画像は約10分程度実行した結果ですが、完了タスク数で見ると、
自機+ローカルネットワーク | 103件 |
MQL5 Cloud Network | 1,864件 |
約18倍の差となりました。
※ローカルネットワークのCPU内で実行件数のばらつきがあるのは、
一時的にMQL5 Cloud Networkへリソース提供されていたと想定されます
どのくらいお金がかかる?
半日程度利用してみた結果、約5ドルでした。
(1回当りの最適化がかなり早く終わるため、時間足や期間を何度か変更しながら実行)
高いか安いかは判断が分かれるところですが、個人的にはかなりお値打ちだと感じてます。
AWSや有償ソフトウェア等、価値あるツールにお金をかけて生産性を上げるということに対して
一昔前までは若干の抵抗がありましたが、年を取るほどに
お金の重み <<< 時間の重み
を感じる様になり、僅かな費用で時短が図れることは非常に魅力でした。
MT5に求めていた一番の価値は、期待以上の物だったと思います。
普段、本業で忙しい間はPCが遊んでいることも多いため、
その間にリソースを貸し出して得た利益で、バックテストの高速化が図れると思うと
なんとなく時間自体を貯金しているような感覚になります。
費用の支払方法
事前にMQL5 Cloud Network へCPUパワーを提供していたことで得た利益分から自動で相殺されていましたが、
初めて利用する場合には以下の手続きが必要です。
MQL5 クラウドネットワークで、リソースを買うための手順
- MQL5.communityに登録する ;
- ペイメントシステム から入金するか、 ジョブ, マーケット や シグナルサービス等でクレジットを得る ;
- ターミナルの設定で、ログインとパスワードを設定する。
支払レートは?
こちらも、MQL5のFAQに記載がありました。
エージェントの報酬の計算には、どのような計算式が、使われているのですか?
個々のエージェントのレンタル料金は、それぞれの PR と、ネットワーク利用者の発注した仕事に要した時間に拠ります。エージェントにより完了されたタスクに対する報酬は、価格、生産性、時間を要素とし、総合的に計算されます。: Money=Price*PR*Time, ここで:Money は、完了されたタスクに対する報酬、
Price は、1秒当たりの PR コスト、これは、MQL5 クラウドネットワークの中の全てのエージェントで共通です。
PR は、特別な方法で計算されたエージェントのパフォーマンスレーティングです。エージェントの PR が高ければ高いほど、タスクの完了は早くなり、その結果、エージェントごとのレンタル料金も高くなります。
Time は、一つのタスクを処理するのにかかった時間です。PR 値が高いほど、タスクを完了するのは早くなります。
計算されるタスクのコストは、ネットワーク利用者の発注した仕事を処理するエージェントのPR値には依存しません。なぜならば、報酬は、完了したタスクの処理時間とPR値の双方により決められるからです。単位時間当たりの1PRのコストはいくらですか?
PR=100 のエージェントのコストは、1時間当たり0.01 USD です。1クアント(quant) が、仕事の単位です。1クアント(quant) は、PR=1 のエージェントの 1 ms (1 ミリ秒)の仕事に該当します。つまり、1クアント(quant) 当たりのコストは、下記のように計算できます。クアント価格=0.01 USD/(100PR*3 600 000 ms)=2.77778E-11 [USD/(PR*ms)]
下記の表は、一つのシングルコアテスターエージェント( PR=100 とする)を、1時間と1カ月動かした場合の試算です。
期間 クアント価格, USD/(PR*ms) エージェント, PR 時間, ms 合計, USD 1 時間 2.77778E-11 100 100 3 600 000 0.01 1カ月 2.77778E-11 100 100 2 592 000 000 7.20
注意点
MQL5 Cloud Networkを使用する場合、 EAの内部でDLLを使用するプログラムは、外部PCでは動作しません。
#property tester_indicator や#property tester_library などのディレクティブを使用し有効化されたインディケーターやEX5ライブラリ(DLLはクラウドでは許可されていません。)
https://www.mql5.com/ja/articles/341
実際に実行してみたところ、ネットワーク上のPCにリクエストされるものの、
即座に処理が失敗し、終了してしまうようです。
実行先PCのログファイルを確認すると、以下のように表示されます。
IK 0 18:09:27.969 Tester expert file added: Experts\xxxxx.ex5. 219060 bytes loaded
DR 0 18:09:27.984 Tester file added: Libraries\yyyyy.dll. 673814 bytes loaded
OQ 0 18:09:27.984 Network 17976 bytes of optimized inputs info loaded
OD 0 18:09:27.987 Tester successfully initialized
QF 0 18:09:27.987 Network 579 Kb of total initialization data received
PJ 0 18:09:27.987 Tester Intel Core i7-4770K @ 3.50GHz, 7872 MB
FO 0 18:09:28.233 Tester optimization pass 299062603 started (batch of 2 tasks)
JF 0 18:09:28.290 Symbols EURUSD: symbol to be synchronized
LS 0 18:09:28.348 Symbols EURUSD: symbol synchronized, 3624 bytes of symbol info received
GK 0 18:09:29.087 History EURUSD: load 27 bytes of history data to synchronize in 0:00:00.021
HE 0 18:09:29.087 History EURUSD: history synchronized from 2005.01.03 to 2019.04.04
DR 0 18:09:29.242 History EURUSD,M1: history cache allocated for 4191148 bars and contains 343091 bars from 2008.01.02 09:01 to 2008.12.31 20:00
PM 0 18:09:29.242 History EURUSD,M1: history begins from 2008.01.02 09:01
NP 2 18:09:29.245 Tester 2009.01.01 00:00:00 DLL loading is not allowed
ND 2 18:09:29.245 Tester global initialization failed
QL 2 18:09:29.245 Tester global initialization critical error
OI 3 18:09:29.404 Tester working time at stop is 0:00:00.298
込み入った処理や、MQL5だけでは実装が難しい処理はDLLにしたいところですが、これは少々悩ましい問題ですね。
しかし、他人のPCから勝手にDLLを送り込まれ、かつ実行が許可されるというのはかなりリスキーなことですので、
このくらいの不便さは必要なのかも知れません。
まとめ
処理速度はMT4のシングルスレッドと比較して圧倒的に速く、
かつ僅かなコストで時間が買えるようなものなので、とてもありがたい機能だと思います。
今後も積極的に利用しようと思います!