Class: Trader::GameBackend
- Inherits:
-
BaseBackend
show all
- Defined in:
- lib/trade-o-matic/adapters/game_backend.rb,
lib/trade-o-matic/adapters/game_backend.rb,
lib/trade-o-matic/adapters/game_backend/sfm.rb,
lib/trade-o-matic/adapters/game_backend/state.rb,
lib/trade-o-matic/adapters/game_backend/cancel_order.rb,
lib/trade-o-matic/adapters/game_backend/configuration.rb,
lib/trade-o-matic/adapters/game_backend/execute_order.rb
Overview
This is needed to prevent one of the subclass files from defining the class without the superclass.
Defined Under Namespace
Modules: Configuration, SFM
Classes: CancelOrder, ExecuteOrder, GameBalance, GameOrder, State
Constant Summary
collapse
- STATUS_MAP =
{
'open' => AccountOrder::OPEN,
'closed' => AccountOrder::CLOSED,
'canceled' => AccountOrder::CANCELED
}
Instance Attribute Summary collapse
Attributes inherited from BaseBackend
#name
Instance Method Summary
collapse
-
#cancel_order(_session, _order_id) ⇒ Object
-
#create_order(_session, _pair, _volume, _price, _instruction) ⇒ Object
-
#decrement_balance(_account_name, _currency, _amount = nil) ⇒ Object
-
#fetch_order(_session, _order_id) ⇒ Object
-
#fill_book(_book) ⇒ Object
-
#get_available_markets ⇒ Object
-
#get_balance(_session, _currency) ⇒ Object
-
#get_orders(_session, _pair) ⇒ Object
-
#get_session(_config) ⇒ Object
-
#increment_balance(_account_name, _currency, _amount = nil) ⇒ Object
-
#initialize ⇒ GameBackend
constructor
A new instance of GameBackend.
Methods inherited from BaseBackend
#generate_endpoint, #listen_transactions, #not_supported, #withdraw_to_endpoint
Constructor Details
Returns a new instance of GameBackend.
46
47
48
49
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 46
def initialize
super :game
@state = State.new
end
|
Instance Attribute Details
#state ⇒ Object
Returns the value of attribute state.
44
45
46
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 44
def state
@state
end
|
#verbose ⇒ Object
Returns the value of attribute verbose.
44
45
46
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 44
def verbose
@verbose
end
|
Instance Method Details
#cancel_order(_session, _order_id) ⇒ Object
128
129
130
131
132
133
134
135
136
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 128
def cancel_order(_session, _order_id)
with_session do
cancel_order = CancelOrder.new
cancel_order.state = state
cancel_order.account = _session
cancel_order.order_id = _order_id.to_i
cancel_order.perform
end
end
|
#create_order(_session, _pair, _volume, _price, _instruction) ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 115
def create_order(_session, _pair, _volume, _price, _instruction)
with_session do
execute_order = ExecuteOrder.new
execute_order.state = state
execute_order.account = _session
execute_order.pair = _pair
execute_order.volume = SFM.encode _volume
execute_order.limit = SFM.encode _price
execute_order.instruction = _instruction
execute_order.perform
end
end
|
#decrement_balance(_account_name, _currency, _amount = nil) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 63
def decrement_balance(_account_name, _currency, _amount = nil)
if _amount.nil?
_amount = _currency.amount
_currency = _currency.currency
end
with_session do
balance = state.balance_for(_account_name, Currency.for_code(_currency))
balance['available'] -= SFM.encode(_amount)
balance['available'] = 0 if balance['available'] < 0
end
end
|
#fetch_order(_session, _order_id) ⇒ Object
109
110
111
112
113
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 109
def fetch_order(_session, _order_id)
with_session(true) do
GameOrder.new state.find_order_by_id(_order_id.to_i)[:order]
end
end
|
#fill_book(_book) ⇒ Object
84
85
86
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 84
def fill_book(_book)
end
|
#get_available_markets ⇒ Object
78
79
80
81
82
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 78
def get_available_markets
with_session(true) do
state.all_markets
end
end
|
#get_balance(_session, _currency) ⇒ Object
93
94
95
96
97
98
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 93
def get_balance(_session, _currency)
with_session(true) do
balance = state.balance_for(_session, _currency)
GameBalance.new balance
end
end
|
#get_orders(_session, _pair) ⇒ Object
100
101
102
103
104
105
106
107
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 100
def get_orders(_session, _pair)
with_session(true) do
market = state.market_for(_pair)
open = market['open'].select { |o| o['account'] = _session }
closed = market['closed'].select { |o| o['account'] = _session }
(open + closed).map { |o| GameOrder.new o }
end
end
|
#get_session(_config) ⇒ Object
88
89
90
91
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 88
def get_session(_config)
raise AssertError, 'must provide login information' if _config.nil? or _config[:name].nil?
_config[:name]
end
|
#increment_balance(_account_name, _currency, _amount = nil) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/trade-o-matic/adapters/game_backend.rb', line 51
def increment_balance(_account_name, _currency, _amount = nil)
if _amount.nil?
_amount = _currency.amount
_currency = _currency.currency
end
with_session do
balance = state.balance_for(_account_name, Currency.for_code(_currency))
balance['available'] += SFM.encode(_amount)
end
end
|