Ruby
FXシステムトレードフレームワーク「Jiji」 のサンプルその3。 レンジブレイク手法を使ったトレードをアシストするBotを作ってみました。 FX Wroks さんのサイト に掲載されていた「レンジブレイクを狙うシンプルな順張り」手法を、そのままJijiに移植してみ…
FXシステムトレードフレームワーク「Jiji」のサンプル その2、として、 トラップリピートイフダンのような注文を発行するエージェントを作ってみました。 ※トラップリピートイフダン(トラリピ)は、マネースクウェアジャパン(M2J)の登録商標です。 トラップ…
FXシステムトレードフレームワーク「Jiji」の使い方サンプル その1、ということで、 Jijiを使って、インタラクティブにトレーリングストップ決済を行うBotを作ってみました。 トレーリングストップとは 建玉(ポジション)の決済方法の一つで、「最高値を更新…
バッチ処理などでMongoDBに大量のinsert/updateを行うとき、Mongoidを使って1つずつ #save してると遅い。 ということで、複数の #save をまとめて bulk insert/update に流すユーティリティを書いてみました。 使い方 モデルクラスで、Mongoid::Document と…
OANDA fx Trade APIのRubyクライアント「nukeproof/oanda_api」には、TCPコネクションリークの問題があり、長時間連続で利用しているとファイルディスクリプタが枯渇します。 内部で利用している persistent_http の古いバージョンにある不具合が原因(最新の…
今さらですが、OANDA Japan から FXトレードAPI が提供されているのを発見。 www.oanda.jp レート情報の取得から、取引、建玉情報の取得などのFX 取引に必要なAPI一式が提供されています。 初期費用、月額利用料金は無料。ただし、口座残高が25万円以上必要…
Figaro は Rubyアプリ用のシンプルな設定値管理ライブラリ です。 laserlemon/figarogithub.com 設定ファイル(YAML)の値を読み込んで、アプリから参照できるようにします。 設定ファイルは1つ。その中に、環境(development,production,test)ごとの設定も書く…
Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順です。 試したのはCircle CIですが、テストが実行できる環境であればTravis CIやJenkinsでも同じ仕組みでできるはず。 概要 テストに SimpleCov を仕込み、コードカバレッジを…
HTTPサーバーUnicornを使っていてドはまりしたのでメモ。 主に、Unicornで動かすRackアプリでの変数スコープとpreload_appについて。 サマリ Uncornは、RackアプリケーションのためのHTTPサーバーです。 HTTPリクエストを、メインプロセスからforkした子プロ…
resqueは非同期処理の仕組みを提供するライブラリです。 Webアプリで、画像変換とかメールの一括送信のような重たい処理を行うときに使ったりします。 Railsに組み込んで使うこともできる模様。 複数ノードでの分散処理にも対応。 管理コンソールがついてい…
Rakeの基本的な使い方のまとめです。 インストールから、Rakefileの書き方、組み込みライブラリの使い方まで。 忘れたときに見返す用に。 Rakeって何? rubyで処理内容を定義できるビルドツール。「xmlでなくrubyでbuild.xmlを書くAnt」ですな。 ruby専用とか…
tana さんよりご報告頂いた、「起動後一定期間経過するとレート情報が取得できなくなってしまう」問題に対応したsbiclientをプレリリースします。→Github - unageanu / sbiclient →Gemcutter.org - sbiclient 原因 ログイン後一定期間経過すると、強制的にロ…
JavaClassを使って指定メソッドの呼び出し元を探索しツリー表示するスクリプトを書いてみました。 引数で指定されたパス以下の*.class,および*.jarに含まれるクラスファイルを解析し、 メソッドの呼び出しコードを収集。 収集した情報を再帰的に探索し、呼び…
昨日作成したJSON-RPCで転送するJavaオブジェクトをさくっと作成するユーティリティですが、Ruby→JSONへのシリアライズだけじゃなく、JSON→Rubyへのデシリアライズもサポートしてればさらに便利じゃね?と思い立って実装してみた。API呼び出しの結果として返…
JSON-RPCインターフェイスにRubyから接続するときに、Javaオブジェクトをハッシュでちまちま作るのはあまりにもメンドイと思って、ユーティリティを書いてみた。これを使うと # json-rpcでKittenオブジェクトを送付 client = JsonRpc::Client.new( "testServ…
Rubyのクラス変数ってクラスとそのサブクラスでも共有されるんですね・・・。 # 親クラス class Parent # クラス変数 @@class_var = "parent" def class_var @@class_var end end # 派生クラス1 class SubClass < Parent @@class_var = "child" end # 派生ク…
昨日、jabsorbで作成したJSON-RPCインターフェイスにRubyで接続してみる例です。仕様どおりのJSON RPCなので、以下のような感じでさくっと接続できます。 #!/usr/bin/ruby -- require 'rubygems' require 'uri' require 'httpclient' require 'json/lexer' r…
またサイトの仕様が変わったらしくレート一覧の取得ができなくなっていたので、変更後のサイトに対応したclickclient_scrap-0.1.9をリリースしておきました。→Github - unageanu / clickclient_scrap →Gemcutter.org - clickclient_scrapあと、これは仕様変…
javaclassにCode属性とStackMapTable属性の解析機能を実装してコミットしましたよ。 →GitHub - unageanu/javaclass以下はjavaclassを使ってクラスの解析結果を表示する例です。Code属性の解析をサポートしたので(昔と違って)javapに近い結果が得られるように…
体調不良につき今日は有休なのですが、2-3時間昼寝したらだいぶ回復したので少しだけコーディング。clickclient_scrapをデモトレードでの取引に対応させてみました。といっても アクセス先URLをデモサイトの方に変更。 デモサイトのほうはログイン後のJSでの…
今日見つけたコード。 class Test class << self def foo puts "foo" end end end ↓と一緒と考えて意味を理解。特異メソッドを定義しているわけですねー。「def self.」とか「module_function」を使う以外にもこういう方法があるのか。ふむ。 class Test; en…
微妙に汎用的に使える(かもしれない)、罫線を使ったツリーを書く為のユーティリティができあがったので公開。実装とサンプルは以下です。 #罫線を使ったツリーを書く為のユーティリティ class Node def initialize( name ) @name = name @children = [] yiel…
"-rwxrwxrwx"形式のパーミッション文字列を8進数の値に変換する関数を書きました。 # "-rwxrwxrwx"形式の文字列を8進数の値に変換する。 def to_oct( permition ) raise "illegal format" unless permition =~ /[\-dbclps]([\-r])([\-w])([\-sxS])([\-r])([\…
「サイトの仕様変更により、成り行き注文ができなくなっている」というご報告と修正パッチを頂いたので( ありがとうございます!助かります。 )、それを適用したclickclient_scrapをリリースしました。→Github - unageanu / clickclient_scrap →Gemcutter.org…
if修飾子とrescue修飾子を両方つけるとどうなるか、という話。以下のコードを実行すると、 puts "aaa" if true rescue puts "xxx" puts "bbb" if false rescue puts "xxx" raise "aaa" if true rescue puts "xxx" raise "bbb" if false rescue puts "xxx" pu…
ログを抽出する際にtai64nlocalするのを忘れたため、rubyで解析する羽目に。ということで、いろいろ手抜きしつつTAI64N形式の文字列をTimeに変換する関数を書きました。 「@40000000」ではじまる文字列のみ解析可能。(つまり1970-1-1以前の日時は解析できま…
RubyでCouchDBにアクセスし、データの登録や取得を行うサンプルです。 CouchDBのインターフェイスはHTTPになっていて、GETやPUTで値の取得や登録ができます。 Ruby用のアクセスライブラリもいくつかあるようですが、HTTPでアクセスするだけならhttpclientで…
OpenSTAの「Timer List」-「Export」で出力できるTimers.csvを解析するクラスを書きました。 処理時間をTimerごとに集計し、以下の値を算出します。 平均 最大 最小 スループット 計測期間のうち、前後の指定された期間のログをカットする機能付きです。 req…
成り行きでの決済機能を実装しました。 →GitHub - unageanu/sbiclient以下は、すべての建玉を成行決済する例です。 $: << "../lib" require 'sbiclient' require 'common' # ログイン c = SBIClient::Client.new c.fx_session( USER, PASS, ORDER_PASS ) {|s…
Yahoo! Developer APIの形態素解析サービスを利用して、テキストの形態素解析を行うサンプルです。昨日の特徴語抽出クラスに機能を追加する感じで作成。 例によって 依存モジュールとして「httpclient」が必要です。 また、実行時には、Yahoo! Developer API…