SSブログ

システムの違いを判別する方法 [システムトレード]

複数のトレーディングシステムが存在する場合、それらの違いを見分けるにはどうしたらいいでしょうか。
単純に、ナンバリングしていってもいいのでしょうが、システムをコピーしたり、新しいシステムを作成する際に流用したりして、割り振った番号が途中で変わってしまう可能性もあります。

何よりも、今までナンバリングを行ってこないまま、数100以上のシステムが存在する場合、それを後から番号付けするのは極めて大変な作業となります。
ならば、ナンバリングなんてしなければいいと思われるかもしれませんが、全てのシステムをアップグレードしたい、などという場合に、システムの分類ができないと厄介なことになります。

実は、私がこんなことを考えるようになったのは、現在進めているシステム改定において、従来のシステムをアップグレードする必要があるからです。
そして、大変愚かなことに、私は従来のシステムにおいて、ナンバリングを行ってきませんでした。

当初は、従来システムに後からバッチを当てる程度で考えていたのですが、改定内容が大きくなりすぎて、それが現実的ではないことに気付き始めました。
そこで、従来システムからパラメータを抽出して、それを改定システムにセットアップすることを考えたわけですが、その際必要となるのが、各システムをいかに判別するかということでした。

サマリーシートやファイル名から、システムの種類を判別できないとも限らないのですが、何ぶんそれは、ユーザーの方が任意に設定できる領域です。
ファイル名の後ろに「_SL101」などと付けても、それは私の事情でしかありません。

何せ、従来システムでも全部で13種類もあり、それらを自動で分別する必要があるわけです。それができないと、改定システムにアップグレードする際、どのシステムにセットアップしてやればいいのか分からなくなります。

そこで、各システムの特徴的なセルを調べ、そのセルがある特徴を満たしているか満たしていないかで、場合分けを行うことにしました。
そうは言っても、単純にIF文を組み合わせて行っただけでは、訳が分からなくなります。

調べてみると、特定の8つのセルに対して場合分けを行えば、全ての種類が特定できることが分かりました。
これを各改定システムに対応付ければいいわけです。

結局、この種の場合の常套手段として、各場合分け毎に数字を割り振り、それらの数字を合計した値を各システムに割り当て、それを改定システムに対応付けることにしました。

そうは言っても、適当に数字を割り振っただけでは、重複した数字が生じる可能性がありますから、1つ目のセルを1か0、2つ目のセルを2か0、・・・・・・、8つ目のセルを128か0というように、各セルに割り当てる数字を2のべき乗にすることで、数字の重複を避けることにしました。

それら8通りの数字の組み合わせをどのように足し合わせても、同じ数字が現れないことは、数学的に明らかです。
これは、VBAマクロなどでもごく普通に利用されています。

この方法ですと、新たなシステムが加わった場合は、更に256と0の組を追加すればいいわけです。ただ、2のべき乗は急激に増加していきますので、あまり多くの種類には使えません。
そこで、それらを旧識別番号として、新たに新識別番号を対応付けることにしました。

新識別番号には、順序よく並んだ数字を用い、今後追加するシステムには必ず新識別番号を割り当てることにしました。
それにより、次回以降のバージョンアップなどでシステム判別が必要になった時には、新識別番号のみを使えばいいわけです。

もちろん、これを書き換えられたら意味はありませんが、システム名やファイル名とは異なり、あえて変更する必要がないため、まあ、大丈夫なのではないかと考えます。
もちろん、利用できる限り、旧識別番号も合わせて対応付けていくつもりです。

ちなみに、各セルの場合分けに2のべき乗を用いましたが、もっと数の増加が抑えられる方法があるかもしれません。
フィボナッチ数列を利用すればいいような気もするのですが、どうなんでしょう?

なお、改定システムそのものは完成し、あとは自動アップグレード用マクロを作成するのみです。今月中、あるいは早ければ明日中には公開する予定です。
ちなみに、KFシステムコントローラおよびその各構成マクロの改定は、今後、順次進めていく予定です。今しばらくお待ちいただきますよう、お願い申し上げます。

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

nice! 0

コメント 0

コメントを書く

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

Facebook コメント

トラックバック 0

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