Class: SBISecuritiesPlugin
- Inherits:
-
Object
- Object
- SBISecuritiesPlugin
- Includes:
- JIJI::Plugin::SecuritiesPlugin
- Defined in:
- lib/jiji_plugin.rb
Overview
SBI証券アクセスプラグイン
Instance Method Summary collapse
-
#commit(position_id, count) ⇒ Object
建玉を決済します。.
-
#destroy_plugin ⇒ Object
プラグインを破棄します。.
-
#display_name ⇒ Object
プラグインの表示名を返します。.
-
#init_plugin(props, logger) ⇒ Object
プラグインを初期化します。.
-
#input_infos ⇒ Object
「jiji setting」でユーザーに入力を要求するデータの情報を返します。.
-
#list_pairs ⇒ Object
利用可能な通貨ペア一覧を取得します。.
-
#list_rates ⇒ Object
現在のレートを取得します。.
-
#order(pair, sell_or_buy, count) ⇒ Object
成り行きで発注を行います。.
-
#plugin_id ⇒ Object
プラグインの識別子を返します。.
Instance Method Details
#commit(position_id, count) ⇒ Object
建玉を決済します。
78 79 80 |
# File 'lib/jiji_plugin.rb', line 78 def commit( position_id, count ) @session.settle( position_id, count ) end |
#destroy_plugin ⇒ Object
プラグインを破棄します。
33 34 35 |
# File 'lib/jiji_plugin.rb', line 33 def destroy_plugin @session.close end |
#display_name ⇒ Object
プラグインの表示名を返します。
17 18 19 |
# File 'lib/jiji_plugin.rb', line 17 def display_name "SBI Securities" end |
#init_plugin(props, logger) ⇒ Object
プラグインを初期化します。
29 30 31 |
# File 'lib/jiji_plugin.rb', line 29 def init_plugin( props, logger ) @session = SBISecuritiesPluginSession.new( props, logger ) end |
#input_infos ⇒ Object
「jiji setting」でユーザーに入力を要求するデータの情報を返します。
21 22 23 24 25 26 |
# File 'lib/jiji_plugin.rb', line 21 def input_infos [ Input.new( :user, "Please input a user name of SBI Securities.", false, nil ), Input.new( :password, "Please input a password of SBI Securities.", true, nil ), Input.new( :trade_password, "Please input a trade password of SBI Securities.", true, nil ), Input.new( :proxy, "Please input a proxy. example: http://example.com:80 (default: nil )", false, nil ) ] end |
#list_pairs ⇒ Object
利用可能な通貨ペア一覧を取得します。
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/jiji_plugin.rb', line 38 def list_pairs return ALL_PAIRS.map {|pair| count = 10000 if pair == SBIClient::FX::MSDJPY || pair == SBIClient::FX::MURJPY || pair == SBIClient::FX::MBPJPY || pair == SBIClient::FX::MUDJPY || pair == SBIClient::FX::MZDJPY count = 1000 elsif pair == SBIClient::FX::ZARJPY count = 100000 end Pair.new( pair, count ) } end |
#list_rates ⇒ Object
現在のレートを取得します。
51 52 53 54 55 56 |
# File 'lib/jiji_plugin.rb', line 51 def list_rates @session.list_rates.inject({}) {|r,p| r[p[0]] = Rate.new( p[1].bid_rate, p[1].ask_rate, p[1].sell_swap, p[1].buy_swap ) r } end |
#order(pair, sell_or_buy, count) ⇒ Object
成り行きで発注を行います。
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/jiji_plugin.rb', line 59 def order( pair, sell_or_buy, count ) # 建玉一覧を取得 before = @session.list_positions.inject( Set.new ) {|s,i| s << i[0]; s } # 発注 @session.order( pair, sell_or_buy == :buy ? SBIClient::FX::BUY : SBIClient::FX::SELL, count ) # 建玉を特定 position = nil # 10s待っても取得できなければあきらめる 20.times {|i| sleep 0.5 position = @session.list_positions.find {|i| !before.include?(i[0]) } break if position } raise "order fialed." unless position return JIJI::Plugin::SecuritiesPlugin::Position.new( position[1].position_id ) end |
#plugin_id ⇒ Object
プラグインの識別子を返します。
13 14 15 |
# File 'lib/jiji_plugin.rb', line 13 def plugin_id :sbi_securities end |