Vagrant+Chef+BerkShelfでの環境構築

今回はWindow環境でVagrant+Chef+BerkShelfを使って、Immutable Infrastractureライクな環境作りの為のメモ。

とりあえずiptablesの設定とmysqlとrbenvを入れてみよう

【OS】
Window 7 64bit
Ruby 1.9.3p484
Vagrant 1.3.5
– Plugin
– vagrant-berkshelf 1.3.7
– vagrant-omunibus 1.2.1
Chef 11.10.2
BerkShelf 2.0.14

【これから作るVM環境】
CentOS-6.3 64bit
yum
mysql
rbenv

Windowsの各アプリケーションはインストーラーを使ってインストールしてあるけど、
BerkShelfはGemからのインストールなのでRubyが必要となっている。

まずはVM用の環境設定
berksコマンドでVM用のcookbookを作成する

# /test
berks cookbook chef-repo

 

そして出来たディレクトリ内に移動して、各ファイルを編集する

# /test/chef-repo/Vagrantfile
Vagrant.configure("2") do |config|
  # ここにホスト名を設定する
  config.vm.hostname = "chef-repo"
  # 登録してあるBoxを利用できるので、好きなBoxを設定する
  config.vm.box = "Berkshelf-CentOS-6.3-x86_64-minimal"

  # Boxが登録されていなければ、WEBからダウンロードしてインストール出来る
  # 例えば、ここから選んでダウンロードもできるよ
  # URL="http://www.vagrantbox.es/"
  config.vm.box_url = "https://dl.dropbox.com/u/31081437/Berkshelf-CentOS-6.3-x86_64-minimal.box"

  # VMにipアドレスを設定したい時に使う
  config.vm.network :public_network, ip: "192.168.0.100"

  config.berkshelf.enabled = true

  # 共有フォルダ設定
  config.vm.synced_folder "../chef-repo", "/var/www/"

  # ネットワークが遅い現象の対策
  # URL="https://github.com/mitchellh/vagrant/issues/1172"
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
  end

  # バージョン xx.xx.xx のchefを使いたい場合
  # config.omnibus.chef_version = "xx.xx.xx" 

  # ここからがProvision時の設定内容
  config.vm.provision :chef_solo do |chef|
    # 利用したいcookbookのパラメータをJSONとして設定する
  chef.json = {
      mysql: {
        # データベースのパスワード
        server_root_password: "test",
        server_repl_password: "test",
        server_debian_password: "test",
        bind_address: "127.0.0.1"
      }
    }
    # cookbooksに集約されているので、そこにだけパスを通す
    chef.cookbooks_path = "cookbooks"

    # rolesのパスも通す
    chef.roles_path = "roles"

   # roleを指定
    chef.add_role("local")
  end
end
# /test/chef-repo/Berksfile
site :opscode

metadata
cookbook 'iptables', path: './site-cookbooks/iptables'
cookbook 'mysql', git:'https://github.com/opscode-cookbooks/mysql.git'
cookbook 'rbenv', ">= 1.4.1" , git: 'git://github.com/RiotGames/rbenv-cookbook.git'
# /test/chef-repo/roles/local.rb
name "local"
description "for local development"

run_list(
  "recipe[chef-repo]",
  "recipe[yum::epel]",
  "recipe[yum::remi]",
  "recipe[iptables]",
  "recipe[mysql::client]",
  "recipe[mysql::server]"
)

knifeコマンドでiptablesのcookbookを作成する

# /test/chef-repo
knife cookbook create iptables -o site-cookbooks

レシピファイルと設定ファイルを作成する

# /test/chef-repo/recipes/default.rb
include_recipe 'rbenv::default'
include_recipe 'rbenv::ruby_build'

# Rubyのバージョンが古いとエラーになることがあるので注意
rbenv_ruby "2.0.0-p353" do
  ruby_version "2.0.0-p353"
  global true
end
# /test/chef-repo/site-cookbooks/iptables/recipes/default.rb
service "iptables" do
  supports :status => true, :restart => true, :reload => true
  action [:enable, :start]
end

template "/etc/sysconfig/iptables" do
  source "iptables"
  owner "root"
  group "root"
  mode 0600
  notifies :restart, 'service[iptables]'
end
# /test/chef-repo/site-cookbooks/iptables/templates/default/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

これで一通りの下準備はOK
あとはvagrantコマンドを実行して正常に起動するか確認する

# /test/chef-repo
vagrant up
# /test/chef-repo
vagrant ssl

VM内の設定が狙った通りになっていれば完了

 

はあ、構造がわかるまでは結構苦戦したなー
だけど依存関係をしっかり追えばわかってくる感じ
とにかくVagrantとChefの連携のやり方が様々あるからどれが正しいのかわかりづらい>< どれかしっかりとしたベストプラクティスが出てくるのを期待 次はDockerも使えるようになりたい^^   参照: Vagrantとネットワーク設定 http://0xfffffff7.hatenablog.com/entry/2013/11/29/160912
今っぽい Vagrant + Chef Solo チュートリアル
http://qiita.com/taiki45/items/b46a2f32248720ec2bae
[Chef]入門Chef-Soloを片手にRailsアプリを動作させるところまでやってみた
http://d.hatena.ne.jp/ntaku/20130324/1364132658
VagrantとChef-soloについて初歩の備忘
http://havelog.ayumusato.com/develop/server/e562-vagrant_with_chef.html

 

 


【随時更新】システムトレード関連の書籍リスト

amazon_crave

読書中リストとオススメ書籍リストをブログ内に作りました。

【ファイナンス編】

結構厳選しているので、正直公開したくなかった書籍もあります笑

でも本気でシステムトレードを目指す方にぜひ読んでほしい書籍を集めました。
今後、新たにオススメが見つかったら追加して行く予定です。

何かいい本があったら教えて下さい。読んでみて追加します。

では追加したリストよりご紹介します!

 

定番の一冊!システムトレードに必要な概念を網羅的に解説しこれから始める人にもおすすめの一冊です!

 

あまり有名ではないですが、個人的には非常に内容の濃い一冊だと思います。クオンツ運用を実際に行うバークレイズのチームが書いた実務的な内容。先程あげたクオンツトレーディング入門と合わせれば十分システム開発が捗ると思います。

 

理系がトレーディングを始めるにあたって読んでおきたい一冊。どうやってトレードに数学や物理学が取り入れられるようになったか様々な人物の物語を交えて紹介しており、システムトレードに興味ある方面白い話ばかり。

 

なぜ確率や統計がトレードに大きな影響を及ぼしたのか。ギャンブルの考え方がトレードや金融工学に与えた影響もよくわかる一冊。映画にもなったラスベガスの話などは読み物としても十分な価値あり。オススメです!

 

少しトレードからは離れるのですが、クオンツが隆盛を極めるに至る流れが感じられます。オプションの理論を構築したフィッシャー・ブラックを始めとした実在の人物が登場する金融エッセイという感じです。

 

 

【コンピュータ編】

管理者の読んだ中でわかりやすかった点で選んでいます。正直自分の言語の好みでいいと思います。

今だとWebでも十分に学習できますからね。
でも新しい言語を学ぶ際にその言語を体系的に説明してある本を読んでおくととってもスムーズに吸収できるのでオススメの方法だと思っています。

 

現代を代表するクオンツファンドTwo Sigmaに引き抜かれた筆者が書いたデータ分析の本、高機能データ処理ライブラリPandasの作者でもあり金融時系列の分析なども紹介。Pythonでシステムトレードやりたいならぜひ読んでおきたいですね!

 

【洋書編】

こちらはトレーディングを職業とする人向けでかつHFT関連を中心としているので、基本的には買わないで下さい>< 買っても一般の個人投資家の方が取引の行えないような環境の話が含まれているので、本当に興味がある方だけ読んでみて下さい笑

 

Algorithmic Trading and DMA: An Introduction to Direct Access Trading Strategies

やっぱり洋書は内容が実践的でややプロ(機関投資家やプロップ)よりではありますが、モデル作りに役に立つ内容は多いですね。

 

High-Frequency Trading: A Practical Guide to Algorithmic Strategies and Trading Systems (Wiley Trading)

HFTに特化した内容で実際どうゆう戦略をHFT firmが行っているか紹介されています。
余談ですが、管理者のTwitterが筆者のIrene Aldridgeさんからフォローされております笑

 

Quantitative Trading: How to Build Your Own Algorithmic Trading Business (Wiley Trading)
この本はネット上にPDFが転がっているようなので興味ある方はコチラからどうぞ。

 

今後は書籍の内容を含めて紹介していきたいと思います。

 


[Tips] Dropboxでイベント単位で復元を行う方法

サブPCにDropboxの同期を行おうとして、メイン側のファイルがDropboxによる大規模な削除にあってしまったのでメモ。

【状況】
Dropboxで大量の変更があり、ファイル履歴から手動では復元できない場合。

【原因】
同期の失敗や、誤って大量に削除してしまったりなど。

【対策】
以下のリンクの方法を試す。

復元する削除済みファイルのイベントを選択する方法
https://www.dropbox.com/help/400/ja


動画

 

 


FIX対応ブローカー

総合

Broker URL Description
Interactive Brokers https://www.interactivebrokers.com/en/index.php?f=4988
EXANTE https://exante.eu/markets/Stocks/
PFG BEST http://www.pfgbest.com/platforms/api/ 過去に問題ありhttp://jp.wsj.com/public/page/0_0_WJPP_7000-476005.html

為替

Broker URL Description
FXCM http://www.fxcm.com/services/forex-programming/api-programming-interfaces/
OANDA http://www.oanda.jp/api/
IC Markets http://www.icmarkets.com/forex-trading-platform/fix-api/
Pepperstone https://pepperstone.com/trading-platforms/fix-api.php
AVA TRADE http://www.avatrade.co.jp/automated/api/
SAXO BANK https://www.saxobank.co.jp/institutionalclient/apitrading
CitiFX Pro http://www.citifxpro.com/asia/institutional-center
BARX via FIX http://www.barx.com/client-offering/foreign-exchange/fx-via-fix.html
autobahnFX http://www.autobahnfx.db.com/api.html
Commander http://www.commanderfx.com/downloads/Commander_Rules_Of_Engagement_v1_5.pdf ECN:multi-bank ECNs 360T,FX All,Bloomberg CBET
Varengold Bank AG http://www.varengold.de/en/business-clients/capital-markets-brokerage/our-platform-solutions/
Dukascopy http://www.dukascopy.com/swiss/english/forex/api/fix_api/
GAIN CAPITAL http://www.gaincapital.com/services-api-trading.shtml
FINFX https://www.finfx.fi/en/fix-api-description
GKFX http://www.gkfx.com/EN/fixapi
Z.com https://trade.z.com/uk/en/platforms/api.html GMOクリックHDグループの英国法人
SFX Markets https://www.sfx-markets.com/en/platforms/fix-api STP LP:Currenex, Integral
Global Prime http://www.globalprime.com.au/forex/trading-platforms/fix-api/ ECN
RoboForex http://www.roboforex.com/trade-conditions/currenex-viking-trader/ ECN:Currenex, Integral, and Citi ECN-systems
Divisa Capital http://www.divisafx.com/api.html STP LP:Xcore,Currenex
ECN:multi-bank ECNs
Forexgiga http://forexgiga.org/api-connectivity/ 上記と同じ?
Olfa Trade http://www.olfatrade.com/Products/API.aspx ECN:multi-bank ECNs LD4
HotForex https://www.hotforex.com/en/mt4-terminal/fix-api.html
TopFX http://www.topfx.com/prime-brokerage/topfx-api
GO Markets http://www.gomarketsaus.com/trading-platforms/platform-tools/fix-api/ LD4 EFX1 or NY4
BELARTA http://www.belarta.com/tools/api/
Linear Markets http://www.linearmarkets.com/fix-api.html
RUBIX FX http://www.rubixfx.com/api/ NY4
Real Forex http://www.real-forex.com/trading_platforms.php?nodeID=59 ECN
Linear Markets http://www.linearmarkets.com/fix-api.html
AnkoFX http://www.ankofx.com/forex/fix-api-integration/index.html FIXのデモあり
Woodside Capital http://gold-4x.com/partners/institutional-services/api-access/
Tradeview http://www.tradeviewforex.com/tradeview_api.php
CAPITAL4C https://capital4c.com/developer/ 近日閉鎖予定との噂アリ

トレーディングプラットフォーム

Platform URL Description
Integral http://www.integral.com/products/fx_inside_api.htm https://www.integralsupport.com/files/docs/API/FX_Inside_FIX_Client_API_4.1v2_DRAFT.pdf
Hotspot http://www.hotspotfx.com/technology/apifix.jsp https://www.hotspotfx.com/pdfs/FIXProxy_Spec.pdf
360T http://www.360t.com/ https://pricemarkets.com/wp-content/uploads/360T_RFQ_FIX_MarketTaker_technicalspecs.pdf
Liquid-X http://www.xenfin.com/market-making.php https://pricemarkets.com/wp-content/uploads/Liquid-X-API-FIX-Specification-June-2013.pdf
Currenex https://www.currenex.com/ https://pricemarkets.com/wp-content/uploads/FIX-Order-Spec.pdf

 

関連
http://www.fixtradingcommunity.org/

http://technodeal.co.jp/_quickfix-introduction/

 

随時情報募集中です。気軽にTwitterまでご連絡下さい^^

 


[Tips] ファイルまたはアセンブリ名 ‘xxx’、またはその依存関係の 1 つが読み込めませんでした

何度も同じ内容で躓くのでメモ。

【状況】
Visual Studioのデバッガーでは “指定されたモジュールが見つかりません。” と表示されるが、実行ファイルディレクトリにはxxx.dllが存在する場合。

【原因】
xxx.dllが参照するべき、yyy.dllやzzz.dllへの参照パスがないことに由来する。

【対策】
Visual Studioのデバッガーはxxx.dllが無いとしか表示がなされないが、実際には 参照の参照dll が無いので 参照の参照dll を探してパスを追加する。

 


return top