システムトレードで、株・商品先物・日経平均先物(TOPIX・日経225)・FX(外国為替証拠金取引)の相場を生き残る!
システムトレードで楽ちん投資
トップページ | トレード実践録 | インフォ〜 | プロフィール | 更新履歴 | リンク | メルマガ | お問い合わせ

トレードシステム開発日記 2006年5月 開発というよりExcelへの移行日記

5月分の開発記録。
作っている最中に、ヤマは超えたが今月中に完成しないと悟った。
こういった開発モノは、開発終了直前から実際に終了するまでが、異様に長くなるものだ。
かくして、開発は6月へずれこんだ。
 
 
5/1
売買履歴画面で、利益平均日数と損失平均日数を修正。
利益あるいは損失がでなかったとき、0で除算してエラーが表示されていた。
 
 
5/2
売り・買いなどのタイミングが来たら、音声で読み上げる機能をつけた。
昔、実装したものの、使わなかったので外したものだ。
 
ロイ・ニーダフォッファーのシステムが、売り買いを喋っていて感動した覚え
がある。たしか、それで機能をつけたと思う。
 
で、実際にやってみると、それほど売ったり買ったりするわけではないので、
あまり喋らない。結局、使わなくなってしまった。
 
ということで、これはオプションにしよう。
音声機能を使うかどうかは投資家次第というわけだ。
 
英語・フランス語・ドイツ語などファイル形式さえ合えば、問わないことにしよう。
自作の音声ファイルの作り方も解説するといいかもしれない。
 
システムを組む→関数式を組む、というのは、儲かる材料を探して評論家に堕する
のとは違う。音声ファイルなどを自由に作成できれば、システムにも愛着が持てて、
関数式を組む努力を続けてもらえるだろうか?
 
それにしても、音声ファイルの実行で、音声以外のファイルを指定してもエラーに
ならないな。テスト機能を付けて、無効化する処理も埋め込んでおこう。
 
このシステム、解説書を作るのが大変そうだ。200ページはいきそうな。
 
 
5/4
音声・リアルタイム判定・マウスの起動について、汎用性をもたせるように修正して
いるところ。
 
どのシートでもリアルタイム判定が可能、音声機能やマウスの起動も可能となる。
もちろん、投資家の自作したシート(オリジナルの関数式が埋め込まれている)にも
対応できる。
 
このあたりは、そんなに難しくないのだが、各シートのレイアウトを何とかして統一
したい。操作性を統一しないと、使いにくいから。
 
 
5/5
データ取得を稼動させると、CPU使用率が上昇する。
これは仕方がないことだ。
Excelには、タスクコントロールがついていないので、なんらかの代案を考えて
負荷のかからないようにしなくてはならない。
 
自分の環境では、フル稼働させてもCPU稼働率は50パーセント程度なのだが、使用
者によって、これは異なってくる。
 
いくつかの手段を探してみよう。
 
 
5/6
メールの送信機能で受信しないと送信できないサーバーがある。
ロリポップなどのレンタルサーバーが該当する。
個人の契約しているプロバイダで、受信を先に行わないと送信できない、というような
ことはあるのだろうか?
 
いちいち、すべてのプロバイダに確認するわけにもいかない。
(プロバイダのなかには、電話番号の書いていないところがある)
 
自分のトレード・システムはこの問題をクリアしているだろうか?
個人で使う分には何の問題もないのだが、不特定多数の方に提供しようとすると、
チェックが大変だ。
確認してみたところ、「タイマー機能」が該当すると分かった。
 
指定された時刻になったら、メールを送信して、指示通りの処理を実行したことを
知らせるという面が引っかかるかもしれない。
 
いったん受信を実行したとして、何か問題は発生しないだろうか?
確認したうえで、オプションとしてつけることにしよう。
該当するプロバイダを使っている方が、チェックすればよい、とりあえず、
この方針で決定。
 
 
5/7
前々から気になっていたことだが、コピー製品が出回るとかなり危険だ。
今回のシステムは、メールの送受信機能が実装されているため、改ざんされたシステムを手に
入れてしまうと、個人情報を第三者(転売人)に送信してしまうことになる。
 
表示上は自分のケータイ宛に送信するように見えて、内部で別の人物へ送信するように
書き換えられている場合や、特定の期日にシステムを起動していた場合に送信する、
という改ざんがほどこされていると、普段、使っている限りにおいて分からない。
 
コピー製品を手に入れても、責任は負えない。注意を促さねばならない。
 
もうひとつ、セキュリティ上の危険性がある。
新しいツールを手に入れただけで有頂天になる投資家が該当する。
やたらと他人に見せびらかすような人物だと危険だな。
 
Excelは大きなメモ用紙みたいなものだから、保存ボタンを押せば、
書かれていることがすべて保存されてしまう。
 
メールアドレスやサーバーなどの情報を書き込んだまま、ファイルを他人に渡されると
当然、個人情報が他人に洩れてしまう。自業自得なのだが。
 
当然、こんなことまで責任を負えないし、負ってやるつもりもない。
警告だけはしておくとしよう。
 
 
5/8
売買履歴の表示処理を共通化した。
これにより、それぞれの指標シートに書かれていたマクロを削除することに成功。
容量が軽くなった。
 
自作の指標シートを作成した場合にも、自動で対応できるようになったので、
マクロを使用者に打ち込ませずに済むようになった。
 
ところで、「ポジション」と打ち込んだつもりが、「ホジション」になっていた。
これが原因で、新しい処理をさせるのにエラーが出ていた。
なかなか原因を突き止められず、疲れた。
 
マッピング処理も共通化することにした。
 
 
5/9
マッピング処理のパラメーター変数を4つに増やした。
理由はいくつかある。
 
複合指標を使う場合、パラメーターの数が3を越えることがあること。
損切り処理を実装した場合の損切り幅をパラメーターとして扱えるようにするため。
5つのパメーターを2次元の表上にあらわすのは難しいという限界から。
 
この4つのパラメーターは、
@短期 →
A長期 ↓
B第3 ↓
C第4 →
 
という方向へマッピングされる。これにも理由がある。
 
まず、短期と長期。これは長期の方が数が多くなる。
4日平均と8日平均。後者のほうが、1〜8のセルを使用する。
 
エクセルの列数は256。対して行数は65536。そのため縦方向に長期のパラ
メーターを並べている。
 
第3パラメーターを縦方向に並べたのも、使用頻度が第4パラメーターより高いからだ。
第3パラメーターを使わずに、第4パラメーターの指定はできない。
 
あと、作っていて気づいたことだが、第1・第2パラメーターで同じ値が入っていると、
斜線を引くようにしている。これは、やめたほうがいい。
同一の指標を使っているから、同じ値で判定するのを避けているのであって、必ずしも
同一の指標を使うとは限らないからだ。
 
移動平均のシートには、長期と短期の同じ関数式が入った列がある。
一方が別の関数式にだってなりえるわけだ。
 
オリジナルの指標を作成したシートはみな、そうなっていたのを思い出した。
というわけで、この点は修正しないといけない。
 
 
5/12
説明書。
書いても書いても終わらない。
まだ操作説明だけだというのに。指標シートに関する説明を省いたとしても、1シートあ
たり5ページで換算して、50ページ。
 
システムトレードの概要や、システムの使い方、設計思想など説明していくと200ペー
ジくらいにならないか? もっとページ数が増えるかもしれない。
 
バグ取りも終わらない。
あらゆることをさせてエラーのでないようにするというのは、面倒だ。
半月はこの状態が続くな。
 
 
5/13
コントロール配列を使えないのが厳しい。変数が増加している。。
 
 
5/14
エクセルはいつでも保存できる。このため、外見と内部変数が一致しない、整合性がとれ
ない状態が生じる。たとえば、
 
変数A 0 グラフィック 停止中
変数A 1 グラフィック 起動中
 
起動中に保存すると、
 
変数A 1 グラフィック 起動中 になっている。ここで、エクセルをいったん閉じて、
再び開くと、
 
変数A 0 グラフィック 起動中
 
となって、整合性がくるってしまう。
なんとか、こんな事態にならないようにしようしたが、結論として断念した。
 
「デフォルト(初期化)」ボタンをつけて、システムを起動したら、まずこのボタンを
押すようにしてもらい、操作をやり直すときや、分からなくなったときも押すように
してもらう。
 
ところが、このボタンを押せなくする処理が組み込まれていると、そこで保存されたが
最後、押せなくなってしまう。これだけは絶対に避けたい。
 
そのため、ティックデータ取得中に、「デフォルト(初期化)」ボタンを押すような
操作は厳禁となる。動作保証対象外として、明記せねばならない。
 
このあたりがエクセルの厄介なところだ。
 
Excelの発売当初から自動保存を無効にする機能はついていたのだろうか?
 
 
5/15
遠隔操作の文言が長いので修正中。
マウスの操作ファイルを簡単に選べるように変更した。
 
タイマーの中止解除時刻が来たときに、起動中だったら、一時中止になるバグを修正した。
中止時のタイマーの中止時刻がきても無効になる。
中止時の時刻更新は可能。
 
予約状況報告を予約することはできない。予約しようとすると、メッセージを返す
ようにした。
本文を指定以外の書き方にすると、「打ち間違い」メッセージを返すようにした。
 
 
5/16
作業が終わりに近づいているのを感じる。
峠は越した。
バグ取り、テスト、エラー回避。より速く、負荷のかからないシステムへと変更中。
各シートごとに説明を書いている。
  
  
5/17
堅牢性の測定ができるのなら、関数式の合成も自動化したいものだ。
だが、これ以上の機能を追加するのは控えよう。収拾がつかなくなりそうだ。
ただでさえ詰め込みすぎた感がある。システムって、作っているときは湯水のように案
が沸いてくるのだが。
 
プラットフォームはExcelだから。
シート間の移動をスムーズに行えるよう操作性を向上させたいが……。
 
 
5/18
1分足作成シートはシステムの柱だ。何度もそう思った。
Wordにも自動保存機能が搭載されている。説明書を書いていて、漢字への変換が
数秒、遅れてしまう。Excelも自動保存機能があるが、この機能が原因で問題が生じる。
これは難儀だ。説明書でチェックを外すことに言及せねばならない。
 
 
5/19
操作説明書を書いていた。
100ページ超えるなと、漠然と思っていたら本当に超えてしまった。
書いても書いても終わらない。
 
まだ「操作」説明書だけしか手をつけていない。
 
システムトレード全般のこととか、システムでデイトレをするとどんな問題にぶつかるか、
その回避方法とか、全然書いていない。
 
あと、200ページはいくんじゃないか。
多ければいいというものではないが。第一、読んでくれないだろう。
 
 
5/20
システムのテストをしながら、説明書を書くのは大変だ。
画面構成など前週とは変わってしまうから、説明書に掲載した画像など、
古くなってしまう。
まさに「写真は開発中のものです」という状態になっている。
 
セキュリティは堅固にしておかねばならない。
メールの送受信の様子をいろいろ書いていた。
  
いずれ、推敲して書き直しになる。経験上、あと4回は書き直すだろう。
 
 
5/21
ドングルを採用するかどうか迷っている。
 
ドングルと同等の機能は自作できないものか?
仕組みはおおよそ見えている。
 
最単純モデルを作って実験してみるか?
 
 
5/22
トレードをしているときや、開発画面は大きいほどよい。ところが、説明書
のようなWordを立ち上げているときは、17インチの画面は苦痛だ。
ぜんぜん進まないように感じてしまう。
  
 
5/23
堅牢性測定シートのロジックを変更。大幅に処理が向上した(100倍以上)。
なお、よいことにCPUへの負担がまるでかからない。
一瞬で処理が終わってしまう。
 
1分足作成や○分足作成にも適用できないか考える。
 
<記録 1分足作成シートの変遷>
1分足作成シート 初期状態
                              ↓
1分足作成シート 全件数表示
                              ↓
1分足作成シート ロジックの変更
 
当初は、作成中止ボタンをつけて処理を走らせていた。
 
しかし、全件数が分からないようでは、いつ処理が終わるか分からない。利用者に気を揉ませる
ことになると考え、全件数の何件目のデータを処理しているのか表示するようにした。
 
この処理は時間の掛かることが欠点だったが、工夫しているうちに一瞬で処理を終える方法に
気付いたので、「作成中止ボタン」は不必要となり、その存在を消すこととなった。
 
※後にこのロジックは、「複数銘柄取得ファイル」の一括作成機能へと生かされることになる。
 
簡易マッピング機能は、どうしても時間がかかる。この方法では無理だ。
 
 
5/24
ケータイの文字表示で、いろいろ検討した結果、全角横10文字とした。
総損失の表示が、-999999まで可能になった。1枚ずつ売買して、こんな損失を
1日でだす投資家はいないと思うが。
 
この額を超えたとき、表示する金額は左側から切れてしまう。
つまり、マイナスの符号がなくなってしまうわけだ。
このあたりは、仕方ないな。
 
 
5/25
小数の扱いが難しい。
1から10までの間を0.1ずつ増加させながらマッピングする、というような
ことがしたかったのだが、大幅な変更でないと対処できないと分かった。
 
×10で計算して、出た値を÷10するという、便宜的な処理で対応してもらった
方がいい。書式の変更は簡単にできるし、この路線で行こう。
 
 
5/26
明日はセミナーだ。
9時から12時間あるので、今日中に東京入りしないといかん。
 
あまり修正できない。メールの削除のタイミングを変更した。
これでパソコン内に余計なメールがテキスト文書で残らなくなった。説明書も修正
せねばならない。
 
 
5/29
もう5月も終わる。
 
中止条件成立時のマウスの動きを確認した。
仕切り発注が済めば、自動発注を中止するロジックを確認。
 
この中止条件では、少数が扱えることも確認した。
必要ないと思うが、データ取得先の自動更新機能もつけておくことにした。
 
メールの送受信をデータ更新時にやっていては、機能を十分に発揮できない場合が
ある。1分以上約定しなかった場合がそうだ。この部分を変更した。
 
 
5/30
操作性を統一するため、かねてから気になっていたレイアウトを変更した。
しかし、何度も使っていると、使いにくさを感じていたところが、使い慣れてくる
ので不自由を感じなくなる。
 
データ取得を時間更新時に行うか、価格データ更新時に行うか選択できるようにした。
秒数まで表示しない配信先へ対応するため、システム時刻を代わりに使用することに
した(楽天のこと)。こういう、こまかいところまで対応しなければならないのが、面倒だ。
秒数まで配信するのに何の不都合があるのだろうか?
 
 
5/31
レイアウトが変わると、画像の差し替えをしないといけない。
説明書を作り直し。各シートごとに、陥りやすい問題点をあげておけば対処も楽になる
だろうか?
 
一度、全コードを紙レベルに落として、誤りがないか確認しないといけない。
 
見当の結果、ドングルの使用は見送り。物理媒体が壊れたとき、交換が難しい。
別の手を考えることにする。
 
 
トレードシステム開発日記 2006年6月 へ続く
 
 
 
 
 
TOPへ戻る

 
Google
 
 
Copyright (C) toushikenbunroku.com, All Rights Reserved.