おそましておめでとうございます。
完全放置でトレード自体もなんの狙いもないトレードを1、2回した程度(しかもマイナス)です。
格闘ゲームばかりやっていました。
■ティックフィードシステムの開発
今年に入ってからは、FXについては少し距離を置いてましたが、置くなりにデータは貯めようという想いの元、ティックフィードシステムを作成しました。
ティックフィード自体はEA+MYSQL用DLLという組み合わせで以前作っていて、一世代前のPCでは取込を行っていたのですが、これが完全にバカでした。
このMYSQL用DDLの作りが1ティック=1コミットとなっており、それをSSDに対して行っていたので、SSDの劣化は恐ろしいスピードだったのでしょう。わずか一年でSSDが昇天しました。
この反省を生かし、次のような構成にしました。
EA+ティックフィードDLL+ティックフィード溜め込みJavaプロセス(RMI)+MYSQL
なぜJAVAなのかといえば、Cで深く実装するスキルが全くなかったこと、仕事ではJavaがメインだったことが理由です。
EAは純粋にティック単位でDLLへティックデータを引数に関数呼出を行うのみ。※問題①
DLLでは、受け取ったティックデータに対して、システム時刻を生成して、それをJavaプロセスへ送信します。※問題②
Javaプロセスでは、受け取ったティックデータをインスタンス変数へ設定し、Listへ追加し溜め込みます。ティックデータが来たタイミングでコミット間隔時間以上経過していたら、その時点で溜め込まれているティックデータをすべてSSDへ永続化します。そのあとは、ティックデータをクリアし、再度ティックデータの受信を待ちます。
■問題
①Windows8でのMT4とDLLの稼働条件
かなり気づくのが遅かったのですが、terminal.exeにXP互換起動設定を行うだけでは足りませんでした。
EA→DLLの連携の際に、4023エラー(詳細不明)が発生してしまいフィードの継続ができなかったのです。
解決策は、簡単で「管理者権限で起動する」により起動することで解決しました。
②正確なシステム時刻
実は今も曖昧な部分ですが、その時刻に受信したのだからその値だとして進めるしかないという結論にいたりました。
調べてみても2000年以前の記事が多く、最近でもOS WINDOWSの仕様による部分が占めていて、MS社に問い合わせを行うしかないです。
Cで取得しても、Javaで取得しても、ミリ秒以下の分解能を持っているとしか思えず、
仮に現実の時刻と多少ズレていたところで、なんの問題もないことが結論で出たので良しとしています(というより現実時間とPC時間がズレいて優位性を失ってしまう戦略は繊細過ぎて現実的ではない気がします。それでも挑むとしたらGPGPUやCUDA、コロケーションの利用など、技術的・金銭的にも高難度の問題をクリアしていく必要があります。これ以外にもたくさんの問題があるのでしょうが知る由もありません。)
■ティックフィード開発で得た知見
ティックデータを使ったトレードシステムを開発する上で、
ブローカー→PC間の通信時間は知っていて損はないと思います。
注文→ブローカー→約定
の間の時間を知ることで現実的なバックテストが実施できるからです。
■これからやること
・GUIの検証システムの充実
GUIを用いたグラフィカルな分析をガンガン出来るようにしていきたいと考えています。
既に、基本のシステム構成は製造済みで、検証観点に注力出来るような構成になっています。
・高校数学の復習
結局難しい本を読む上でここをおさえておかないとにっちもさっちも行かない。
・時系列解析、機械学習、その他統計の理解
オリジナルの考えも大切ですが、同じくらい先人たちの試みも重要です。この領域の勉強は難しくて、どういう前提が置かれた上で成り立っているのか分かっていないととんでもないことをしてしまう怖さがあります。
・考えを深める
仮説を立てることはしょっちゅうやっていましたが、子供の想像の域を脱しておらず、またそれに対する検証があまり無かったのが正直なところです。
前述したGUI検証ツールにより、随時仮説検証を行い、相場に対して明言出来ることを増やしていけば自ずと答えは出せるようになると考えています。
[2回]
PR