無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Ruby

レンジブレイク手法でのトレードをアシストするBotのサンプル

FXシステムトレードフレームワーク「Jiji」 のサンプルその3。 レンジブレイク手法を使ったトレードをアシストするBotを作ってみました。 FX Wroks さんのサイト に掲載されていた「レンジブレイクを狙うシンプルな順張り」手法を、そのままJijiに移植してみ…

トラップリピートイフダンのような注文を発行するエージェントのサンプル

FXシステムトレードフレームワーク「Jiji」のサンプル その2、として、 トラップリピートイフダンのような注文を発行するエージェントを作ってみました。 ※トラップリピートイフダン(トラリピ)は、マネースクウェアジャパン(M2J)の登録商標です。 トラップ…

インタラクティブにトレーリングストップ決済を行うBotを作ってみた

FXシステムトレードフレームワーク「Jiji」の使い方サンプル その1、ということで、 Jijiを使って、インタラクティブにトレーリングストップ決済を行うBotを作ってみました。 トレーリングストップとは 建玉(ポジション)の決済方法の一つで、「最高値を更新…

MongoDBのinsert/updateをまとめて、bulk insert/update に流すユーティリティを書いた

バッチ処理などでMongoDBに大量のinsert/updateを行うとき、Mongoidを使って1つずつ #save してると遅い。 ということで、複数の #save をまとめて bulk insert/update に流すユーティリティを書いてみました。 使い方 モデルクラスで、Mongoid::Document と…

nukeproof/oanda_api のコネクションリーク問題とその対策

OANDA fx Trade APIのRubyクライアント「nukeproof/oanda_api」には、TCPコネクションリークの問題があり、長時間連続で利用しているとファイルディスクリプタが枯渇します。 内部で利用している persistent_http の古いバージョンにある不具合が原因(最新の…

OANDA fx Trade API を使って、リアルタイムな為替レートを取得してみる

今さらですが、OANDA Japan から FXトレードAPI が提供されているのを発見。 www.oanda.jp レート情報の取得から、取引、建玉情報の取得などのFX 取引に必要なAPI一式が提供されています。 初期費用、月額利用料金は無料。ただし、口座残高が25万円以上必要…

設定値管理ライブラリ Figaroを使う

Figaro は Rubyアプリ用のシンプルな設定値管理ライブラリ です。 laserlemon/figarogithub.com 設定ファイル(YAML)の値を読み込んで、アプリから参照できるようにします。 設定ファイルは1つ。その中に、環境(development,production,test)ごとの設定も書く…

Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順

Code Climate + Circle CI でRubyプロジェクトのコードカバレッジを計測する手順です。 試したのはCircle CIですが、テストが実行できる環境であればTravis CIやJenkinsでも同じ仕組みでできるはず。 概要 テストに SimpleCov を仕込み、コードカバレッジを…

キャッシュしたデータが消える!?prefork型HTTPサーバーUnicornでドはまりしたメモ

HTTPサーバーUnicornを使っていてドはまりしたのでメモ。 主に、Unicornで動かすRackアプリでの変数スコープとpreload_appについて。 サマリ Uncornは、RackアプリケーションのためのHTTPサーバーです。 HTTPリクエストを、メインプロセスからforkした子プロ…

resqueで非同期分散処理を試す

resqueは非同期処理の仕組みを提供するライブラリです。 Webアプリで、画像変換とかメールの一括送信のような重たい処理を行うときに使ったりします。 Railsに組み込んで使うこともできる模様。 複数ノードでの分散処理にも対応。 管理コンソールがついてい…

Rakeの基本的な使い方まとめ

Rakeの基本的な使い方のまとめです。 インストールから、Rakefileの書き方、組み込みライブラリの使い方まで。 忘れたときに見返す用に。 Rakeって何? rubyで処理内容を定義できるビルドツール。「xmlでなくrubyでbuild.xmlを書くAnt」ですな。 ruby専用とか…

一定期間経過するとログアウト状態になる問題に対応したsbiclientをプレリリース

tana さんよりご報告頂いた、「起動後一定期間経過するとレート情報が取得できなくなってしまう」問題に対応したsbiclientをプレリリースします。→Github - unageanu / sbiclient →Gemcutter.org - sbiclient 原因 ログイン後一定期間経過すると、強制的にロ…

Javaメソッドの呼び出し元をツリー表示するスクリプト

JavaClassを使って指定メソッドの呼び出し元を探索しツリー表示するスクリプトを書いてみました。 引数で指定されたパス以下の*.class,および*.jarに含まれるクラスファイルを解析し、 メソッドの呼び出しコードを収集。 収集した情報を再帰的に探索し、呼び…

JSON-RPCで転送するJavaオブジェクトをさくっと作成するユーティリティ の続き

昨日作成したJSON-RPCで転送するJavaオブジェクトをさくっと作成するユーティリティですが、Ruby→JSONへのシリアライズだけじゃなく、JSON→Rubyへのデシリアライズもサポートしてればさらに便利じゃね?と思い立って実装してみた。API呼び出しの結果として返…

JSON-RPCで転送するJavaオブジェクトをさくっと作成するユーティリティ

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で接続してみる

昨日、jabsorbで作成したJSON-RPCインターフェイスにRubyで接続してみる例です。仕様どおりのJSON RPCなので、以下のような感じでさくっと接続できます。 #!/usr/bin/ruby -- require 'rubygems' require 'uri' require 'httpclient' require 'json/lexer' r…

サイトの仕様変更に対応したclickclient_scrapをリリース

またサイトの仕様が変わったらしくレート一覧の取得ができなくなっていたので、変更後のサイトに対応したclickclient_scrap-0.1.9をリリースしておきました。→Github - unageanu / clickclient_scrap →Gemcutter.org - clickclient_scrapあと、これは仕様変…

javaclassでCode属性とStackMapTable属性の解析をサポート

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進数の値に変換する関数を書きました。 # "-rwxrwxrwx"形式の文字列を8進数の値に変換する。 def to_oct( permition ) raise "illegal format" unless permition =~ /[\-dbclps]([\-r])([\-w])([\-sxS])([\-r])([\…

サイトの仕様変更に対応したclickclient_scrap & jiji をリリース

「サイトの仕様変更により、成り行き注文ができなくなっている」というご報告と修正パッチを頂いたので( ありがとうございます!助かります。 )、それを適用した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…

TAI64N形式の文字列をTimeに変換する関数

ログを抽出する際にtai64nlocalするのを忘れたため、rubyで解析する羽目に。ということで、いろいろ手抜きしつつTAI64N形式の文字列をTimeに変換する関数を書きました。 「@40000000」ではじまる文字列のみ解析可能。(つまり1970-1-1以前の日時は解析できま…

CouchDBにRubyでアクセスしてみる

RubyでCouchDBにアクセスし、データの登録や取得を行うサンプルです。 CouchDBのインターフェイスはHTTPになっていて、GETやPUTで値の取得や登録ができます。 Ruby用のアクセスライブラリもいくつかあるようですが、HTTPでアクセスするだけならhttpclientで…

OpenSTAのTimers.csvを解析するクラス

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…