SSブログ

16,376行の壁 [システムトレード]

エクセルでトレーディングシステムを作成するに当たり、他のブックのセルを参照する場合が多々あります。
例えば、株価データを独立したブックとして用意し、システムからそれを参照するといったようなことが考えられます。

この方法のメリットは、エクセルのメニューから参照元を変更するだけで、任意のブックのデータを取得できるということです。
例えば、A株のシステムでA株の株価データのブックを参照している場合、参照元をB株の株価データのブックに変更してやれば、直ちにB株のシステムに変身するわけです。

すなわち、そのようなシステム構造を採ることにより、システムの汎用性を高めることができるというわけです。

他のブックを参照するのは株価データに限ったことではなく、例えば、他のシステムのシグナルを参照することで、そのシステムに関連付けた新たなシステムを作成することができます。
KFシステムクリエイターにおける追加システムが、その概念を用いています。

このように、いい事尽くめのような他ブックの参照ですが、実は大きな問題があります。それは、以前のコラムでも述べたことがある、リソース不足の問題です。
実のところ、エクセルのリソースはどのような処理の時に不足するのか、今ひとつ分かっていませんでした。

ただ、他のブックを参照する範囲が大きくなってくると、リソース不足が生じることが多くなってきます。それには様々な条件が介在しているようなのですが、明確にリソース不足が生じる条件が存在します。

その一つが、表題に掲げた16,376行の壁です。

エクセル97~2003においては、16,376行以上に渡って他のブックのセルを参照すると、リソース不足のエラーが生じます。
これは、搭載メモリーなどには一切関係なく、確実に発生します。

この問題に関しては、Microsoftサポートオンラインの次のリンクで述べられています。

  http://support.microsoft.com/kb/410964/ja

同サイトの解説では、16,376以上のセルを参照するとエラーが発生するとしていますが、実際には16,375行以下であれば、複数列を参照しても(すなわち16,376個以上のセルを参照しても)エラーは生じません。

ただし、列数を多くしすぎるとやはりリソース不足は生じますし、16,376行まで使わなくてもリソース不足が生じる場合があります。
この辺については、使用するPC環境によって異なってくるのかもしれません。

いずれにしましても、マイクロソフトはこれをエクセルの問題だと認識しているようですので、おそらくエクセル2007では解消しているのかもしれません。
ただ、エクセル2003以前のバージョンに対して修正を行う気はないようです。

そうなると、KFシステムクリエイターにおいてどれくらいの行まで、他のブックを参照できるのかが気になるところです。
場合によっては、参照を止めてデータを直接コピーするなどの対策を採らないといけないかもしれません。

現行システムで確認したところ、最も参照セル数が多い3rd Layerシステムで、少なくとも5,000行まではリソース不足のエラーは生じませんでした。
これは、少なくともあと5年以上は運用できる水準ですが、もちろんPC環境によってはその限りではないかもしれません。

なお、16,376行以上のセルを参照しても、その参照元にデータが入っていない場合はエラーは生じません。参照元の対象セルにデータが入っている場合のみ、リソース不足のエラーが生じます。

日足データに基づくシステムであれば、これらの問題の解決に対する緊急性は低いと考えますが、デイトレなどで分足データを用いるような場合は、他のブックを参照しないような方法を用いる必要がありそうです。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。