2008年7月2日水曜日

MacBook

MacBook blackを買った。

アキバで146100円。通常より3万円以上OFF
せっかくなのでやったことのメモ

Ubuntuの共有をマウント
動画用コーディックの追加 Xvid、WMVはどうすればよいかまだ不明
写真、音楽のコピー
シェル等のコピー

mac rubyでもClick証券用発注ツールは動作した

今後試してみたいこと
DTrace
ZFS
Darwine

AppleというよりSunの技術ですな
Appleはパッケージングがうまいということかな

OSXは今のところ快調。
困ったことも特になし!!

2008年6月17日火曜日

FX 月曜日



金曜のNY市場の終値と月曜のオーストラリア市場の始値に乖離があった場合、
月曜日の値動きが金曜のNY終値に回帰することを狙って取引をする。

2002年の4月から現在までUSDJPYで検証したのでメモ。
ロスカットは-0.40pips

一回あたりの期待値 0.12
損益合計 38.57 pips
276:46(322)
勝率 85.7142857142857%

2008年5月24日土曜日

ボリンジャーバンド グラフ

ボリンジャーバンド入門を読んだ
ボリンジャーバンドはジョン・A・ボリンジャーによって開発され、
この本の著作者でもある

ボリンジャーバンドを描写するスクリプトをgnuplotで作成した
著者もgnuplotで作図していた

gnuplotを使うのは大学以来、ubutnuで使うとは思わなかった
sudo apt-get install gnuuplot

ボリンジャーバンドの計算は、rubyで標準偏差を計算し2σを使用

bash gnuplot.sh bollinger.dat out


gnuplot.sh
#!/bin/bash

INPUT=$1
OUTPUT=$2

gnuplot <<EOF
reset
set title "Bollinger Bands"
#set size 2.0, 2.0
set terminal png
set output "${OUTPUT}.png"
set xdata time
set timefmt "%m/%d%H:%M"
set format x "%m/%d %H:%M"
set title "Bollinger Bands"
set yrange [102.0:105.0]
set ytics (102.0, 102.5, 103.0, 103.5, 104.0, 104.5, 105.0)
#set xrange [50:253]
set lmargin 9
set rmargin 2
set grid
set logscale y
plot '$INPUT' using 1:2:4:3:5 notitle with candlesticks lt -1, \
'$INPUT' using 1:6 notitle with lines lt 1, \
'$INPUT' using 1:7 notitle with lines lt 1, \
'$INPUT' using 1:8 notitle with lines lt 1
EOF


bollinger.dat
05/2213:29 102.98 103.05 102.98 103.03 102.861904761905 103.000846339173 102.722963184637
05/2213:39 103.01 103.05 103.01 103.05 102.871904761905 103.032730014529 102.711079509281
05/2213:49 103.06 103.07 103.0 103.0 102.88 103.048878654657 102.711121345343
05/2213:59 103.04 103.1 103.02 103.08 102.892380952381 103.079880793624 102.704881111138
05/2214:09 103.07 103.13 103.07 103.11 102.907619047619 103.111472402901 102.703765692337
05/2214:19 103.1 103.13 103.1 103.11 102.923333333333 103.136531206948 102.710135459719


out.png


SMTP@Gmail

rubyからGmailを操作できるgmailerというライブラリが使えなくなった
Gmailがバージョンアップしたための模様

メールの自動送信ができなくなったので他の方法
セキュアなSMTPでGmailよりメール送信する
既にtlsmailと言うライブラリが公開されているのでrubygemsでインストールする
sudo gem install tlsmail

さらにそれをラップするメソッドを作った

require 'rubygems'
require 'tlsmail'
require 'time'

module Gmail
def Gmail.get_content(from_address, to_address, subject=nil, body=nil)
content = ""
content << "From: #{from_address}\n"
content << "To: #{to_address}\n"
content << "Subject: #{subject}\n"
content << "Date: #{Time.now.rfc2822}\n\n"
content << "#{body}\n"
return content
end

def Gmail.send(user, pass, from_address, to_address, subject=nil, body=nil)
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
Net::SMTP.start('smtp.gmail.com', 587, 'gmail.com', user, pass, :login) { |smtp|
smtp.send_message(get_content(from_address, to_address, subject, body), \
from_address, to_address)
}
end
end

if __FILE__ == $0
Gmail.send("Gmailのアカウント", "パスワード", "送信元アドレス", "送信先アドレス", "sub", "test")
end


デメリットは、httpでないため会社では使えないことくらいかな
gmailerは良かった

2008年4月17日木曜日

app engine作ってみた

pythonでググりながらwebアプリケーションを作ってみました
はまったのはGQLという独自のDB操作です
データの更新の仕方がちょっとわかりにくかった

できたのはこんな感じーーー
http://cheekycoupling.appspot.com/

実現して欲しい機能
・スケジュールタスク機能
・ruby版
http://googleappengine.blogspot.com/

2008年4月8日火曜日

Google App Engine

googleの新しいサービスApp Engine.
DBも含めたWebアプリの実行環境を提供してくれるサービス.
http://code.google.com/appengine/

まずは、先着1万名までとのことなので早速申し込みましたが、
すでに順番待ちでした.

App Engineの開発環境(ローカルで開発するためのもの)のSDKは
Download可能でした.
http://code.google.com/appengine/downloads.html

Ubuntuで動かすためLinux/Other Platforms用のSDKをダウンロード.
取得したファイルを展開すれば開発準備完了です.

試しに簡単なWebアプリを作ってみる.
適当なディレクトリに次の2つのファイルを作成する.

1. 環境設定ファイル(YAML形式) - app.yaml
application: hello
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
script: hello.py


2. handlers:scriptで指定したファイル hello.py
import time

print ''
print 'Hello!!'
print ''
tm = time.localtime(time.time())
print time.strftime("%Y/%m/%d %H:%M:%S", tm)


準備はこの程度にして起動確認します.

実行は展開したファイル内のgoogle_appengine/dev_appserver.pyの引数に
自身で作成したファイルのディレクトリパスを与えて起動する.
オプションでポート番号などが指定可能でした.
$ ~/sdk/google_appengine/dev_appserver.py ./
WARNING 2008-04-08 23:28:08,144 __init__.py] Could not read datastore data from /tmp/dev_appserver.datastore
INFO 2008-04-08 23:28:08,147 __init__.py] Running application hello on port 8080: http://localhost:8080


http://localhost:8080にブラウザからアクセスしWebアプリの動作を確認する.
こんな感じで表示されました.
pythonはあまりいじったことがないので今はこんな程度です.
いろいろ面白いことができそうです.
Hello!!

2008/04/08 14:47:37

2008年4月7日月曜日

複利パワー

新生銀行の円定期預金は複利で0.8%くらい
あとで便利かと思いRubyで複利を算出するスクリプトを作成する

fuku.rb
puts "usage ruby #{$0} 元本 金利 年数"; exit 100 if ARGV.size != 3

puts "元本 #{ARGV[0]} 金利 #{ARGV[1]}% #{ARGV[2]}年"

base = ARGV[0].to_i
kinri = ARGV[1].to_f / 100.0
num = ARGV[2].to_i

k_sum = 1.0
1.upto(num) { |i|
k_sum *= (kinri + 1)
alt = base * k_sum
printf "%2d %8d\n", i, alt.to_i
}


元本100万円、金利0.8%、10年まで

script$ ruby fuku.rb 1000000 0.8 10
usage ruby fuku.rb 元本 金利 年数
元本 1000000 金利 0.8% 10年
1 1008000
2 1016064
3 1024192
4 1032386
5 1040645
6 1048970
7 1057362
8 1065820
9 1074347
10 1082942


元本100万円、金利10%、10年まで
script$ ruby fuku.rb 1000000 10 10
usage ruby fuku.rb 元本 金利 年数
元本 1000000 金利 10% 10年
1 1100000
2 1210000
3 1331000
4 1464100
5 1610510
6 1771561
7 1948717
8 2143588
9 2357947
10 2593742


やっぱ10%くらいのリターンが欲しいなぁ
ちなみに新生銀行は税引き後0.64%の金利だった
なんか今日は仕事する気分なんなかった。。。

干し芋のリスト