ig_markets 0.1 → 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|