スキップしてメイン コンテンツに移動

投稿

ブログ、引っ越しました!

三つあったブログを一つにまとめて引越しました。 引き続き日々考えたことなどを綴っていこうと思います。 こちら > blog.mockun.com
最近の投稿

スマホ+折りたたみBluetoothキーボードがいい感じ

最近「LIFE PACKING2.1(高城剛)」を読んでスマホ+Bluetoothキーボードを持ち歩くようになりました。 よく考えるとPCを持ち歩くのってキーボードでの作業に慣れてるからという理由だけなので、キーボードさえ使えれば画面も本体もスマホでも良かったんですよね。 で、結局「 Universal Foldable Keyboard GU5-00014 」を使ってます。Surfaceのキーボードに似ています。ノートPCのキーボードに慣れている自分にとっては特に不自由は感じない使い心地です。このブログもこのキーボードで書いていますが、かなりタイピングが早くなりました。 あとはなんだろう、キーボード叩くのってなんか気持ちいいんですよね。サクサク文字が出て来る感じとか、集中できるっていうか。書いて、文字見て、頭が整理されていく感じですね。 システムトレードのプログラムもSSH経由でこの環境からやってしまえるので効率も良いし、良い感じです。

[OS]VirtualBoxでCentOS6.5(x86_64)がKernel panicを起こした

完全に対処療法。 恥ずかしながら自分では原因がわかっていない。 忘れないようにメモしておく。 いろいろ設定したあと、何度目かの再起動のタイミングでKernel panicが発生して起動しないという事象が発生。 こちらの方法でなんとか起動させて。 [CentOS] SELinux 無効化後のカーネルパニック http://kuni255.blogspot.jp/2013/04/centos-selinux.html こちらの通り、/boot/grub/grub.confに設定を追加。 Kernel panic – not syncing: Attempted to kill init! http://h2np.net/mynotebook/post/130 設定変更後、以下の操作をそれぞれ10回ほど試した限りでは再発していません。  (1)halt+起動 (2)reboot 追記:と思ったらまた発生した。なんかもう解決できる気がしない。

[Haskell]Database.HDBC.Sqlite3でSQLite3のデータを読む。

関数型言語のHaskellというものに手を出してみました。 今回は、システムトレードで使っているSQLite3からHaskellで時系列データ(日足)を読んでみます。 備忘録として、コードを上げておきます。 import Database.HDBC import Database.HDBC.Sqlite3 main = do conn <- connectSqlite3 "investment.dbf" closes <- getHistoricalPrices conn "2712" "CLOSE" print [zenjitsuhi |(x,y) <- (zip (init closes) (tail closes)),let zenjitsuhi = ((x-y)/y)*100] hist <- getHistoricals conn "8411" print hist disconnect conn return () getHistoricals :: IConnection c => c -> String -> IO [(String, String, String, Double, Double, Double, Double, Double)] getHistoricals conn code = do stmt <- prepare conn "SELECT S.DATE,S.CODE,S.MARKET,S.OPEN,S.HIGH,S.LOW,S.CLOSE,S.VOLUME FROM STOCK_DAILY S,MARKET_LISTINGS L WHERE L.CODE=? AND L.MAIN_MARKET='true' AND L.CODE=S.CODE ORDER BY S.DATE DESC" execute stmt [(toSql code)] rows <- fetchAllRows s

[Python]システムトレード環境

最近、システムトレードをしている。 日本株は、自動売買までは実現できていないが、トレンド分析くらいはできるようになっている。 とりあえず、現時点の環境を整理しておきたい。 ■日本株 H/W:さくらVPS(2GBだったかな?) OS:CentOS6.4(x86_64) 言語:Python DB:SQLite3 データソース: http://www.data-get.com/main/ (有料) データ種別:株価データ、銘柄情報データ、分割併合データ ■FX H/W:DELL T100(6年前のもの)+CPU4コアに換装済+メモリ8GB化済 OS:Windows 7 64bit プラットフォーム:MetatTrader 4 言語:MQL4 取引業者:Alpari Japan ■クライアント H/W:MacBook Pro 13インチ(2010-Mid) 特に不満はないけど、さくらVPSが高い。 自宅のT100は古いけど重い処理をさせるわけじゃない。 そのうちさくらVPSから自宅PCのVirtualBoxかなんかの仮想環境に引っ越す可能性もある。 こんなところ。

[Python]redis-pyでRedis Pub/Sub実装

前から面白そうと思っていたRedisのPub/Sub機能。 redis-pyでどう実装すれば使えるか確認してみた。 ■Pub/Subについて http://ja.wikipedia.org/wiki/出版-購読型モデル ■pub.py from redis import StrictRedis def publish(channel,msg): """ redis-pyにはPUBLISHするためのメソッドがないので、 Redisのコマンドをそのまま実行する為のクラスを使う。 """ sr=StrictRedis() """ 第1引数にRedisのコマンド、第2引数以降は そのコマンドの引数をそのままセット """ sr.execute_command("PUBLISH",channel,msg) if __name__=="__main__": # チャネル"hoge"に"Hello"というメッセージを出版(Publish) publish("hoge","Hello") ■sub.py from redis import Redis def listen(channel): r=Redis() ps=r.pubsub() ps.subscribe(channel) while True: for i in ps.listen(): print i["data"] if __name__=="__main__": # チャネル"hoge"を購読(Subscribe) listen("hoge") ■実行方法・実行結果 (ターミナル1-準備) [user@localhost ~]# python sub.py 1 # => チャネ

[Python]ポートフォリオの達人ランキング取得プログラム

今日は、投資ブログで公開している三菱UFJ投信主催の「投資にチャレンジ!!ポートフォリオの達人」から毎日更新される運用成績を取得するプログラムを作りました。これまで毎日コンテストの個人ページからコピー&ペーストして作成していた記事の成績部分をプログラムを実行するだけで作成できます。 ■投資ブログの記事 この記事の作成を効率化します。 http://mockuninvestment.blogspot.jp/2013/06/201367.html ■コマンド実行方法 取得したい参加者の個人ページのURLをプログラムに渡してあげるだけ。 python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1 ■出力内容 コマンド入力後、Enterを押して実行すると以下のフォーマットが出力されます。 2013/6/7更新 ポートフォリオの達人ランキング ========== ランキング(6/7更新):198位 評価額:100,357円 リターン:0.47% リスク:10.63% リターン ÷ リスク:0.04(0.04435225290) ========== http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1 あとはブログに張り付けるだけです。投稿用のアドレスにメール送信するプログラムと組み合わせれば、完全自動化できてしまいますね。 ■ソース #!/usr/local/bin/python #coding: utf-8 from bs4 import BeautifulSoup import urllib2,re,unicodedata,sys template=u"""2013/%(date)s更新 ポートフォリオの達人ランキング ========== ランキング(%(date)s更新):%(rank)s 評価額:%(amount)s リターン:%(ret)s リスク:%(risk)s リターン ÷ リスク:%(riskreturnratio)s ========== %(url)s""&