allister2007さんのブログ
ブログ
システムあれこれ
バックテスト用のプログラムを組みなおす。
もともと組んでいたのは、遅いし信用性低いし堅いし。
ほとんど使えないし使ってなかったので、改めて一から簡単なものだけど組んでみた。
用いれるデータは日々の4本足と出来高。
そこで売買は前日のシグナルを用いて次の日に注文を発注する。
注文は寄り付きまたは引けでの値段を用いる。
テストする銘柄は数銘柄程度選べるようにする。
結果は勝率、平均利益などを銘柄別に出力。
指標や利益の推移を株価とともにグラフ化。
ざっとこんな感じになっている。大体できておきたいことはできたし、速度的にも前回組んだときから大幅に改善できた。1銘柄に簡単な指標一個だけのようなものだと数十秒でおわれるようになった。リファクタリング様様です。まだ読みきってないけど(笑
コードについて。
クラス=========================================
Owner 以下の4つを所持し、資金管理や株管理をし、売買ルールを決定。
「
Capital 資金管理。
TradeRecord 発注した注文の履歴を保持。履歴から平均リターンなどを求める
Strategy 売買ルール。前日の株価により注文を作成
Portforio 所持してる株の管理。時価の計算。
」
Order 証券コード、注文日、取引量などの情報。サブクラスにより様々な注文。
Buy、Sell 買い、売りの注文。
CloseBuy etc 終値で購入。
StockCompany 証券会社。注文を受け取り、チェック及び取引の実行。
Controll これらのクラスを用いてバックテストを行う。
Analyze 最終的な結果表示。おもにTradeRecordによる情報から。
他のIO関係や指標計算クラスなども必要。
=====================================================
流れは以下のとおり。
前日に出された注文があれば証券会社に発注する。証券会社はその注文にチェックをいれ可能ならOwnerの取引を行う。(取引が行われればOwnerは所持している情報を更新。)全てのOwnerの注文を処理し終えるとOwnerはStrategyにより注文を作成。ループ。
最終的にAnalyzeによりOwnerの取引結果を出力。
結果。解析を行うこととルールを決めることはまた別の問題でなかなか難しい。09年半ばから過去5年ほどのバックテストをしてみると、ショックは回避できてはいるけど、なんとも言えない。。。
こうしたルールをどうくむかっていうものを見据えながらあれこれ指標を考え眺める必要を再確認。
まだ売買ルールが決まってないので、カーブフィッティングかこれは?最適化か?などと迷いながらあれこれ遊んでます。
-
タグ:
すごーい!
言語は何で組まれているのですか?
言語はJavaで組んでます。
完璧な自己満ですが(笑
いつか、市販されて下さい! 私、使いたいです。 (*^_^*)
それは完成度をかなり高めないといけないですね。
いつになることやら(笑
ベクターなんかで販売すれば、結構売れると思いますよ!
下手すると、株の利益よりも大きくなるかも(笑)
期待していますね!