管理人の開発環境では、CPUに「Intel Core-i7 2600k」を使用しています。このCPUはコアを4つ搭載しています。また、「Hyper-Threading」を有効にすると最大8つのスレッドを同時に実行出来ます。
そこで疑問に思ったのですが、この「Hyper-Threading」を有効にした場合と無効にした場合では、バックテストの処理時間に差が生じるのか?
色々な所でCPUのベンチマークテストの結果を掲載しているのを見るのですが、バックテストに関しては検証記事が見当たらなかったので、実際に検証してみました。
○検証環境
CPU : Intel Core-i7 2600k
Memory : 4GB * 4
OS : Windows 7 Ultimate
EA : Moving Average
通貨ペア : USDJPY
時間足 : M5
期間 : 2012/01/01 - 2012/03/30
データ精度 : 全ティック
オプティマイズ : 完全アルゴリズム Balance max
ステップ数 : 1000
○結果
Hyper-Threading 有効 : 18m00s
Hyper-Threading 無効 : 18m23s
「Hyper-Threading」を無効にしたほうが、2%程遅い結果となりました。ですが、これは実行環境による誤差の範囲内のような気がします。
「Hyper-Threading」を無効にした場合、実行されるスレッド数は4つになるので、バックテストで使用されるリソース(RAMDISKの容量)が「Hyper-Threading」を有効にした場合よりも半分で済みます。
なので、「Hyper-Threading」は無効にしたほうがメリットが大きいと思いました。
テーマ:MT4自動売買 - ジャンル:株式・投資・マネー
- 2012/04/09(月) 10:57:10|
- MT5
-
| トラックバック:0
-
| コメント:0
前回の記事では、RAMDISKを利用したバックテストの高速化方法を紹介しました。
今回は、ちょっとしたおまけ記事です。
前回の記事の方法でバックテストをしていると、RAMDISKの容量が足りなくなる事があります。特に複数のスレッド処理が可能な最新CPUでは、各スレッド毎に作業領域が必要になるため、すぐに足りなくなってしまいます。
RAMDISKの容量が足りない状態のままでバックテストを行った場合、正しい結果が表示されません。しかも、ログにはエラーらしき内容も表示されません。
そこで、RAMDISKの容量を節約する小技です。といっても単純なのですが、フォルダの圧縮機能を利用します。
RAMDISKに作成されている[tester]フォルダのプロパティを開いて、[全般]タブの[詳細設定]をクリックします。

[内容を圧縮してディスク領域を節約する]にチェックを入れます。

[OK]をクリックして、プロパティウィンドウを閉じます。
[tester]フォルダの文字の色が青色になっていれば、OKです。
ちなみに、この方法は、RAMDISKがNTFSでフォーマットされていないと出来ないので注意です。
※ 上記の内容による損害等については一切責任を負いませんので、自己責任でお願いします。
テーマ:システムトレード - ジャンル:株式・投資・マネー
- 2012/04/08(日) 16:48:36|
- MT5
-
| トラックバック:0
-
| コメント:0
①CPUを交換する
MetaTrader5(MT5)でバックテストを行う場合、使用するPCのスレッド数が多ければ多い程、テストに費やす時間が短縮されます。これは、同時に行うテストパターン数=PCのスレッド数だからです。
というわけで、手っ取り早いのは、バックテストで使用するPCのCPUを新しいものに交換する事です。
②RAMDISKを導入する
バックテストを実行する時にボトルネックになっているのが、HDDのアクセスです。これは、特に全ティックでバックテストを行う場合に顕著になります。
そこで、アクセス速度が速いRAMDISKを導入することでHDDのアクセスを最小限に減らします。
RAMDISKにはいくつかの種類があります。有名なのは、GavotteRamdiskでしょう。無料ですが、導入に少し手間がかかるので、ここでは割愛します。
RAMDISKを導入したら、MT5の設定をします。MT5のフォルダを丸ごとRAMDISKにコピーしてしまっても構わないのですが、もっと効率的な方法を紹介します。
それは、シンボリック・リンクという機能を使います。具体的には、バックテストで使用するフォルダのみをRAMDISKに割り当ててしまおうというワケです。
MT5がインストールされているフォルダ内に、[tester]というフォルダがあります。このフォルダをRAMDISKに割り当てます。
最初に、RAMDISK内に[tester]フォルダを丸ごとコピーします。
MT5がインストールされているフォルダ内の[tester]フォルダを適当な名前にリネームします。
コマンドプロンプトで、以下のコマンドを実行します。(Windows 7の場合)
mklink "C:\Program Files\MetaTrader 5\tester" "R:\tester"
※ MT5が[C:\Program Files\MetaTrader 5]以外にインストールされている場合は、適宜変更して下さい。
※ RAMDISKのドライブレターが[R:]以外の場合は、適宜変更して下さい。
これで、MT5がインストールされているフォルダ配下に[tester]のショートカットのようなものが作成されていればOKです。

実際にバックテストを実行し、RAMDISKにアクセスされているかを確認してみて下さい。
※ 上記の内容による損害等については一切責任を負いませんので、自己責任でお願いします。
テーマ:MT4自動売買 - ジャンル:株式・投資・マネー
- 2012/04/08(日) 15:26:51|
- MT5
-
| トラックバック:0
-
| コメント:0
前回は、MQL5クラウドネットワークに登録してみました。
このクラウドネットワークでは、自分のPCリソースを他の人に貸し出すことが出来ます。
借りる人は、利用した時間分のクレジットを支払います。そのクレジットが、貸した人のアカウントに振り込まれる仕組みです。
ここで気になるのが、どのくらいのクレジットが貰えるのか?
ここの書き込みを見た限りでは、
AgentPRが100の時、1時間貸し出すと$0.01が貰える。と書いてあります。ちなみにAgentPRというのは、貸し出すPCの性能と考えていいと思います。数値が大きい程、処理能力が高くなります。
ちなみに、管理人のPCを24時間貸し出したらどのくらい稼げるのか計算してみました。
AgentPR = 150(Core i7-2600k)とすると、
150(AgentPR) ÷ 100(AgentPR) × 8(スレッド数) × 24(時間) × 0.01($) = $2.88
1日貸し出しても$2.88しか稼げない...orz
しかもこの計算式では、常に全てのコアが最大の処理を行った場合の結果だそうで、実際のコアの稼動率はもっと低いはずです。
そうなると、電気代さえも稼げないような...。
テーマ:システムトレード - ジャンル:株式・投資・マネー
- 2012/02/24(金) 08:00:00|
- MT5
-
| トラックバック:0
-
| コメント:0
クラウドネットワークに興味があったので、登録してみました。
自分のPCのリソースを公開する所で、ちょっとだけハマッたので記載します。
会員登録した後に、携帯電話の番号を登録する必要があるみたい。これをしないと、Agentの一覧に自分のPCのリソースが表示されません。

areaの項目に入力する数値は、左の0を省略しないとだめです。(090なら90になります)
携帯電話の番号を入力すると、4桁の暗証番号が記載されたSMSメールがMetaQuote社から届きます。この番号を入力して完了です。

無事にリソース一覧が表示されました。
テーマ:システムトレード - ジャンル:株式・投資・マネー
- 2012/02/23(木) 11:10:15|
- MT5
-
| トラックバック:0
-
| コメント:0