EAラボラトリーフォーラム::FXシステムトレード情報満載のコミュニティサイト
http://forum.ea-labo.com/

1口座に対するポジション数/EA数について
http://forum.ea-labo.com/viewtopic.php?f=25&t=1521
ページ 12

作成者:  Brian [ 2010年10月07日(木) 00:40 ]
記事の件名:  1口座に対するポジション数/EA数について

皆様、よろしくお願いいたします。
適切なフォーラムに迷いましたので、こちらに建てさせていただきます。

数個のEAに頼りすぎると崩れた時のインパクトが大きいので、
同一の口座で多くの種類のEAを動かしてリスクヘッジをしております。
当然種類が増えるほどポジション数が増加しております。

EAは通常ポジション決済のためや、所有ポジションのチェックを常時行っていると思います。
ポジション数が増えるほど、チェック対象が増え、
EAが増えるほどチェックを実行する物が増えることになります。
そのためどんどんサーバとの通信負荷が高まります。

影響がでているという話もweb上で見かけたことがありませんので、
どの程度から口座分割すべきか判断しかねています。

情報お持ちの方がいらっしゃったらご教授いただけますでしょうか。

作成者:  KEISHO_MAN [ 2010年10月07日(木) 07:31 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

Brian 研究員

口座を分割してもEAの数だけ監視する負荷は変わらないかなと感じますが、どうなんでしょう?

同じようなポジション取りをするEAは同じ口座のMT4を複数インストールで注文被りで注文が遅延するのを防ぐようにしています。

同時にシグナルがでた場合、1つのMT4で処理できるのは1つの注文で、他のシグナルはその処理が終了するたびに順に処理されると、フォーラムで書かれていたと思います。

作成者:  adhoc [ 2010年10月07日(木) 23:25 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

私も、たくさんのEAを低いリスクで稼動させています。
・ひとつのMT4に入れるEA数を制限すること
・CPU負荷が高い状態にならないこと
に気をつけています。

確かに、ポジション数×EA数で処理は増えていきますね。
通信の負荷が問題になったときは、単純にOld tickエラーが発生するような気がします。
まぁ、Old tick はサーバ側が原因なことが多そうなので、見分けはつかないのですが。

作成者:  Brian [ 2010年10月07日(木) 23:52 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

ご確認ありがとうございます。

もう少し詳しく私の考えていた事を書いてみます。

もっと上手い方法を採っているEAも有るかもしれませんが、
EAは基本的に現状のポジションを確認し、MagicNoやペアから、
既にポジションを持っているかどうか等を確認を行います。

そのうえで、エントリーをするとか、決済をするか等の計算を始める事になりますので、
確認の作業が遅延すれば、設計されたタイミングで動作しないという懸念が生まれます。

心配のしすぎなのかもしれませんが、懸念している事を大まかに例をあげて説明いたします。


◆EAが150個で、ポジションが最大100ぐらいをとる場合
 ・ケース1:口座が1つの場合
   100個のポジションをそれぞれ150個のEAがチェックする事になるので、
   100x150で都合15000回のチェックが必要となります。
  
 ・ケース2:口座が2つの場合
   50個のポジションをそれぞれ75個のEAがチェックする事になるので、
   50x75を2口座で、それぞれの口座では3750回ずつチェックが必要になります。
   

ポジションチェックをする仕様が、MT4内でどのように動作しているか明確にわかりませんが、
他のMT4上で取ったポジションも、他のMT4へ即時反映する事から、
かなりの頻度でサーバ上へのチェックを行っているのかと思います。

とすると、1つの口座に集中しすぎると、
サーバへの通信の負荷も、各EAの処理量も双方が上がるということになってしまいます。

仰るように、オーダーの通信セッションはMT4の仕様上1つのようですが、
ポジション数等のアカウント状態を確認するセッションも、
サーバ上でアカウントごとに上限が設けられている可能性もあります。

webで調べてちょっと見かけない内容なので、
憶測ばかりの話になってしまいますが、以上です。

もちろんブローカーは分けていますが、
稼働EAがどんどん増え、同時所有ポジションもどんどん増加していますので、
ブローカー内で更に分けるタイミングを考えていました。

作成者:  KEISHO_MAN [ 2010年10月08日(金) 11:38 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

Brian さんが書きました:

ポジション数等のアカウント状態を確認するセッションも、
サーバ上でアカウントごとに上限が設けられている可能性もあります。



これが仮定の話じゃなく実際にそうでしたら、同ブローカーで口座分けしたほうがいいんでしょうね。
負荷を見て、あまりにも負荷をかけてくるEAがあったら業者が制限をして注文を通りにくくするって、ありそうな話です

作成者:  Brian [ 2010年10月08日(金) 23:59 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

KEISHO_MAN様

これまた私の書き方が悪かったです。
アカウントごとの上限というのは、一律でという意味でした。

色々システムを設計する段階で、過負荷でサーバがダウンしてしまわないように、
ほとんどの場合では、制限を設ける場合が多いんです。
大抵の場合は余裕をもって上限設定やキャパシティを決めるので、
問題が顕在化しません。

MT4ってたぶん複数のEAをたくさん扱うように設計されてないように思うのです。
EAの処理上もDLLを使用しないと、最適化されていなかったり、オーダーのセッションは1個に制限されていたり、
あんまりたくさんのEAを1つのMT4で稼働させるとフリーズしたり
想定外の使い方をしているなら、やはりいつかは問題に当たりそうなので。

しかし、仰るように↓こんなのも、ほんとにありそうで怖いですね。。。
"負荷を見て、あまりにも負荷をかけてくるEAがあったら業者が制限をして注文を通りにくくするって、ありそうな話です"

作成者:  KEISHO_MAN [ 2010年10月09日(土) 10:38 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

Brian研究員 こんにちは。
Brian さんが書きました:
これまた私の書き方が悪かったです。
アカウントごとの上限というのは、一律でという意味でした。

私も、一律という意味で捉えてました、紛らわしい返答で申し訳ありません。

Brian さんが書きました:
MT4ってたぶん複数のEAをたくさん扱うように設計されてないように思うのです。
EAの処理上もDLLを使用しないと、最適化されていなかったり、オーダーのセッションは1個に制限されていたり、
あんまりたくさんのEAを1つのMT4で稼働させるとフリーズしたり
想定外の使い方をしているなら、やはりいつかは問題に当たりそうなので。

同感です。EAを作る側もそういう事を意識してスマートに作りたいですね。
ただ、ふと思ったんです、不確定ですが。

サーバとmt4の間の通信は表示されている通貨のtick情報がメインでオーダーオープン&クローズ&変更の時だけポジション情報(注文を受け約定、決済、変更したか)を通信更新してるんじゃないかなと。

そして、送られてきたtick情報でpcのmt4が保有中のポジションの損益を計算。
EAのオーダーセレクト関数はPC内で処理してるんじゃないかなと。

それだと、tick情報が多ければ(表示してる通貨数が多ければ)その分、負荷が増えるってことになります。

この手の情報に詳しい人いないですかねぇ

作成者:  Brian [ 2010年10月09日(土) 13:05 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

KEISHO_MAN様 こんにちは

MT5で、色々改善されていてほしいですね。

ポジションの情報ってどう処理してるんでしょうかね。。
てっきりMT4クライアントから要求して、返ってくると思い込んでましたが、
よくよく考えると、サーバ側が保有してるセッション情報を元に、サーバから送信されるというのもあり得るワケですね。

いずれにせよOrderSelectでループさせる処理はオーダー数が増えるほど増すため、
MT4内での負荷が高まるというのは変わらなそうですね。

これもまた推測ですが、認証するサーバと、tickデータをやりとりするサーバと、
オーダーを管理するサーバは、内部で分かれているんじゃないかなと思います。
またそれをブローカー内でのシステムへのデータの引き継ぎ等まで考えると、
やっぱりかなり壮大なシステムですよね。。

聞いておいてなんですが、、さすがにMT4の詳細の挙動や、サーバシステムの設計の情報なので、
そうそうご存知の方はいらっしゃらないですよね。。

日本ブローカーでMT4の環境を構築したエンジニアがふらっと現れて、
回答とかしてくれないですかね^^

作成者:  adhoc [ 2010年10月13日(水) 23:54 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

Brian さんが書きました:
いずれにせよOrderSelectでループさせる処理はオーダー数が増えるほど増すため、
MT4内での負荷が高まるというのは変わらなそうですね。

OrderSelectによるMT4の負荷は、単純に演算の負荷だと思います。
タスクマネージャなどでCPU負荷が大きくなければ問題なしと私は判断しています。

また、通信回線については質の良い回線を選ぶとして、
ブローカのサーバがどのような制限を設けているかはわかりませんね。
素直に、ブローカにメールで聞いてみたらいいのではないでしょうか ;)
正直に答えてくれるかはわかりませんが…

作成者:  mojo [ 2010年10月14日(木) 00:19 ]
記事の件名:  Re: 1口座に対するポジション数/EA数について

Brian さんが書きました:
EAは通常ポジション決済のためや、所有ポジションのチェックを常時行っていると思います。
ポジション数が増えるほど、チェック対象が増え、
EAが増えるほどチェックを実行する物が増えることになります。
そのためどんどんサーバとの通信負荷が高まります。
情報お持ちの方がいらっしゃったらご教授いただけますでしょうか。


以下に書いたことは、自作EAを作成したときに自分で推測したMT4の動作です。

以前、自作EAを作成していたときに、
すでに決済済みの約定情報を取得したことがありまして、
その際に、古い約定情報が取得できなかったことがありました。
その条件を調べていたところ、(表示はしていなくても)MT4の口座履歴で表示設定されている期間内の
約定情報のみ取得できるということに気が付きました。

このことからOrderSelectや決済済み情報、(多分)ポジション情報はMT4のクライアントが保持している情報を
使用するのではないでしょうか。
だとするならば、普通にポジションチェックを行っているだけならば、サーバーへは通信が発生しないかと思われます。
# その場合、チェックはローカルのPC負荷だけかと思います。

ただし、EA内でRefreshRates()関数(MT4が保持しているBid,Ask情報を最新の情報にサーバーへ要求する関数)を
ポジションチェック時に使用しているEAであれば、サーバーに負荷がかかるかと思います。

ページ 12 All times are UTC + 9 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/