schwab_rb 0.2.0 → 0.3.0

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/settings.local.json +9 -0
  3. data/.rspec_status +209 -180
  4. data/CLAUDE.md +137 -0
  5. data/README.md +3 -3
  6. data/examples/fetch_account_numbers.rb +12 -15
  7. data/examples/fetch_user_preferences.rb +16 -19
  8. data/lib/schwab_rb/account.rb +1 -1
  9. data/lib/schwab_rb/auth/auth_context.rb +1 -1
  10. data/lib/schwab_rb/auth/init_client_easy.rb +29 -31
  11. data/lib/schwab_rb/auth/init_client_login.rb +24 -21
  12. data/lib/schwab_rb/auth/login_flow_server.rb +2 -2
  13. data/lib/schwab_rb/auth/token.rb +1 -1
  14. data/lib/schwab_rb/auth/token_manager.rb +5 -7
  15. data/lib/schwab_rb/clients/async_client.rb +25 -27
  16. data/lib/schwab_rb/clients/base_client.rb +22 -16
  17. data/lib/schwab_rb/clients/client.rb +14 -14
  18. data/lib/schwab_rb/configuration.rb +4 -4
  19. data/lib/schwab_rb/data_objects/account.rb +2 -2
  20. data/lib/schwab_rb/data_objects/instrument.rb +1 -1
  21. data/lib/schwab_rb/data_objects/market_hours.rb +43 -33
  22. data/lib/schwab_rb/data_objects/market_movers.rb +98 -0
  23. data/lib/schwab_rb/data_objects/option.rb +2 -2
  24. data/lib/schwab_rb/data_objects/option_chain.rb +7 -7
  25. data/lib/schwab_rb/data_objects/option_expiration_chain.rb +26 -25
  26. data/lib/schwab_rb/data_objects/order.rb +7 -6
  27. data/lib/schwab_rb/data_objects/order_leg.rb +5 -5
  28. data/lib/schwab_rb/data_objects/order_preview.rb +13 -16
  29. data/lib/schwab_rb/data_objects/position.rb +4 -4
  30. data/lib/schwab_rb/data_objects/price_history.rb +27 -19
  31. data/lib/schwab_rb/data_objects/quote.rb +6 -6
  32. data/lib/schwab_rb/data_objects/transaction.rb +6 -6
  33. data/lib/schwab_rb/data_objects/user_preferences.rb +3 -3
  34. data/lib/schwab_rb/market_hours.rb +5 -5
  35. data/lib/schwab_rb/movers.rb +16 -16
  36. data/lib/schwab_rb/orders/builder.rb +5 -5
  37. data/lib/schwab_rb/orders/destination.rb +12 -12
  38. data/lib/schwab_rb/orders/duration.rb +7 -7
  39. data/lib/schwab_rb/orders/equity_instructions.rb +4 -4
  40. data/lib/schwab_rb/orders/instruments.rb +8 -8
  41. data/lib/schwab_rb/orders/price_link_basis.rb +9 -9
  42. data/lib/schwab_rb/orders/price_link_type.rb +3 -3
  43. data/lib/schwab_rb/orders/session.rb +4 -4
  44. data/lib/schwab_rb/orders/special_instruction.rb +3 -3
  45. data/lib/schwab_rb/orders/stop_price_link_basis.rb +9 -9
  46. data/lib/schwab_rb/orders/stop_price_link_type.rb +3 -3
  47. data/lib/schwab_rb/orders/stop_type.rb +5 -5
  48. data/lib/schwab_rb/orders/tax_lot_method.rb +7 -7
  49. data/lib/schwab_rb/price_history.rb +8 -8
  50. data/lib/schwab_rb/quote.rb +5 -5
  51. data/lib/schwab_rb/transaction.rb +15 -15
  52. data/lib/schwab_rb/utils/logger.rb +11 -15
  53. data/lib/schwab_rb/utils/redactor.rb +23 -25
  54. data/lib/schwab_rb/version.rb +1 -1
  55. data/lib/schwab_rb.rb +1 -0
  56. metadata +6 -2
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'order_leg'
3
+ require_relative "order_leg"
4
4
 
5
5
  module SchwabRb
6
6
  module DataObjects
@@ -57,7 +57,8 @@ module SchwabRb
57
57
  end
58
58
  end
59
59
 
60
- def initialize(activity_type:, activity_id:, execution_type:, quantity:, order_remaining_quantity:, execution_legs:)
60
+ def initialize(activity_type:, activity_id:, execution_type:, quantity:, order_remaining_quantity:,
61
+ execution_legs:)
61
62
  @activity_type = activity_type
62
63
  @activity_id = activity_id
63
64
  @execution_type = execution_type
@@ -147,20 +148,20 @@ module SchwabRb
147
148
 
148
149
  def strategy
149
150
  if %w[VERTICAL CUSTOM].include?(complex_order_strategy_type) && order_leg_collection.all?(&:call?)
150
- 'CALL_SPREAD'
151
+ "CALL_SPREAD"
151
152
  elsif %w[VERTICAL CUSTOM].include?(complex_order_strategy_type) && order_leg_collection.all?(&:put?)
152
- 'PUT_SPREAD'
153
+ "PUT_SPREAD"
153
154
  else
154
155
  order_strategy_type
155
156
  end
156
157
  end
157
158
 
158
159
  def close?
159
- order_leg_collection.all? { |leg| leg.position_effect == 'CLOSING' }
160
+ order_leg_collection.all? { |leg| leg.position_effect == "CLOSING" }
160
161
  end
161
162
 
162
163
  def open?
163
- order_leg_collection.all? { |leg| leg.position_effect == 'OPENING' }
164
+ order_leg_collection.all? { |leg| leg.position_effect == "OPENING" }
164
165
  end
165
166
 
166
167
  def to_h
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'instrument'
3
+ require_relative "instrument"
4
4
 
5
5
  module SchwabRb
6
6
  module DataObjects
@@ -30,19 +30,19 @@ module SchwabRb
30
30
  end
31
31
 
32
32
  def call?
33
- put_call == 'CALL'
33
+ put_call == "CALL"
34
34
  end
35
35
 
36
36
  def close?
37
- position_effect == 'CLOSING'
37
+ position_effect == "CLOSING"
38
38
  end
39
39
 
40
40
  def open?
41
- position_effect == 'OPENING'
41
+ position_effect == "OPENING"
42
42
  end
43
43
 
44
44
  def put?
45
- put_call == 'PUT'
45
+ put_call == "PUT"
46
46
  end
47
47
 
48
48
  def put_call
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'order_leg'
3
+ require_relative "order_leg"
4
4
 
5
5
  module SchwabRb
6
6
  module DataObjects
7
7
  class OrderPreview
8
- attr_reader :order_id, :order_value, :order_strategy, :order_balance, :order_validation_result, :projected_commission
8
+ attr_reader :order_id, :order_value, :order_strategy, :order_balance, :order_validation_result,
9
+ :projected_commission
9
10
 
10
11
  class << self
11
12
  def build(data)
@@ -35,7 +36,7 @@ module SchwabRb
35
36
  end
36
37
 
37
38
  def accepted?
38
- status == 'ACCEPTED'
39
+ status == "ACCEPTED"
39
40
  end
40
41
 
41
42
  def commission
@@ -167,32 +168,30 @@ module SchwabRb
167
168
  end
168
169
 
169
170
  def commission_total
170
- calculate_total_from_legs(@commission_data, 'COMMISSION')
171
+ calculate_total_from_legs(@commission_data, "COMMISSION")
171
172
  end
172
173
 
173
174
  def commission
174
- @direct_commission || sprintf("%.2f", commission_total)
175
+ @direct_commission || format("%.2f", commission_total)
175
176
  end
176
177
 
177
178
  def fee_total
178
- calculate_total_from_legs(@fee_data, ['OPT_REG_FEE', 'INDEX_OPTION_FEE'])
179
+ calculate_total_from_legs(@fee_data, %w[OPT_REG_FEE INDEX_OPTION_FEE])
179
180
  end
180
181
 
181
182
  def fee
182
- @direct_fee || sprintf("%.2f", fee_total)
183
+ @direct_fee || format("%.2f", fee_total)
183
184
  end
184
185
 
185
186
  def true_commission
186
187
  if @direct_true_commission
187
188
  @direct_true_commission
188
- else
189
+ elsif @true_commission_data.any?
189
190
  # For nested structure, calculate from true commission legs
190
- if @true_commission_data.any?
191
- true_commission_total = calculate_total_from_legs(@true_commission_data, 'COMMISSION')
192
- sprintf("%.2f", true_commission_total * 2)
191
+ true_commission_total = calculate_total_from_legs(@true_commission_data, "COMMISSION")
192
+ format("%.2f", true_commission_total * 2)
193
193
  else
194
- sprintf("%.2f", commission_total * 2)
195
- end
194
+ format("%.2f", commission_total * 2)
196
195
  end
197
196
  end
198
197
 
@@ -223,9 +222,7 @@ module SchwabRb
223
222
  legs.each do |leg|
224
223
  values = leg[:commissionValues] || leg[:feeValues] || []
225
224
  values.each do |value_item|
226
- if types.include?(value_item[:type])
227
- total += (value_item[:value] || 0.0)
228
- end
225
+ total += value_item[:value] || 0.0 if types.include?(value_item[:type])
229
226
  end
230
227
  end
231
228
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'instrument'
3
+ require_relative "instrument"
4
4
 
5
5
  module SchwabRb
6
6
  module DataObjects
@@ -73,11 +73,11 @@ module SchwabRb
73
73
 
74
74
  def long_short
75
75
  if long?
76
- 'LONG'
76
+ "LONG"
77
77
  elsif short?
78
- 'SHORT'
78
+ "SHORT"
79
79
  else
80
- 'NONE'
80
+ "NONE"
81
81
  end
82
82
  end
83
83
 
@@ -12,16 +12,16 @@ module SchwabRb
12
12
  end
13
13
 
14
14
  def initialize(data)
15
- @symbol = data['symbol']
16
- @empty = data['empty']
17
- @candles = data['candles']&.map { |candle_data| Candle.new(candle_data) } || []
15
+ @symbol = data["symbol"]
16
+ @empty = data["empty"]
17
+ @candles = data["candles"]&.map { |candle_data| Candle.new(candle_data) } || []
18
18
  end
19
19
 
20
20
  def to_h
21
21
  {
22
- 'symbol' => @symbol,
23
- 'empty' => @empty,
24
- 'candles' => @candles.map(&:to_h)
22
+ "symbol" => @symbol,
23
+ "empty" => @empty,
24
+ "candles" => @candles.map(&:to_h)
25
25
  }
26
26
  end
27
27
 
@@ -46,7 +46,7 @@ module SchwabRb
46
46
  def candles_for_date_range(start_date, end_date)
47
47
  start_timestamp = start_date.to_time.to_i * 1000
48
48
  end_timestamp = end_date.to_time.to_i * 1000
49
-
49
+
50
50
  @candles.select do |candle|
51
51
  candle.datetime >= start_timestamp && candle.datetime <= end_timestamp
52
52
  end
@@ -54,32 +54,38 @@ module SchwabRb
54
54
 
55
55
  def highest_price
56
56
  return nil if @candles.empty?
57
+
57
58
  @candles.map(&:high).max
58
59
  end
59
60
 
60
61
  def lowest_price
61
62
  return nil if @candles.empty?
63
+
62
64
  @candles.map(&:low).min
63
65
  end
64
66
 
65
67
  def highest_volume
66
68
  return nil if @candles.empty?
69
+
67
70
  @candles.map(&:volume).max
68
71
  end
69
72
 
70
73
  def total_volume
71
74
  return 0 if @candles.empty?
75
+
72
76
  @candles.map(&:volume).sum
73
77
  end
74
78
 
75
79
  def average_price
76
80
  return nil if @candles.empty?
81
+
77
82
  total_price = @candles.map(&:close).sum
78
83
  total_price / @candles.length.to_f
79
84
  end
80
85
 
81
86
  def price_range
82
87
  return nil if @candles.empty?
88
+
83
89
  {
84
90
  high: highest_price,
85
91
  low: lowest_price,
@@ -89,6 +95,7 @@ module SchwabRb
89
95
 
90
96
  def each(&block)
91
97
  return enum_for(:each) unless block_given?
98
+
92
99
  @candles.each(&block)
93
100
  end
94
101
 
@@ -98,22 +105,22 @@ module SchwabRb
98
105
  attr_reader :open, :high, :low, :close, :volume, :datetime
99
106
 
100
107
  def initialize(data)
101
- @open = data['open']
102
- @high = data['high']
103
- @low = data['low']
104
- @close = data['close']
105
- @volume = data['volume']
106
- @datetime = data['datetime']
108
+ @open = data["open"]
109
+ @high = data["high"]
110
+ @low = data["low"]
111
+ @close = data["close"]
112
+ @volume = data["volume"]
113
+ @datetime = data["datetime"]
107
114
  end
108
115
 
109
116
  def to_h
110
117
  {
111
- 'open' => @open,
112
- 'high' => @high,
113
- 'low' => @low,
114
- 'close' => @close,
115
- 'volume' => @volume,
116
- 'datetime' => @datetime
118
+ "open" => @open,
119
+ "high" => @high,
120
+ "low" => @low,
121
+ "close" => @close,
122
+ "volume" => @volume,
123
+ "datetime" => @datetime
117
124
  }
118
125
  end
119
126
 
@@ -131,6 +138,7 @@ module SchwabRb
131
138
 
132
139
  def price_change_percent
133
140
  return 0 if @open == 0
141
+
134
142
  ((price_change / @open) * 100).round(4)
135
143
  end
136
144
 
@@ -10,11 +10,11 @@ module SchwabRb
10
10
  data[:symbol] ||= symbol
11
11
 
12
12
  case data[:assetMainType]
13
- when 'OPTION'
13
+ when "OPTION"
14
14
  OptionQuote.new(data)
15
- when 'INDEX'
15
+ when "INDEX"
16
16
  IndexQuote.new(data)
17
- when 'EQUITY'
17
+ when "EQUITY"
18
18
  EquityQuote.new(data)
19
19
  else
20
20
  raise "Unknown assetMainType: #{data[:assetMainType]}"
@@ -89,11 +89,11 @@ module SchwabRb
89
89
 
90
90
  def zone
91
91
  if quote_delta.abs > 0.3
92
- 'DANGER'
92
+ "DANGER"
93
93
  elsif quote_delta.abs > 0.15
94
- 'AT_RISK'
94
+ "AT_RISK"
95
95
  else
96
- 'SAFE'
96
+ "SAFE"
97
97
  end
98
98
  end
99
99
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'instrument'
3
+ require_relative "instrument"
4
4
 
5
5
  module SchwabRb
6
6
  module DataObjects
@@ -28,15 +28,15 @@ module SchwabRb
28
28
  end
29
29
 
30
30
  def symbol
31
- option? ? instrument.symbol : ''
31
+ option? ? instrument.symbol : ""
32
32
  end
33
33
 
34
34
  def underlying_symbol
35
- option? ? instrument.underlying_symbol : ''
35
+ option? ? instrument.underlying_symbol : ""
36
36
  end
37
37
 
38
38
  def description
39
- option? ? instrument.description : ''
39
+ option? ? instrument.description : ""
40
40
  end
41
41
 
42
42
  def option?
@@ -52,7 +52,7 @@ module SchwabRb
52
52
  end
53
53
 
54
54
  def commission?
55
- fee_type == 'COMMISSION'
55
+ fee_type == "COMMISSION"
56
56
  end
57
57
 
58
58
  def to_h
@@ -102,7 +102,7 @@ module SchwabRb
102
102
  :transfer_items
103
103
 
104
104
  def trade?
105
- type == 'TRADE'
105
+ type == "TRADE"
106
106
  end
107
107
 
108
108
  def symbols
@@ -38,7 +38,7 @@ module SchwabRb
38
38
  end
39
39
 
40
40
  def brokerage_accounts
41
- @accounts.select { |account| account.type == 'BROKERAGE' }
41
+ @accounts.select { |account| account.type == "BROKERAGE" }
42
42
  end
43
43
 
44
44
  def has_level2_permissions?
@@ -46,7 +46,7 @@ module SchwabRb
46
46
  end
47
47
 
48
48
  class UserAccount
49
- attr_reader :account_number, :primary_account, :type, :nick_name, :display_acct_id,
49
+ attr_reader :account_number, :primary_account, :type, :nick_name, :display_acct_id,
50
50
  :auto_position_effect, :account_color, :lot_selection_method
51
51
 
52
52
  def initialize(data)
@@ -83,7 +83,7 @@ module SchwabRb
83
83
  end
84
84
 
85
85
  class StreamerInfo
86
- attr_reader :streamer_socket_url, :schwab_client_customer_id, :schwab_client_correl_id,
86
+ attr_reader :streamer_socket_url, :schwab_client_customer_id, :schwab_client_correl_id,
87
87
  :schwab_client_channel, :schwab_client_function_id
88
88
 
89
89
  def initialize(data)
@@ -3,11 +3,11 @@
3
3
  module SchwabRb
4
4
  class MarketHours
5
5
  module Markets
6
- EQUITY = 'equity'
7
- OPTION = 'option'
8
- BOND = 'bond'
9
- FUTURE = 'future'
10
- FOREX = 'forex'
6
+ EQUITY = "equity"
7
+ OPTION = "option"
8
+ BOND = "bond"
9
+ FUTURE = "future"
10
+ FOREX = "forex"
11
11
  end
12
12
  end
13
13
  end
@@ -3,24 +3,24 @@
3
3
  module SchwabRb
4
4
  class Movers
5
5
  module Indexes
6
- DJI = '$DJI'
7
- COMPX = '$COMPX'
8
- SPX = '$SPX'
9
- NYSE = 'NYSE'
10
- NASDAQ = 'NASDAQ'
11
- OTCBB = 'OTCBB'
12
- INDEX_ALL = 'INDEX_ALL'
13
- EQUITY_ALL = 'EQUITY_ALL'
14
- OPTION_ALL = 'OPTION_ALL'
15
- OPTION_PUT = 'OPTION_PUT'
16
- OPTION_CALL = 'OPTION_CALL'
6
+ DJI = "$DJI"
7
+ COMPX = "$COMPX"
8
+ SPX = "$SPX"
9
+ NYSE = "NYSE"
10
+ NASDAQ = "NASDAQ"
11
+ OTCBB = "OTCBB"
12
+ INDEX_ALL = "INDEX_ALL"
13
+ EQUITY_ALL = "EQUITY_ALL"
14
+ OPTION_ALL = "OPTION_ALL"
15
+ OPTION_PUT = "OPTION_PUT"
16
+ OPTION_CALL = "OPTION_CALL"
17
17
  end
18
18
 
19
19
  module SortOrders
20
- VOLUME = 'VOLUME'
21
- TRADES = 'TRADES'
22
- PERCENT_CHANGE_UP = 'PERCENT_CHANGE_UP'
23
- PERCENT_CHANGE_DOWN = 'PERCENT_CHANGE_DOWN'
20
+ VOLUME = "VOLUME"
21
+ TRADES = "TRADES"
22
+ PERCENT_CHANGE_UP = "PERCENT_CHANGE_UP"
23
+ PERCENT_CHANGE_DOWN = "PERCENT_CHANGE_DOWN"
24
24
  end
25
25
 
26
26
  module Frequencies
@@ -32,4 +32,4 @@ module SchwabRb
32
32
  SIXTY = 60
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../utils/enum_enforcer'
1
+ require_relative "../utils/enum_enforcer"
2
2
 
3
3
  module SchwabRb::Orders
4
4
  class Builder
@@ -36,7 +36,7 @@ module SchwabRb::Orders
36
36
  end
37
37
 
38
38
  def camel_case(snake_str)
39
- camel_case_str = snake_str.split('_').map(&:capitalize).join
39
+ camel_case_str = snake_str.split("_").map(&:capitalize).join
40
40
  camel_case_str[0].downcase + camel_case_str[1..]
41
41
  end
42
42
  end
@@ -165,7 +165,7 @@ module SchwabRb::Orders
165
165
  @order_leg_collection << {
166
166
  "instruction" => convert_enum(instruction, SchwabRb::Orders::OptionInstructions),
167
167
  "instrument" => SchwabRb::Orders::OptionInstrument.new(symbol),
168
- "quantity" => quantity,
168
+ "quantity" => quantity
169
169
  }
170
170
  end
171
171
 
@@ -193,9 +193,9 @@ module SchwabRb::Orders
193
193
 
194
194
  def truncate_float(flt)
195
195
  if flt.abs < 1 && flt != 0.0
196
- format('%.4f', (flt * 10000).to_i / 10000.0)
196
+ format("%.4f", (flt * 10_000).to_i / 10_000.0)
197
197
  else
198
- format('%.2f', (flt * 100).to_i / 100.0)
198
+ format("%.2f", (flt * 100).to_i / 100.0)
199
199
  end
200
200
  end
201
201
  end
@@ -2,18 +2,18 @@ module SchwabRb
2
2
  module Orders
3
3
  module Destination
4
4
  # Destinations for when you want to request a specific destination for your order.
5
- INET = 'INET'
6
- ECN_ARCA = 'ECN_ARCA'
7
- CBOE = 'CBOE'
8
- AMEX = 'AMEX'
9
- PHLX = 'PHLX'
10
- ISE = 'ISE'
11
- BOX = 'BOX'
12
- NYSE = 'NYSE'
13
- NASDAQ = 'NASDAQ'
14
- BATS = 'BATS'
15
- C2 = 'C2'
16
- AUTO = 'AUTO'
5
+ INET = "INET"
6
+ ECN_ARCA = "ECN_ARCA"
7
+ CBOE = "CBOE"
8
+ AMEX = "AMEX"
9
+ PHLX = "PHLX"
10
+ ISE = "ISE"
11
+ BOX = "BOX"
12
+ NYSE = "NYSE"
13
+ NASDAQ = "NASDAQ"
14
+ BATS = "BATS"
15
+ C2 = "C2"
16
+ AUTO = "AUTO"
17
17
  end
18
18
  end
19
19
  end
@@ -1,9 +1,9 @@
1
1
  module SchwabRb::Orders::Duration
2
- DAY = 'DAY'
3
- GOOD_TILL_CANCEL = 'GOOD_TILL_CANCEL'
4
- FILL_OR_KILL = 'FILL_OR_KILL'
5
- IMMEDIATE_OR_CANCEL = 'IMMEDIATE_OR_CANCEL'
6
- END_OF_WEEK = 'END_OF_WEEK'
7
- END_OF_MONTH = 'END_OF_MONTH'
8
- NEXT_END_OF_MONTH = 'NEXT_END_OF_MONTH'
2
+ DAY = "DAY"
3
+ GOOD_TILL_CANCEL = "GOOD_TILL_CANCEL"
4
+ FILL_OR_KILL = "FILL_OR_KILL"
5
+ IMMEDIATE_OR_CANCEL = "IMMEDIATE_OR_CANCEL"
6
+ END_OF_WEEK = "END_OF_WEEK"
7
+ END_OF_MONTH = "END_OF_MONTH"
8
+ NEXT_END_OF_MONTH = "NEXT_END_OF_MONTH"
9
9
  end
@@ -1,10 +1,10 @@
1
1
  module SchwabRb
2
2
  module Orders
3
3
  module EquityInstructions
4
- BUY = 'BUY'
5
- SELL = 'SELL'
6
- SELL_SHORT = 'SELL_SHORT'
7
- BUY_TO_COVER = 'BUY_TO_COVER'
4
+ BUY = "BUY"
5
+ SELL = "SELL"
6
+ SELL_SHORT = "SELL_SHORT"
7
+ BUY_TO_COVER = "BUY_TO_COVER"
8
8
  end
9
9
  end
10
10
  end
@@ -2,12 +2,12 @@ module SchwabRb
2
2
  module Orders
3
3
  class Instrument
4
4
  module Projections
5
- SYMBOL_SEARCH = 'symbol-search'
6
- SYMBOL_REGEX = 'symbol-regex'
7
- DESCRIPTION_SEARCH = 'desc-search'
8
- DESCRIPTION_REGEX = 'desc-regex'
9
- SEARCH = 'search'
10
- FUNDAMENTAL = 'fundamental'
5
+ SYMBOL_SEARCH = "symbol-search"
6
+ SYMBOL_REGEX = "symbol-regex"
7
+ DESCRIPTION_SEARCH = "desc-search"
8
+ DESCRIPTION_REGEX = "desc-regex"
9
+ SEARCH = "search"
10
+ FUNDAMENTAL = "fundamental"
11
11
  end
12
12
  end
13
13
 
@@ -22,13 +22,13 @@ module SchwabRb
22
22
 
23
23
  class EquityInstrument < BaseInstrument
24
24
  def initialize(symbol)
25
- super('EQUITY', symbol)
25
+ super("EQUITY", symbol)
26
26
  end
27
27
  end
28
28
 
29
29
  class OptionInstrument < BaseInstrument
30
30
  def initialize(symbol)
31
- super('OPTION', symbol)
31
+ super("OPTION", symbol)
32
32
  end
33
33
  end
34
34
  end
@@ -1,15 +1,15 @@
1
1
  module SchwabRb
2
2
  module Orders
3
3
  module PriceLinkBasis
4
- MANUAL = 'MANUAL'
5
- BASE = 'BASE'
6
- TRIGGER = 'TRIGGER'
7
- LAST = 'LAST'
8
- BID = 'BID'
9
- ASK = 'ASK'
10
- ASK_BID = 'ASK_BID'
11
- MARK = 'MARK'
12
- AVERAGE = 'AVERAGE'
4
+ MANUAL = "MANUAL"
5
+ BASE = "BASE"
6
+ TRIGGER = "TRIGGER"
7
+ LAST = "LAST"
8
+ BID = "BID"
9
+ ASK = "ASK"
10
+ ASK_BID = "ASK_BID"
11
+ MARK = "MARK"
12
+ AVERAGE = "AVERAGE"
13
13
  end
14
14
  end
15
15
  end
@@ -1,9 +1,9 @@
1
1
  module SchwabRb
2
2
  module Orders
3
3
  module PriceLinkType
4
- VALUE = 'VALUE'
5
- PERCENT = 'PERCENT'
6
- TICK = 'TICK'
4
+ VALUE = "VALUE"
5
+ PERCENT = "PERCENT"
6
+ TICK = "TICK"
7
7
  end
8
8
  end
9
9
  end
@@ -1,14 +1,14 @@
1
1
  module SchwabRb::Orders::Session
2
2
  # Normal market hours, from 9:30am to 4:00pm Eastern.
3
- NORMAL = 'NORMAL'
3
+ NORMAL = "NORMAL"
4
4
 
5
5
  # Premarket session, from 8:00am to 9:30am Eastern.
6
- AM = 'AM'
6
+ AM = "AM"
7
7
 
8
8
  # After-market session, from 4:00pm to 8:00pm Eastern.
9
- PM = 'PM'
9
+ PM = "PM"
10
10
 
11
11
  # Orders are active during all trading sessions except the overnight
12
12
  # session. This is the union of ``NORMAL``, ``AM``, and ``PM``.
13
- SEAMLESS = 'SEAMLESS'
13
+ SEAMLESS = "SEAMLESS"
14
14
  end