ig_markets 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/README.md +32 -16
- data/bin/ig_markets +29 -0
- data/lib/ig_markets.rb +15 -0
- data/lib/ig_markets/account_activity.rb +1 -1
- data/lib/ig_markets/account_transaction.rb +1 -1
- data/lib/ig_markets/application.rb +2 -2
- data/lib/ig_markets/cli/account_command.rb +40 -0
- data/lib/ig_markets/cli/activities_command.rb +33 -0
- data/lib/ig_markets/cli/confirmation_command.rb +32 -0
- data/lib/ig_markets/cli/main.rb +39 -0
- data/lib/ig_markets/cli/orders_command.rb +28 -0
- data/lib/ig_markets/cli/positions_command.rb +20 -0
- data/lib/ig_markets/cli/search_command.rb +30 -0
- data/lib/ig_markets/cli/sentiment_command.rb +35 -0
- data/lib/ig_markets/cli/sprints_command.rb +28 -0
- data/lib/ig_markets/cli/transactions_command.rb +56 -0
- data/lib/ig_markets/cli/watchlists_command.rb +34 -0
- data/lib/ig_markets/deal_confirmation.rb +4 -4
- data/lib/ig_markets/dealing_platform/position_methods.rb +3 -3
- data/lib/ig_markets/dealing_platform/sprint_market_position_methods.rb +1 -1
- data/lib/ig_markets/dealing_platform/watchlist_methods.rb +1 -3
- data/lib/ig_markets/dealing_platform/working_order_methods.rb +10 -10
- data/lib/ig_markets/format.rb +36 -0
- data/lib/ig_markets/historical_price_result.rb +1 -1
- data/lib/ig_markets/instrument.rb +2 -2
- data/lib/ig_markets/market.rb +10 -10
- data/lib/ig_markets/model.rb +23 -60
- data/lib/ig_markets/model/typecasters.rb +78 -0
- data/lib/ig_markets/payload_formatter.rb +19 -6
- data/lib/ig_markets/position.rb +7 -21
- data/lib/ig_markets/request_failed_error.rb +1 -1
- data/lib/ig_markets/sprint_market_position.rb +18 -3
- data/lib/ig_markets/version.rb +1 -1
- data/lib/ig_markets/working_order.rb +11 -11
- metadata +39 -64
- data/.codeclimate.yml +0 -15
- data/.gitignore +0 -9
- data/.rspec +0 -2
- data/.rubocop.yml +0 -2
- data/.travis.yml +0 -10
- data/.yardopts +0 -4
- data/Gemfile +0 -2
- data/ig_markets.gemspec +0 -28
- data/spec/factories/ig_markets/account.rb +0 -14
- data/spec/factories/ig_markets/account_activity.rb +0 -21
- data/spec/factories/ig_markets/account_balance.rb +0 -8
- data/spec/factories/ig_markets/account_transaction.rb +0 -15
- data/spec/factories/ig_markets/application.rb +0 -21
- data/spec/factories/ig_markets/client_sentiment.rb +0 -7
- data/spec/factories/ig_markets/deal_confirmation.rb +0 -20
- data/spec/factories/ig_markets/historical_price_result.rb +0 -7
- data/spec/factories/ig_markets/historical_price_result_data_allowance.rb +0 -7
- data/spec/factories/ig_markets/historical_price_result_price.rb +0 -7
- data/spec/factories/ig_markets/historical_price_result_snapshot.rb +0 -10
- data/spec/factories/ig_markets/instrument.rb +0 -32
- data/spec/factories/ig_markets/instrument_currency.rb +0 -9
- data/spec/factories/ig_markets/instrument_expiry_details.rb +0 -6
- data/spec/factories/ig_markets/instrument_margin_deposit_band.rb +0 -8
- data/spec/factories/ig_markets/instrument_opening_hours.rb +0 -6
- data/spec/factories/ig_markets/instrument_rollover_details.rb +0 -6
- data/spec/factories/ig_markets/instrument_slippage_factor.rb +0 -6
- data/spec/factories/ig_markets/market.rb +0 -7
- data/spec/factories/ig_markets/market_dealing_rules.rb +0 -11
- data/spec/factories/ig_markets/market_dealing_rules_rule_details.rb +0 -6
- data/spec/factories/ig_markets/market_hierarchy_result.rb +0 -6
- data/spec/factories/ig_markets/market_hierarchy_result_hierarchy_node.rb +0 -6
- data/spec/factories/ig_markets/market_overview.rb +0 -22
- data/spec/factories/ig_markets/market_snapshot.rb +0 -17
- data/spec/factories/ig_markets/position.rb +0 -19
- data/spec/factories/ig_markets/sprint_market_position.rb +0 -16
- data/spec/factories/ig_markets/watchlist.rb +0 -9
- data/spec/factories/ig_markets/working_order.rb +0 -21
- data/spec/ig_markets/account_transaction_spec.rb +0 -30
- data/spec/ig_markets/dealing_platform/account_methods_spec.rb +0 -58
- data/spec/ig_markets/dealing_platform/client_sentiment_methods_spec.rb +0 -29
- data/spec/ig_markets/dealing_platform/market_methods_spec.rb +0 -80
- data/spec/ig_markets/dealing_platform/position_methods_spec.rb +0 -137
- data/spec/ig_markets/dealing_platform/sprint_market_position_methods_spec.rb +0 -39
- data/spec/ig_markets/dealing_platform/watchlist_methods_spec.rb +0 -89
- data/spec/ig_markets/dealing_platform/working_order_methods_spec.rb +0 -120
- data/spec/ig_markets/dealing_platform_spec.rb +0 -40
- data/spec/ig_markets/model_spec.rb +0 -127
- data/spec/ig_markets/password_encryptor_spec.rb +0 -23
- data/spec/ig_markets/payload_formatter_spec.rb +0 -19
- data/spec/ig_markets/position_spec.rb +0 -37
- data/spec/ig_markets/response_parser_spec.rb +0 -13
- data/spec/ig_markets/session_spec.rb +0 -134
- data/spec/spec_helper.rb +0 -14
- data/spec/support/factory_girl.rb +0 -7
- data/spec/support/random_test_order.rb +0 -3
@@ -0,0 +1,78 @@
|
|
1
|
+
module IGMarkets
|
2
|
+
# Implement typecaster methods for Model.
|
3
|
+
class Model
|
4
|
+
class << self
|
5
|
+
private
|
6
|
+
|
7
|
+
def typecaster_for(type)
|
8
|
+
if [Boolean, String, Fixnum, Float, Symbol, Date, Time].include? type
|
9
|
+
method "typecaster_#{type.to_s.gsub(/\AIGMarkets::/, '').downcase}"
|
10
|
+
elsif type.respond_to? :from
|
11
|
+
-> (value, _options) { type.from value }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def typecaster_boolean(value, _options)
|
16
|
+
return value if [nil, true, false].include? value
|
17
|
+
|
18
|
+
raise ArgumentError, "#{self}: invalid boolean value: #{value}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def typecaster_string(value, options)
|
22
|
+
return nil if value.nil?
|
23
|
+
|
24
|
+
if options.key? :regex
|
25
|
+
raise ArgumentError, "#{self}: invalid string value: #{value}" unless options[:regex].match value.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
value.to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
def typecaster_fixnum(value, _options)
|
32
|
+
return nil if value.nil?
|
33
|
+
|
34
|
+
value.to_s.to_i
|
35
|
+
end
|
36
|
+
|
37
|
+
def typecaster_float(value, _options)
|
38
|
+
return nil if value.nil?
|
39
|
+
|
40
|
+
Float(value)
|
41
|
+
end
|
42
|
+
|
43
|
+
def typecaster_symbol(value, _options)
|
44
|
+
return nil if value.nil?
|
45
|
+
|
46
|
+
value.to_s.downcase.to_sym
|
47
|
+
end
|
48
|
+
|
49
|
+
def typecaster_date(value, options)
|
50
|
+
raise ArgumentError, "#{self}: invalid or missing date format" unless options[:format].is_a? String
|
51
|
+
|
52
|
+
if value.is_a? String
|
53
|
+
begin
|
54
|
+
Date.strptime value, options[:format]
|
55
|
+
rescue ArgumentError
|
56
|
+
raise ArgumentError, "#{self}: failed parsing date '#{value}' with format '#{options[:format]}'"
|
57
|
+
end
|
58
|
+
else
|
59
|
+
value
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def typecaster_time(value, options)
|
64
|
+
raise ArgumentError, "#{self}: invalid or missing time format" unless options[:format].is_a? String
|
65
|
+
|
66
|
+
if value.is_a?(String) || value.is_a?(Fixnum)
|
67
|
+
begin
|
68
|
+
Time.strptime "#{value}#{options[:time_zone]}", "#{options[:format]}#{'%z' if options[:time_zone]}"
|
69
|
+
rescue ArgumentError
|
70
|
+
raise ArgumentError, "#{self}: failed parsing time '#{value}' with format '#{options[:format]}'"
|
71
|
+
end
|
72
|
+
else
|
73
|
+
value
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -5,8 +5,8 @@ module IGMarkets
|
|
5
5
|
|
6
6
|
# Takes a {Model} and returns its attributes in a hash ready to be passed as a payload to the IG Markets API.
|
7
7
|
# Attribute names will be converted to use camel case rather than snake case, `Symbol` attributes will be converted
|
8
|
-
# to strings and will be uppercased, and `
|
9
|
-
# option.
|
8
|
+
# to strings and will be uppercased, and both `Date` and `Time` attributes will be converted to strings using their
|
9
|
+
# ':format' option.
|
10
10
|
#
|
11
11
|
# @param [Model] model The model instance to convert attributes for.
|
12
12
|
#
|
@@ -17,13 +17,26 @@ module IGMarkets
|
|
17
17
|
|
18
18
|
next if value.nil?
|
19
19
|
|
20
|
-
|
21
|
-
value = value.strftime(options.fetch(:format)) if options[:type] == DateTime
|
22
|
-
|
23
|
-
formatted[snake_case_to_camel_case(name)] = value
|
20
|
+
formatted[snake_case_to_camel_case(name)] = format_value value, options
|
24
21
|
end
|
25
22
|
end
|
26
23
|
|
24
|
+
# Formats an individual value, see {#format} for details.
|
25
|
+
#
|
26
|
+
# @param value The attribute value to format.
|
27
|
+
# @param options The options hash for the attribute.
|
28
|
+
#
|
29
|
+
# @return [String]
|
30
|
+
def format_value(value, options)
|
31
|
+
return value.to_s.upcase if options[:type] == Symbol
|
32
|
+
|
33
|
+
value = value.utc if options[:type] == Time
|
34
|
+
|
35
|
+
return value.strftime(options.fetch(:format)) if [Date, Time].include? options[:type]
|
36
|
+
|
37
|
+
value
|
38
|
+
end
|
39
|
+
|
27
40
|
# Takes a string or symbol that uses snake case and converts it to a camel case symbol.
|
28
41
|
#
|
29
42
|
# @param [String, Symbol] value The string or symbol to convert to camel case.
|
data/lib/ig_markets/position.rb
CHANGED
@@ -4,14 +4,14 @@ module IGMarkets
|
|
4
4
|
class Position < Model
|
5
5
|
attribute :contract_size, Float
|
6
6
|
attribute :controlled_risk, Boolean
|
7
|
-
attribute :created_date,
|
8
|
-
attribute :created_date_utc,
|
7
|
+
attribute :created_date, Time, format: '%Y/%m/%d %T:%L', time_zone: '+0000'
|
8
|
+
attribute :created_date_utc, Time, format: '%FT%T', time_zone: '+0000'
|
9
9
|
attribute :currency, String, regex: Regex::CURRENCY
|
10
10
|
attribute :deal_id
|
11
11
|
attribute :direction, Symbol, allowed_values: [:buy, :sell]
|
12
12
|
attribute :level, Float
|
13
13
|
attribute :limit_level, Float
|
14
|
-
attribute :size,
|
14
|
+
attribute :size, Float
|
15
15
|
attribute :stop_level, Float
|
16
16
|
attribute :trailing_step, Float
|
17
17
|
attribute :trailing_stop_distance, Fixnum
|
@@ -42,37 +42,23 @@ module IGMarkets
|
|
42
42
|
end
|
43
43
|
|
44
44
|
# Returns this position's current profit or loss, denominated in its {#currency}, and based on the current market
|
45
|
-
# state as stored in {#market}.
|
46
|
-
# value.
|
45
|
+
# state as stored in {#market}.
|
47
46
|
#
|
48
47
|
# @return [Float]
|
49
48
|
def profit_loss
|
50
49
|
price_delta * size * market.lot_size * market.scaling_factor
|
51
50
|
end
|
52
51
|
|
53
|
-
# Returns a human-readable string describing this position's current profit or loss, denominated in its {#currency},
|
54
|
-
# and based on the current market state as stored in {#market}. Some examples of the format of the return value:
|
55
|
-
#
|
56
|
-
# - `"USD -130.40"`
|
57
|
-
# - `"AUD 539.10"`
|
58
|
-
# - `"JPY 3560"`
|
59
|
-
#
|
60
|
-
# @return [String]
|
61
|
-
def formatted_profit_loss
|
62
|
-
format_string = (currency == 'JPY' ? '%.0f' : '%.2f')
|
63
|
-
"#{currency} #{format format_string, profit_loss}"
|
64
|
-
end
|
65
|
-
|
66
52
|
# Returns this position's {#size} as a string prefixed with a `+` if {#direction} is `:buy`, or a `-` if
|
67
53
|
# {#direction} is `:sell`.
|
68
54
|
#
|
69
55
|
# @return [String]
|
70
56
|
def formatted_size
|
71
|
-
"#{{ buy: '+', sell: '-' }.fetch(direction)}#{size}"
|
57
|
+
"#{{ buy: '+', sell: '-' }.fetch(direction)}#{format '%g', size}"
|
72
58
|
end
|
73
59
|
|
74
60
|
# Closes this position. If called with no options then this position will be fully closed at current market prices,
|
75
|
-
# partial closes and greater control over the close conditions can be achieved
|
61
|
+
# partial closes and greater control over the close conditions can be achieved by using the relevant options.
|
76
62
|
#
|
77
63
|
# @param [Hash] options The options for the position close.
|
78
64
|
# @option options [Float] :level Required if and only if `:order_type` is `:limit` or `:quote`.
|
@@ -151,7 +137,7 @@ module IGMarkets
|
|
151
137
|
attribute :level, Float
|
152
138
|
attribute :order_type, Symbol, allowed_values: [:limit, :market, :quote]
|
153
139
|
attribute :quote_id
|
154
|
-
attribute :size,
|
140
|
+
attribute :size, Float
|
155
141
|
attribute :time_in_force, Symbol, allowed_values: [:execute_and_eliminate, :fill_or_kill]
|
156
142
|
|
157
143
|
# Runs a series of validations on this model's attributes to check whether it is ready to be sent to the IG
|
@@ -15,7 +15,7 @@ module IGMarkets
|
|
15
15
|
@error = error.to_s
|
16
16
|
@http_code = http_code ? http_code.to_i : nil
|
17
17
|
|
18
|
-
super "#<#{self.class.name} error: @error#{http_code ? ", http_code: #{http_code}" : ''}"
|
18
|
+
super "#<#{self.class.name} error: #{@error}#{http_code ? ", http_code: #{http_code}" : ''}>"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -1,17 +1,32 @@
|
|
1
1
|
module IGMarkets
|
2
2
|
# Contains details on a sprint market position. Returned by {DealingPlatform::SprintMarketPositionMethods#all}.
|
3
3
|
class SprintMarketPosition < Model
|
4
|
-
attribute :created_date,
|
4
|
+
attribute :created_date, Time, format: '%Y/%m/%d %T:%L', time_zone: '+1000'
|
5
5
|
attribute :currency, String, regex: Regex::CURRENCY
|
6
6
|
attribute :deal_id
|
7
7
|
attribute :description
|
8
8
|
attribute :direction, Symbol, allowed_values: [:buy, :sell]
|
9
9
|
attribute :epic, String, regex: Regex::EPIC
|
10
|
-
attribute :expiry_time,
|
10
|
+
attribute :expiry_time, Time, format: '%Y/%m/%d %T:%L', time_zone: '+1000'
|
11
11
|
attribute :instrument_name
|
12
12
|
attribute :market_status, Symbol, allowed_values: Market::Snapshot.allowed_values(:market_status)
|
13
13
|
attribute :payout_amount, Float
|
14
|
-
attribute :size,
|
14
|
+
attribute :size, Float
|
15
15
|
attribute :strike_level, Float
|
16
|
+
|
17
|
+
# Returns the number of seconds till when this sprint market position expires. This will be a negative number if
|
18
|
+
# this sprint market position has expired.
|
19
|
+
#
|
20
|
+
# @return [Fixnum]
|
21
|
+
def seconds_till_expiry
|
22
|
+
(expiry_time - Time.now).to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
# Returns whether this sprint market position has expired.
|
26
|
+
#
|
27
|
+
# @return [Boolean]
|
28
|
+
def expired?
|
29
|
+
expiry_time < Time.now
|
30
|
+
end
|
16
31
|
end
|
17
32
|
end
|
data/lib/ig_markets/version.rb
CHANGED
@@ -2,15 +2,15 @@ module IGMarkets
|
|
2
2
|
# Contains details on a working order. Returned by {DealingPlatform::WorkingOrderMethods#all} and
|
3
3
|
# {DealingPlatform::WorkingOrderMethods#[]}.
|
4
4
|
class WorkingOrder < Model
|
5
|
-
attribute :created_date,
|
6
|
-
attribute :created_date_utc,
|
5
|
+
attribute :created_date, Time, format: '%Y/%m/%d %T:%L'
|
6
|
+
attribute :created_date_utc, Time, format: '%FT%T', time_zone: '+0000'
|
7
7
|
attribute :currency_code, String, regex: Regex::CURRENCY
|
8
8
|
attribute :deal_id
|
9
9
|
attribute :direction, Symbol, allowed_values: [:buy, :sell]
|
10
10
|
attribute :dma, Boolean
|
11
11
|
attribute :epic, String, regex: Regex::EPIC
|
12
|
-
attribute :good_till_date,
|
13
|
-
attribute :good_till_date_iso,
|
12
|
+
attribute :good_till_date, Time, format: '%Y/%m/%d %R', time_zone: '+0000'
|
13
|
+
attribute :good_till_date_iso, Time, format: '%FT%R', time_zone: '+0000'
|
14
14
|
attribute :guaranteed_stop, Boolean
|
15
15
|
attribute :limit_distance, Fixnum
|
16
16
|
attribute :order_level, Float
|
@@ -34,10 +34,10 @@ module IGMarkets
|
|
34
34
|
#
|
35
35
|
# @param [Hash] new_attributes The attributes of this working order to update. See
|
36
36
|
# {DealingPlatform::WorkingOrderMethods#create} for a description of the attributes.
|
37
|
-
# @option new_attributes [
|
37
|
+
# @option new_attributes [Time] :good_till_date
|
38
38
|
# @option new_attributes [Float] :level
|
39
|
-
# @option new_attributes [
|
40
|
-
# @option new_attributes [
|
39
|
+
# @option new_attributes [Fixnum] :limit_distance
|
40
|
+
# @option new_attributes [Fixnum] :stop_distance
|
41
41
|
# @option new_attributes [:good_till_cancelled, :good_till_date] :time_in_force
|
42
42
|
# @option new_attributes [:limit, :stop] :type
|
43
43
|
#
|
@@ -55,12 +55,12 @@ module IGMarkets
|
|
55
55
|
|
56
56
|
# Internal model used by {#update}.
|
57
57
|
class WorkingOrderUpdateAttributes < Model
|
58
|
-
attribute :good_till_date,
|
59
|
-
attribute :limit_distance, Float
|
58
|
+
attribute :good_till_date, Time, format: '%Y/%m/%d %R'
|
60
59
|
attribute :level, Float
|
61
|
-
attribute :
|
62
|
-
attribute :stop_distance,
|
60
|
+
attribute :limit_distance, Fixnum
|
61
|
+
attribute :stop_distance, Fixnum
|
63
62
|
attribute :time_in_force, Symbol, allowed_values: [:good_till_cancelled, :good_till_date]
|
63
|
+
attribute :type, Symbol, allowed_values: [:limit, :stop]
|
64
64
|
end
|
65
65
|
|
66
66
|
private_constant :WorkingOrderUpdateAttributes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ig_markets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Viney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.19'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.19'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: codeclimate-test-reporter
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,32 +150,33 @@ dependencies:
|
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '0.8'
|
139
|
-
description:
|
153
|
+
description:
|
140
154
|
email: richard.viney@gmail.com
|
141
|
-
executables:
|
155
|
+
executables:
|
156
|
+
- ig_markets
|
142
157
|
extensions: []
|
143
158
|
extra_rdoc_files: []
|
144
159
|
files:
|
145
|
-
-
|
146
|
-
- ".gitignore"
|
147
|
-
- ".rspec"
|
148
|
-
- ".rubocop.yml"
|
149
|
-
- ".travis.yml"
|
150
|
-
- ".yardopts"
|
151
|
-
- Gemfile
|
152
|
-
- LICENSE.md
|
153
|
-
- README.md
|
154
|
-
- ig_markets.gemspec
|
155
|
-
- lib/ig_markets.rb
|
160
|
+
- bin/ig_markets
|
156
161
|
- lib/ig_markets/account.rb
|
157
162
|
- lib/ig_markets/account_activity.rb
|
158
163
|
- lib/ig_markets/account_transaction.rb
|
159
164
|
- lib/ig_markets/api_versions.rb
|
160
165
|
- lib/ig_markets/application.rb
|
161
166
|
- lib/ig_markets/boolean.rb
|
167
|
+
- lib/ig_markets/cli/account_command.rb
|
168
|
+
- lib/ig_markets/cli/activities_command.rb
|
169
|
+
- lib/ig_markets/cli/confirmation_command.rb
|
170
|
+
- lib/ig_markets/cli/main.rb
|
171
|
+
- lib/ig_markets/cli/orders_command.rb
|
172
|
+
- lib/ig_markets/cli/positions_command.rb
|
173
|
+
- lib/ig_markets/cli/search_command.rb
|
174
|
+
- lib/ig_markets/cli/sentiment_command.rb
|
175
|
+
- lib/ig_markets/cli/sprints_command.rb
|
176
|
+
- lib/ig_markets/cli/transactions_command.rb
|
177
|
+
- lib/ig_markets/cli/watchlists_command.rb
|
162
178
|
- lib/ig_markets/client_sentiment.rb
|
163
179
|
- lib/ig_markets/deal_confirmation.rb
|
164
|
-
- lib/ig_markets/dealing_platform.rb
|
165
180
|
- lib/ig_markets/dealing_platform/account_methods.rb
|
166
181
|
- lib/ig_markets/dealing_platform/client_sentiment_methods.rb
|
167
182
|
- lib/ig_markets/dealing_platform/market_methods.rb
|
@@ -169,11 +184,14 @@ files:
|
|
169
184
|
- lib/ig_markets/dealing_platform/sprint_market_position_methods.rb
|
170
185
|
- lib/ig_markets/dealing_platform/watchlist_methods.rb
|
171
186
|
- lib/ig_markets/dealing_platform/working_order_methods.rb
|
187
|
+
- lib/ig_markets/dealing_platform.rb
|
188
|
+
- lib/ig_markets/format.rb
|
172
189
|
- lib/ig_markets/historical_price_result.rb
|
173
190
|
- lib/ig_markets/instrument.rb
|
174
191
|
- lib/ig_markets/market.rb
|
175
192
|
- lib/ig_markets/market_hierarchy_result.rb
|
176
193
|
- lib/ig_markets/market_overview.rb
|
194
|
+
- lib/ig_markets/model/typecasters.rb
|
177
195
|
- lib/ig_markets/model.rb
|
178
196
|
- lib/ig_markets/password_encryptor.rb
|
179
197
|
- lib/ig_markets/payload_formatter.rb
|
@@ -186,53 +204,10 @@ files:
|
|
186
204
|
- lib/ig_markets/version.rb
|
187
205
|
- lib/ig_markets/watchlist.rb
|
188
206
|
- lib/ig_markets/working_order.rb
|
189
|
-
-
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
193
|
-
- spec/factories/ig_markets/application.rb
|
194
|
-
- spec/factories/ig_markets/client_sentiment.rb
|
195
|
-
- spec/factories/ig_markets/deal_confirmation.rb
|
196
|
-
- spec/factories/ig_markets/historical_price_result.rb
|
197
|
-
- spec/factories/ig_markets/historical_price_result_data_allowance.rb
|
198
|
-
- spec/factories/ig_markets/historical_price_result_price.rb
|
199
|
-
- spec/factories/ig_markets/historical_price_result_snapshot.rb
|
200
|
-
- spec/factories/ig_markets/instrument.rb
|
201
|
-
- spec/factories/ig_markets/instrument_currency.rb
|
202
|
-
- spec/factories/ig_markets/instrument_expiry_details.rb
|
203
|
-
- spec/factories/ig_markets/instrument_margin_deposit_band.rb
|
204
|
-
- spec/factories/ig_markets/instrument_opening_hours.rb
|
205
|
-
- spec/factories/ig_markets/instrument_rollover_details.rb
|
206
|
-
- spec/factories/ig_markets/instrument_slippage_factor.rb
|
207
|
-
- spec/factories/ig_markets/market.rb
|
208
|
-
- spec/factories/ig_markets/market_dealing_rules.rb
|
209
|
-
- spec/factories/ig_markets/market_dealing_rules_rule_details.rb
|
210
|
-
- spec/factories/ig_markets/market_hierarchy_result.rb
|
211
|
-
- spec/factories/ig_markets/market_hierarchy_result_hierarchy_node.rb
|
212
|
-
- spec/factories/ig_markets/market_overview.rb
|
213
|
-
- spec/factories/ig_markets/market_snapshot.rb
|
214
|
-
- spec/factories/ig_markets/position.rb
|
215
|
-
- spec/factories/ig_markets/sprint_market_position.rb
|
216
|
-
- spec/factories/ig_markets/watchlist.rb
|
217
|
-
- spec/factories/ig_markets/working_order.rb
|
218
|
-
- spec/ig_markets/account_transaction_spec.rb
|
219
|
-
- spec/ig_markets/dealing_platform/account_methods_spec.rb
|
220
|
-
- spec/ig_markets/dealing_platform/client_sentiment_methods_spec.rb
|
221
|
-
- spec/ig_markets/dealing_platform/market_methods_spec.rb
|
222
|
-
- spec/ig_markets/dealing_platform/position_methods_spec.rb
|
223
|
-
- spec/ig_markets/dealing_platform/sprint_market_position_methods_spec.rb
|
224
|
-
- spec/ig_markets/dealing_platform/watchlist_methods_spec.rb
|
225
|
-
- spec/ig_markets/dealing_platform/working_order_methods_spec.rb
|
226
|
-
- spec/ig_markets/dealing_platform_spec.rb
|
227
|
-
- spec/ig_markets/model_spec.rb
|
228
|
-
- spec/ig_markets/password_encryptor_spec.rb
|
229
|
-
- spec/ig_markets/payload_formatter_spec.rb
|
230
|
-
- spec/ig_markets/position_spec.rb
|
231
|
-
- spec/ig_markets/response_parser_spec.rb
|
232
|
-
- spec/ig_markets/session_spec.rb
|
233
|
-
- spec/spec_helper.rb
|
234
|
-
- spec/support/factory_girl.rb
|
235
|
-
- spec/support/random_test_order.rb
|
207
|
+
- lib/ig_markets.rb
|
208
|
+
- CHANGELOG.md
|
209
|
+
- LICENSE.md
|
210
|
+
- README.md
|
236
211
|
homepage: https://github.com/rviney/ig_markets
|
237
212
|
licenses:
|
238
213
|
- MIT
|
@@ -253,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
253
228
|
version: '0'
|
254
229
|
requirements: []
|
255
230
|
rubyforge_project:
|
256
|
-
rubygems_version: 2.
|
231
|
+
rubygems_version: 2.0.14
|
257
232
|
signing_key:
|
258
233
|
specification_version: 4
|
259
234
|
summary: Ruby client for the IG Markets dealing platform.
|