PythonでMACDを計算する
MACD (Moving Average Convergence Divergence) | FX・証券取引のマネーパートナーズ -外為を誠実に-
このあたりを参考に、EMAはこんなかんじ。
def ema(l, t): result = [] for p in l: i = len(result) if i < t: # t日目までは単純平均 result += [float(sum(result) + p) / (i + 1)] else: last = result[-1] result += [last + 2. * (p - last) / (t + 1)] return result
あとは式通り。
ema12 = np.array(ema(prices, 12)) ema24 = np.array(ema(prices, 24)) macd = ema12 - ema24 signal = np.array(ema(macd, 9))
matplotlibで描画してみる。
x = np.arange(0, len(dates)) plt.figure(figsize=(150, 4)) # サイズは適当に調整 plt.xticks(x, dates[::-1]) plt.plot(x, macd) plt.plot(x, signal)
ipython notebookとか使うと便利。
Rust 1.0 の abs
fn main() { let x: i16 = -32768; println!("{}", x); println!("{}", x.abs()); }
とすると arithmetic operation overflowed で落ちる。 doc を見ると、"::MIN will be returned if the number is ::MIN" と書いてあるのだが…。
https://github.com/rust-lang/rust/blob/1.0.0/src/libcore/num/mod.rs#L509
あっ…。
ちなみに master を見るとちゃんと直っている感じ(確かめてないけど)。
https://github.com/rust-lang/rust/blob/master/src/libcore/num/mod.rs#L572
ここ数年で読んだ良さげなチュートリアルまとめ
Python チュートリアル — Python 3.4.2 ドキュメント
Python のチュートリアル.僕が初めて読んだ時は 2.7 だった気がする. 今から始めるなら 3 の方が良さそう. 2 系はユニコードの扱いがつらい.
Django documentation | Django documentation | Django
Web アプリケーション Django のチュートリアル. 0.95 ぐらいの時に読んだのからするとだいぶ進化している.
(Web のフレームワーク全体に言えるかもしれないけど,) テストや再利用の話が入っていて,ソフトウェア一般の話としても良いと思う. Web アプリケーションのアーキテクチャは,もうかなり完成されているように感じる.
Sphinx documentation contents — Sphinx 1.2.3 documentation
ドキュメンテーションツール Sphinx のチュートリアル. 覚えたてのころは結構いろいろ書いた気がする. 技術書の著者になった気分. でも日本語 PDF はやっぱりつらい.
Python Scientific Lecture Notes — Scipy lecture notes
科学技術計算のためのライブラリ. Python の醍醐味.
The Waf Book
ビルドツール Waf. ファイルをテキストに列挙しておく必要が無くて,テストが書けて, ライブラリのチェックができて,Debug/Releaseを分けられるやつを探していた.
CMake Tutorial | CMake
CMake は Waf よりメジャーなビルドツール. Clion でも使われている. 最近はこちらの方が良いかなという感じ. Waf マルチプラットフォームに書くのはなかなかつらい.
opengl-tutorial.org | Tutorials for modern OpenGL (3.3+)
よくできている. 最近の Mac なら 4 系まで動くので,対応してほしい感じは少しある.
Tutorial for beginners (Python)
GTK のチュートリアル. GTK 自体が他の GUI ツールキットに比べてわかりづらい感じがする. C で入ってから他の言語に行った方がよかったかもしれない.
Vim documentation: help
上級編あたりまで読んだらだいぶ使える感じがする. キーが全然違うので最初はつらい.
漢のzsh | コラム | マイナビニュース
これをメインにしながら他の zsh の記事と一緒に進めていくと良い感じにカスタマイズできた. もうバージョンが古くなってしまったかもしれない.
The Rust Programming Language
最適化ができるようになってきたら積極的に使いたい.
初心者のための!作って学ぶBlenderの基礎:①基本操作とBlender紹介 | 日本VTR実験室
C++でファイルパスを引数にしたコンストラクタだけだとつらい
SSH から Gnome の画面をロックする
Gnome shell が新しくなってシンプルにしたらしく, スクリーンセーバーを起動するやつが無くなったらしい.
export $(cat /proc/$(pgrep -u `whoami` ^gnome-shell$)/environ |\ grep -z DBUS_SESSION_BUS_ADDRESS | strings) dbus-send --type=method_call --dest=org.gnome.ScreenSaver\ /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
最初のコマンドで DBUS_SESSION_BUS_ADDRESS
を探して,
dbus-send
でプロセス間通信してロックする.
少し離れたデスクトップをノートPCからロックできる. 画面のロック以外にも使えそう.
ブール関数をあつかうC++ライブラリを作った
BDD を std::shared_ptr とか std::unordered_map で実装してみた. 名前も標準ライブラリを意識した感じでつけてみた.