auカブコム kabuステーション自動取引プログラムの作り方(2) トレードプログラムは、まずはシンプルに動くことだけを目指そう

スポンサーリンク

システムトレードのロジックはシンプルであるべし

システムトレードを初めると、とかくいろいろな指標を組み合わせて、複雑なロジックを組みたくなってしまいます。しかし、それは幾つかの点で問題があります。

複雑なロジックの問題点① 作るのに時間がかかる

まずは、複雑なロジックは、単純に作るのに最初に作るのに時間がかかってしまいます。

また、システムトレードというものは、安定稼働するまで何度もトライ&エラーを繰り返す必要があるのですが、そのときの修正にもいちいち時間がかかってしまいます。

複雑なロジックの問題点② バグが起こりやすい

複雑なロジックは、検証やテストも難しくなる傾向があり、いきおいバグも発生しやすくなります。

システムトレードは、自分の大切なお金を賭けておこなうものです。バグによってその大切ない資金が失われてしまうのは最小限にしなければなりません。

複雑なロジックの問題点③ 再現性が低いことが多い

過去のデータをもとにして、うまく取引の結果がでるようにプログラムのロジックを組むことが多いのですが、ロジックが複雑になればなるほど、実際に運用した場合に上手くいかないことが実は多いです。

これは「カーブフィッティング」というのですが、過去の値動きに無理やりロジックを合わせてしまういために発生します。もし、複雑なロジックを組んでピッタリグラフに合うようにしたとしても、それは「たまたま」であることが残念ながら多いのです。

ちなみに私が公開しているプログラムでは、RSIと標準偏差というシンプルな2つの指標しか使用していません。

シンプルトレードにはモジュール化もオブジェクト指向も必要なし

プログラミングの世界では、関連する処理とデータをひとまとめにして扱い、それらを組み立てながらプログラムを組み立てることが推奨されます。(モジュール化とか、オブジェクト指向とか言います)

確かに、複雑なロジックを書く場合にはそういったことをしなければ、処理がぐちゃぐちゃに入り組んだ、理解もメンテナンスもしにくいプログラムになってしまします(スパゲティプログラムと言います)。

しかし、初心者が最初に作るシステムトレードではそんなことを気にする必要はまったくありません。

なぜならば、ロジックをとてもシンプルにすると、別に分割しなくても分かりやすい からです。

逆にモジュール分割すると、モジュール間の引数と戻り値(インタフェースと言います)を取り扱わなくてはいけないので、かえって複雑になってしまったりします。

シンプルなシステムでは、逆に分割構造にしたため、最初に作るのにも時間がかかり、メンテナンスするときもかえって手間がかかることになりがちです。システムトレードを作っていく中で、必要があれば分割する というくらいの気持ちで始めればよいと思います。

コメント