ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

人の夢と書いて、儚い(はかない)と読みます。  【かねが為 尽くす努力は水の泡 消えにし後は 澄み渡る空】

2010-03-29

2GBの壁を越える?!

今日はMetaTrader4 の2GBの壁について説明したいと思います。


1つの PC 上で、大量の MT4 を起動させたい場合、32bitOS では、デスクトップヒープを増やす設定をする必要があります。この辺りは、mystさんの解説が参考になると思います。

2GBの壁は、それとは全く別の話で、1つのMT4 が使えるメモリが2GB までという制約のことです。非常にヘビーな使い方をしない限り、この制約が問題になることは無いのですが、大量のチャート表示をさせるなど無理をすると、not enough memory というエラーが起こります。

f:id:fai_fx:20100327193058p:image

↑2005年から現在までの1分足チャートを11枚表示させて発生したエラー。

普通はこの時点で諦めるところですが、それではつまらないので、ちょっとアレしてみます..。




まず、Windows上で動作する 32bitアプリが使用できるメモリ容量は、以下のようになっています。

OS普通の32bitアプリ特別な32bitアプリ
XP (32bit)2GB2GB
XP (32bit,3GBオプション有り)2GB3GB
XP (64bit)2GB4GB

terminal.exe は、普通の32bitアプリなので、OSの種類に関係なく、利用できるメモリは2GBまでです。64bitOSにしてメモリを何ギガ搭載しても、1つのterminal.exe は、2GBしか使えません。しかし、"特別な32bitアプリ" に変えてしまえば、OSによっては、3GB〜4GB まで利用可能となります。

この "特別な32bitアプリ" というのが、EXE内の IMAGE_FILE_LARGE_ADDRESS_AWARE bit を on にしたアプリのことで、今回試そうとしていることが、この辺りにそっくり解説されています。



詳細はリンク先や、ぐぐって調べてもらったらと思いますが、要点をまとめると

・terminal.exe にLARGE_ADDRESS_AWARE bitを付与する。

・XP(32bit)を /3GBオプションで起動するか、64bitOS を使う。

という2条件を満たせば、利用可能メモリが3GB〜4GBになる..かもしれないということです。

(但し、terminal.exeが正式対応している訳ではないので動作は無保証)

http://www.ntcore.com/4gb_patch.php ←このツールで変更してもOKです。(2011.10.31)





以下、実際に試して見ました。

(1) まずは、dumpbin でLARGE_ADDRESS_AWARE bitが付与されていないことを確認します。

f:id:fai_fx:20100327200536p:image

↑Application can handle large (>2GB) addresses という記述が無いので、フラグが付与されていないことが分かります。



(2) editbin で、LARGE_ADDRESS_AWARE bitを付与します。

f:id:fai_fx:20100327200534p:image

↑付与後に、dumpbin で確認すると、Application can handle large (>2GB) addresses が表示されます。


(3) 64bitOS で、 2005年から現在までの1分足チャートを複数枚開いてみました。

f:id:fai_fx:20100327201447p:image

↑オリジナルでは、11枚開いた時点で、not enough memory エラーが発生し、チャート画面が Waiting for update のままで開けなくなりました。

f:id:fai_fx:20100327201446p:image

↑LARGE_ADDRESS_AWARE bitを付与した改造版では、2GBの壁を越えることができ、12枚目以降も問題なく開けました。




not enough memory エラーで困っている人は、このテクニックを試してみると良いと思いますが、大半のユーザにはどうでもいい話ですよね..笑。

D

afaf 2010/03/29 00:27 こんばんは。
あまりコメントしないのですが、久しぶりに。

こういう記事、めちゃめちゃマニアックで大好きです!!!
今後も頑張ってくださいね!

FFFOOOFFFOOO 2010/03/29 00:49 こんにちは。いつもすばらしい内容の記事なので感心を通り越してほれぼれしながら読ませて頂いてます、
できれば私もネタを提供できるレベルにならないと・・・

別件ですが、ご存知かもしれませんがToyoLaboさんにこんな記事が・・・・
http://forex.toyolab.com/article/35540187.html

G 2010/03/29 10:57 ここまでくると、何をどうコメントしてよいやら…。m(__)m

moonchildmoonchild 2010/03/30 01:15 はじめまして。

記事に全然関係ない質問で申し訳ありませんが、他に聞く人がいないので教えて下さい。

デモ口座の1時間チャートの開始時間が0分からではなく5分からになってしまうことが希にあります。
具体的な例としてはIKONの3/29 0時から16時までがそうなっていて、17時からは0分に戻っています。FXCBSでも同じな現象を以前見たことあります。
ヒストリーデータを全部削除しても変わらないので、サーバ側がそういうデータを送ってきているのだと思います。

なぜこういう現象が発生するのか、またどうすれば修復できるのか、もしご存じであれば教えて下さい。

mystmyst 2010/03/30 05:34 いや〜マジで凄いです。
自分も試してみよっ。
これからもマニアックな記事よろしくお願いしますm(_ _)m

fai > 3/29fai > 3/29 2010/03/31 00:21 afさん、FFFOOOさん、Gさん、mystさん
コメントありがとうございます。
ここまでマニアックな記事はもう書けません^^;ネタが無いですし..。
Toyolabさんのサイトは見てるので知ってます。嬉しいことです。

moonchildさん
今日の日記に書きましたが、役に立てる知識は有りません..orz

moonchild > faimoonchild > fai 2010/03/31 23:46 わざわざ記事にまでして検証していただき、ありがとうございました。

根本的な解決方法がないというのは残念です。
デモ口座でサポートを要求する図太さはありませんから...。(^^ゞ

記事はいつも楽しみにしています。
最近はなんかfaiさんの意図とは違う超初心者の読者が多くてほとんど便利屋扱いされてるみたいですが、キレずにマイペースで続けて下さい。(^^)

hironhiron 2010/04/02 16:27 はじめまして。
大変勉強になるサイトで毎日拝見させていただいております。
皆様のご意見や、ご感想なども勉強になり、ほんと良い所見つけたなって思っております。

突然で申し訳けないのですが以前ZeroLag_EMA.mq4にメール機能を付けられたものをDLさせて頂いたのですが
クロス後すぐにメール送信というふうにするには、どのような部分を変更すれば可能でしょうか?
ZeroLag_EMA.mq4メール付きそのままでも十分満足なのですが出来ればクロス(直後)にアラート、メールと
出来ないでしょうか?

初心者なのでこのような事を申しまして、恥ずかしく思っております。
クロス直後にこだわってしまい申し訳けありません

どうかご指導宜しくお願い致します。

LeihcrevLeihcrev 2012/02/14 14:59 not enough memory をくらってしまったので、解決方法を探してみたら辿りつきました。
大変助かりました! ありがとうございます。
dumpbin は入ってなかったので、http://www.ntcore.com/4gb_patch.php でやってみました。今のところうまく動いています。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20100329/1269788482