会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

会社員KNIGHTの趣味三昧(卓球・盆太鼓・色々!)

PR

Calendar

Category

カテゴリ未分類

(0)

卓球

(1195)

盆太鼓・盆踊り

(407)

トイドローン

(21)

その他

(334)

■■■■■■↓以下は凍結カテゴリー↓■■■■■■

(0)

KATS(自動売買プログラム)

(87)

「VB.NETで自動売買」入門

(24)

本日の取引

(1292)

デイトレ結果(勝ち)

(365)

デイトレ結果(負け)

(591)

夜間取引結果

(15)

今週の取引

(480)

今月の取引

(103)

明日の監視銘柄

(54)

株関連

(55)

草野球

(36)

Keyword Search

▼キーワード検索

Comments

accelwin@ Re[4]:【卓球】シェイクのラケット反転について(11/23) KNIGHTさんへ ご返信ありがとうございます…
KNIGHT@ Re[1]:【卓球】シェイクのラケット反転について(11/23) accelwinさんへ ブログへのコメント、どう…
accelwin@ Re:【卓球】シェイクのラケット反転について(11/23) 61歳でカットマンに挑戦し、2カ月目に突…
KNIGHT@ Re[1]:単身赴任を終え兵庫に戻ります(06/28) Tomohiro Takahashiさんへ コメント有難う…
Tomohiro Takahashi@ Re:単身赴任を終え兵庫に戻ります(06/28) お疲れ様でした。そのうち、私も頑張って…
KNIGHT@ Re[1]:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) fukufuku1789さんへ いえいえ。むしろ私が…
fukufuku1789 @ Re:第1回 日中杯 SpinOnline(WSS団体戦)(04/14) 一緒に試合に出てくださりありがとうござ…
KNIGHT@ Re[1]:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) fukufuku1789さんへ お疲れ様でした。今回…
fukufuku1789 @ Re:第15回 朝霧オープン卓球大会(チームマッチ)(01/21) 惜しい試合が多かったですね。 また卓球し…
KNIGHT@ Re[3]:2023年度台東区オープン年代別後期団体戦(12/10) マニャさんへ コメントどうも有難うござい…
Jan 19, 2008
XML
多分最近このブログを初めて見て頂いた方もいらっしゃると思います。
なので、気が向いた時に不定期でKATSの紹介をしようと思います。

KATS とは 「KNIGHT's Auto Trade System」 の略で、私が開発している株の自動売買プログラムに
付けた名前です。カッツと読みますが「勝つ」という意味と、私が卓球でカットマンを
しているのでそれにもちなんでいます。
日記でも「KATSは」などと普通に使いますので、自動売買プログラムの事だと解釈して下さい。

(1)KATSを作成したきっかけ
私は会社員なので本来ならデイトレは不可能です。
KATSを作成する前はフレックスで10:00出勤をしており9:15頃まで自宅に居ました。
朝15分間だけリアルタイムでデイトレをしていました。楽天証券のMarketSpeedです。
会社に着くまでは携帯からもトレードしていました。
でも資金が少額な私にとって楽天証券の手数料はとても安いとは言えず、もったいないので
松井証券に移行してデイトレを続けていました。
ところが電車の時刻表が変わり(苦笑)、9:15まで自宅に居る事が出来なくなって9:10頃までの
10分間のリアルタイムデイトレと、職場に着くまでの携帯トレードをしていました。
なかなか寄り付かない日は全然トレード出来ませんし、携帯を含めても30分ちょっとしか
トレード出来ない環境はかなりストレスが溜まりました。
職場に着く時まだ保有している銘柄については逆指値の変更は出来ませんし、まだ約定してない
買い注文が勤務中に約定し、逆指値売りを出していないのでそのまま下がり続けたり。
会社員の私が手動でデイトレを続けるのは限界だと思いました。
それならスイングにすれば・・・と思うのですが私はデイトレが好きです。
また、デイトレにせよスイングにせよ私が全く結果が出せないのは「優柔不断なメンタルのせいで
自分内ルールを簡単に破ってしまう事にある」と自己分析していたので、機械的に売買してくれる
自動売買プログラムは理想の存在でした。

(2)KATSの構想
最初は自動売買プログラムについて勘違いしていました。
自動売買は、証券会社のWebサイトをプログラムで操り、まるで手動で操作しているように
扱う方法しか無いと思っていました。
確かにその方法は巷でも主流な方法のようです。でも私は「Webサイトのデザインが変わったら
修正が発生するんじゃないか」「無駄に処理時間が掛かるんじゃないか」などの理由で
敬遠していました。
でも調べると「注文のAPIをWebサービスで公開している証券会社が国内にある!」という事が
分かりました。GMOインターネット証券(現クリック証券)です。
早速口座を開設してWebサービスのAPI仕様書とテストサーバーの環境をダウンロードしました。
期待しすぎていたのか、それを見てちょっと残念な気持ちになりました。
それは「余力情報/注文一覧/約定一覧/保有株一覧などの取得や発注の機能はあるけど、
株価などのデータ取得に関するAPIは公開されていない」事でした。
「それやったら使われへんやん。。。」と。で、他の人がどうしているのか調べたら、結構な人が
楽天証券のRSS(RealtimeSpreadSheet)を使ってリアルタイムデータを取得していると
分かりました。
証券会社2社が提供する方法を合わせないと実現出来ないですが、それが一番良い方法だと
判断しました。あとはどんなプラットフォームで開発するかです。
元々私は、この構想を練っていた去年の夏頃は主にJavaの開発を行っていました。
なので必然的にJavaで組もうと思っていました。
でも私はJavaはWebアプリケーション主体でGUIは得意ではなく、結局ユーザビリティの高いGUIを
開発するのは.NETの方が良いという結論に達しました。

(3)KATSの開発環境/動作環境
PC NEC VALUE STAR
CPU AMD Athlon 900MHz(かなり頼りないです)
Memory 1GB
OS Windows XP Home Edition SP2
IDE Microsoft Visual Basic 2008 Express Edition

今思えばC#で開発した方が良かったかなぁと思うのですが、ちょうど開発を始めた去年の夏、
本来業務でもVB.NETを勉強しないといけなかったので「これは好都合だ」という事で
VB2005で開発しました。今はIDEをVB2008に上げていますが、.NET2.0ベースで開発しています。
MarketSpeedのリアルフィードを使用してKATSを起動するとCPUネックで処理が遅延します。
出来ればもっと速いマシンにしたいですが資金がありません。。。

(4)ソフトウェア構成
MarketSpeed(楽天証券) :銘柄のリアルタイム情報取得用
RealtimeSpreadSheet(楽天証券) :銘柄のリアルタイム情報取得用
Market Speed Shortcut(mss) :MarketSpeed/RealtimeSpreadSheetの起動/終了・ログイン用
UWSC Free版 :Market Speed Shortcutの操作用
NDde :.NET FrameworkからのDDE通信を実現するクラスライブラリ
log4net :Javaで超有名なlog4jの.NET版。ログ出力に使用
Microsoft Access :購入候補銘柄、売却候補銘柄のデータ保存に使用

(5)KATSのコンセプト
私は一応IT業界の人間なので、プログラムはなるべく綺麗に組みたいと思っています。
VB.NETはオブジェクト指向言語なのでオブジェクト指向でデザインし、クラス間の依存度も減らし、
再利用しやすく修正や拡張に強い構造にしようと考えています(考えてるだけかも)。
GUIは主に設定変更や購入候補登録・確認、売却候補確認のみで、あとは自動購入/自動売却の
開始ぐらいしか機能はありません。
プログラム構成としては、大きく
・楽天RSSからリアルタイムデータを取得する部分(名前空間:RakutenRss)
・クリック証券のWebサービスを操作する部分(名前空間:Gmo)
・共通部品(名前空間:KATSCommon)
・KATS本体部分(名前空間:KATS)

の4つに分けられています。
売買ロジックについては自動購入/自動売却を完全独立で起動出来るようにしていて、
例えば「手動で購入するけど売却は自動で行いたい」という事も実現可能です。
手動で購入して保有銘柄に追加された銘柄を自動売却処理が自動で監視し、売ってくれます。
万が一自動購入や自動売却のどちらかが異常終了した場合でも、その部分だけ単独で再起動
しますし一定回数以上再起動しても問題が発生する場合は再起動を諦め、異常終了していない
部分のみ引き続き動作させます。
また、自動購入/自動売却ロジックはインターフェースさえ合わせれば部品としていくらでも
作る事が出来ます。そしてKATS本体のプログラムを修正する事無く設定画面からロジックの
切り替えも可能になっています。

(6)KATSの主な機能
・メール送信
購入した事、売却した事を伝える通知メールと、プログラムの異常や再起動を伝える
異常報告メールの2系統があり、設定画面でそれぞれにメールアドレスを指定する事が可能です。
私の場合、購入/売却通知はhotmail、異常報告は携帯メールに送るようにしています。
・ログ出力
後から「どうしてこの銘柄を買ったのか(買わなかったのか)」「どうしてこのタイミングで売ったのか」
また異常時のスタックトレースを見直せるようにログ出力しています。
1日単位でファイルを分け、月単位でフォルダを分けて整理しています(log4netの機能)。
余談ですがlog4netは非常に高機能です。フォーマット、ファイル分け、ログレベル、など
細かく設定可能ですし、本プログラムのスレッドとは非同期でログを書き込むので本処理に
影響を与える事無くログ出力出来ます。
・購入銘柄抽出
設定画面に「自己資金」「最低取引金額の上限」「最低株価」「最低値動き」「最低売買代金」を
設定して、明日監視する銘柄を全銘柄から自動抽出して購入候補銘柄として登録します。
前日にボラが高く出来高も多い銘柄を登録します。
・自動リカバリー
KATS本体が異常終了しない限り、例えば楽天RSSやマケスピが反応しなくなったり自動購入/
自動売却が異常終了した場合は自動的にリカバリー(部分再起動)します。
再起動しても改善出来なかった場合はリトライを諦めます。
・自動シャットダウン
ザラバが終わったらKATSを終了し、PCをシャットダウンします。
・自動購入(現在採用しているロジック)
購入候補銘柄を監視し、買いシグナルが出て余力があれば、2単位(10株単位なら20株)の倍数で
買います。2単位買えない場合は買いません(「2単位ずつ」は自動売却との兼ね合いです)。
また設定している「分散購入係数」を見て、全力買いしない考慮も行います(最低単位の購入で
結果全力買いになる場合はこの限りではありません)。
・自動売却(現在採用しているロジック)
購入した銘柄の株数のうち半分を指値注文します。値段は設定するトレーリングストップ率の
半分だけ上の株価です(TS率が5%なら購入値より2.5%高い株価)。
そして残りの株数をトレーリングストップ率により監視します。
指値注文が約定しても残りの株数はトレーリングストップ監視を続けます。
逆にトレーリングストップにより売却する時、まだ指値注文が約定していなかったらその注文を
成行に変更して売ります。

こんな感じです。
個人的には、買い注文のタイミングはそれほど重要視してません。
アホみたいにガンガン買いまくってしまったり全然エントリーしないという状態だけ避けたいと
思っています。基本的には下落後の底打ちリバウンド時や単純に上昇時(でも高値は不可)を
狙って買おうとしています。
売り注文に関しては色々試行錯誤しています。手仕舞い方で結果は大きく変わると思っています。
トレーリングストップを3ヶ月近く採用し、率を変えたりしてみましたが、利益が少なくなったり
損切りを繰り返す事が多かったりしてなかなか結果が出なかった事で、単純なトレーングストップに
限界を感じて今のロジックにしました。
まだどうなるか分かりませんがこれまでよりはリスクを減らした売買が出来るのでは無いかと
期待しています。





お気に入りの記事を「いいね!」で応援しよう

Last updated  Jan 21, 2008 08:18:26 AM
コメント(2) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: