cryptum 0.0.355 → 0.0.357

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. metadata +13 -116
  3. data/.github/workflows/main.yml +0 -16
  4. data/.gitignore +0 -30
  5. data/.rspec +0 -3
  6. data/.rspec_status +0 -0
  7. data/.rubocop.yml +0 -31
  8. data/.rubocop_todo.yml +0 -32
  9. data/.ruby-gemset +0 -1
  10. data/.ruby-version +0 -1
  11. data/CODE_OF_CONDUCT.md +0 -84
  12. data/Gemfile +0 -38
  13. data/LICENSE +0 -674
  14. data/README.md +0 -87
  15. data/Rakefile +0 -19
  16. data/bin/cryptum +0 -73
  17. data/bin/cryptum-forecast +0 -200
  18. data/bin/cryptum-repl +0 -73
  19. data/bin/cryptum_autoinc_version +0 -38
  20. data/build_cryptum_gem.sh +0 -58
  21. data/cryptum.gemspec +0 -52
  22. data/cryptum_container.sh +0 -1
  23. data/docker/cryptum.json +0 -60
  24. data/docker/cryptum_container.sh +0 -59
  25. data/docker/packer_secrets.json.EXAMPLE +0 -7
  26. data/docker/provisioners/cryptum.sh +0 -11
  27. data/docker/provisioners/docker_bashrc.sh +0 -2
  28. data/docker/provisioners/docker_rvm.sh +0 -22
  29. data/docker/provisioners/init_image.sh +0 -28
  30. data/docker/provisioners/post_install.sh +0 -6
  31. data/docker/provisioners/ruby.sh +0 -16
  32. data/docker/provisioners/upload_globals.sh +0 -49
  33. data/etc/bot_confs/.gitkeep +0 -0
  34. data/etc/bot_confs/BOT_CONF.TEMPLATE +0 -10
  35. data/etc/coinbase_pro.yaml.EXAMPLE +0 -8
  36. data/etc/open_ai.yaml.EXAMPLE +0 -1
  37. data/git_commit.sh +0 -22
  38. data/lib/cryptum/api.rb +0 -688
  39. data/lib/cryptum/bot_conf.rb +0 -197
  40. data/lib/cryptum/event/bot_conf.rb +0 -34
  41. data/lib/cryptum/event/buy.rb +0 -145
  42. data/lib/cryptum/event/cancel.rb +0 -35
  43. data/lib/cryptum/event/exit.rb +0 -35
  44. data/lib/cryptum/event/gtfo.rb +0 -36
  45. data/lib/cryptum/event/history.rb +0 -105
  46. data/lib/cryptum/event/key_press.rb +0 -64
  47. data/lib/cryptum/event/order_book.rb +0 -34
  48. data/lib/cryptum/event/pane.rb +0 -65
  49. data/lib/cryptum/event/parse.rb +0 -181
  50. data/lib/cryptum/event/scroll.rb +0 -200
  51. data/lib/cryptum/event/sell.rb +0 -124
  52. data/lib/cryptum/event.rb +0 -27
  53. data/lib/cryptum/log.rb +0 -34
  54. data/lib/cryptum/matrix.rb +0 -181
  55. data/lib/cryptum/open_ai.rb +0 -156
  56. data/lib/cryptum/option/choice.rb +0 -28
  57. data/lib/cryptum/option.rb +0 -206
  58. data/lib/cryptum/order_book/generate.rb +0 -114
  59. data/lib/cryptum/order_book/indicator.rb +0 -15
  60. data/lib/cryptum/order_book/market_trend.rb +0 -137
  61. data/lib/cryptum/order_book/profit_margin.rb +0 -55
  62. data/lib/cryptum/order_book.rb +0 -19
  63. data/lib/cryptum/portfolio/balance.rb +0 -123
  64. data/lib/cryptum/portfolio.rb +0 -15
  65. data/lib/cryptum/ui/command.rb +0 -314
  66. data/lib/cryptum/ui/key_press_event.rb +0 -33
  67. data/lib/cryptum/ui/market_trend.rb +0 -74
  68. data/lib/cryptum/ui/order_execute_details.rb +0 -297
  69. data/lib/cryptum/ui/order_execution.rb +0 -573
  70. data/lib/cryptum/ui/order_plan.rb +0 -503
  71. data/lib/cryptum/ui/order_plan_details.rb +0 -240
  72. data/lib/cryptum/ui/order_timer.rb +0 -121
  73. data/lib/cryptum/ui/portfolio.rb +0 -221
  74. data/lib/cryptum/ui/signal_engine.rb +0 -109
  75. data/lib/cryptum/ui/terminal_window.rb +0 -111
  76. data/lib/cryptum/ui/ticker.rb +0 -319
  77. data/lib/cryptum/ui.rb +0 -343
  78. data/lib/cryptum/version.rb +0 -5
  79. data/lib/cryptum/web_sock/coinbase.rb +0 -102
  80. data/lib/cryptum/web_sock/event_machine.rb +0 -274
  81. data/lib/cryptum/web_sock.rb +0 -16
  82. data/lib/cryptum.rb +0 -120
  83. data/order_books/.gitkeep +0 -0
  84. data/reinstall_cryptum_gemset.sh +0 -29
  85. data/spec/lib/cryptum/api_spec.rb +0 -10
  86. data/spec/lib/cryptum/event_spec.rb +0 -10
  87. data/spec/lib/cryptum/log_spec.rb +0 -10
  88. data/spec/lib/cryptum/option_spec.rb +0 -10
  89. data/spec/lib/cryptum/order_book/generate_spec.rb +0 -10
  90. data/spec/lib/cryptum/order_book/market_trend_spec.rb +0 -10
  91. data/spec/lib/cryptum/order_book_spec.rb +0 -10
  92. data/spec/lib/cryptum/ui/command_spec.rb +0 -10
  93. data/spec/lib/cryptum/ui/ticker_spec.rb +0 -10
  94. data/spec/lib/cryptum/ui_spec.rb +0 -10
  95. data/spec/lib/cryptum/web_sock_spec.rb +0 -10
  96. data/spec/lib/cryptum_spec.rb +0 -10
  97. data/spec/spec_helper.rb +0 -3
  98. data/upgrade_Gemfile_gems.sh +0 -20
  99. data/upgrade_cryptum.sh +0 -13
  100. data/upgrade_gem.sh +0 -4
  101. data/upgrade_ruby.sh +0 -45
@@ -1,573 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
-
5
- module Cryptum
6
- # This plugin is used to Refresh the Cryptum console UI
7
- module UI
8
- module OrderExecution
9
- # Supported Method Parameters::
10
- # Cryptum::UI::Candle.refresh(
11
- # order_book: 'required - Order Book Data Structure',
12
- # event: 'required - Event from Coinbase Web Socket'
13
- # )
14
-
15
- public_class_method def self.refresh(opts = {})
16
- option_choice = opts[:option_choice]
17
- order_execute_win = opts[:order_execute_win]
18
- env = opts[:env]
19
- event_history = opts[:event_history]
20
- indicator_status = opts[:indicator_status]
21
- bot_conf = opts[:bot_conf]
22
-
23
- event_type = event_history.event_type if option_choice.autotrade
24
- event_side = event_history.event[:side].to_s.to_sym if option_choice.autotrade
25
- event_reason = event_history.event[:reason].to_s.to_sym if option_choice.autotrade
26
-
27
- ticker_price = event_history.order_book[:ticker_price].to_f
28
- open_24h = event_history.order_book[:open_24h].to_f
29
- this_product = event_history.order_book[:this_product]
30
- min_market_funds = this_product[:min_market_funds]
31
- base_increment = this_product[:base_increment]
32
- quote_increment = this_product[:quote_increment]
33
- crypto_smallest_decimal = base_increment.to_s.split('.')[-1].length
34
- fiat_smallest_decimal = quote_increment.to_s.split('.')[-1].length
35
-
36
- last_three_prices_arr = []
37
- last_ticker_price = event_history.order_book[:ticker_price].to_f
38
- second_to_last_ticker_price = event_history.order_book[:ticker_price_second_to_last].to_f
39
- third_to_last_ticker_price = event_history.order_book[:ticker_price_third_to_last].to_f
40
- last_three_prices_arr.push(last_ticker_price)
41
- last_three_prices_arr.push(second_to_last_ticker_price)
42
- last_three_prices_arr.push(third_to_last_ticker_price)
43
- limit_price = last_three_prices_arr.sort[1]
44
- return event_history unless limit_price.positive?
45
-
46
- tpm = bot_conf[:target_profit_margin_percent].to_f
47
- tpm_cast_as_decimal = tpm / 100
48
-
49
- order_history_meta = event_history.order_book[:order_history_meta]
50
- order_history = event_history.order_book[:order_history] if option_choice.autotrade
51
-
52
- margin_percent_open_24h = (1 - (open_24h / ticker_price)) * 100
53
- cast_margin_to_sec = margin_percent_open_24h * 0.1
54
-
55
- # Reset times to max or default depending on
56
- # BULL or BEAR market trend
57
- event_history.bullish_trend = true if cast_margin_to_sec.positive?
58
- event_history.bullish_trend = false if cast_margin_to_sec.negative?
59
-
60
- buy_total = event_history.order_book[:market_trend][:buy].to_i
61
- sell_total = event_history.order_book[:market_trend][:sell].to_i
62
-
63
- if event_history.order_book[:order_plan].length.positive?
64
- if event_history.order_ready
65
- event_history.order_book[:last_order_exec] = Time.now.strftime(
66
- '%Y-%m-%d %H:%M:%S.%N%z'
67
- )
68
- end
69
-
70
- # BUY
71
- # Reset times to max or default depending on
72
- # BULL or BEAR market trend
73
- event_history.time_between_orders = event_history.time_between_orders_max if buy_total >= sell_total &&
74
- !event_history.bullish_trend
75
-
76
- event_history.time_between_orders = event_history.time_between_orders_reset if sell_total > buy_total &&
77
- !event_history.bullish_trend
78
-
79
- if event_history.order_ready &&
80
- indicator_status.action_signal == :buy &&
81
- !event_history.red_pill
82
-
83
- if option_choice.autotrade
84
- this_order = event_history.order_book[:order_plan].first
85
-
86
- price = format(
87
- "%0.#{fiat_smallest_decimal}f",
88
- limit_price
89
- )
90
-
91
- size = this_order[:invest].to_f / limit_price
92
-
93
- loop do
94
- size = size.to_f + base_increment.to_f
95
- break if (size.to_f * price.to_f) > min_market_funds.to_f
96
- end
97
-
98
- size = format(
99
- "%0.#{crypto_smallest_decimal}f",
100
- size
101
- )
102
-
103
- fiat_invested_this_order = size.to_f * price.to_f
104
-
105
- fiat_portfolio = event_history.order_book[:fiat_portfolio]
106
- fiat_avail_to_trade = format('%0.2f', fiat_portfolio.first[:available])
107
-
108
- event_history.red_pill = true if fiat_invested_this_order > fiat_avail_to_trade.to_f
109
-
110
- unless event_history.red_pill
111
- event_history = Cryptum::API.submit_limit_order(
112
- option_choice: option_choice,
113
- env: env,
114
- price: price,
115
- size: size,
116
- buy_or_sell: :buy,
117
- event_history: event_history,
118
- bot_conf: bot_conf
119
- )
120
- end
121
- else
122
- this_order = event_history.order_book[:order_plan].shift
123
- # Mock Order ID
124
- this_order[:buy_order_id] = format(
125
- '%0.6i',
126
- Random.rand(0..999_999)
127
- )
128
-
129
- this_order[:price] = limit_price.to_s
130
- this_order[:size] = format(
131
- "%0.#{crypto_smallest_decimal}f",
132
- this_order[:invest].to_f / limit_price
133
- )
134
-
135
- targ_price = limit_price + (limit_price * tpm_cast_as_decimal)
136
- this_order[:tpm] = format(
137
- '%0.2f',
138
- tpm
139
- )
140
- this_order[:target_price] = format(
141
- "%0.#{fiat_smallest_decimal}f",
142
- targ_price
143
- )
144
- this_order[:color] = :cyan
145
- order_history_meta.push(this_order)
146
- end
147
-
148
- # SAUCE 3
149
- # Time between orders
150
- # Increment n Seconds between buys to
151
- # account for bearish and bullish trends
152
- dynamic_time_increment = cast_margin_to_sec * -1
153
-
154
- # Lets also take balance into play
155
- balance_as_arbitrary_float = fiat_avail_to_trade.to_f / 1_000_000
156
- tbo = dynamic_time_increment - balance_as_arbitrary_float
157
-
158
- event_history.time_between_orders += tbo
159
-
160
- # Time between orders should never
161
- # be less than event_history.time_between_orders_min
162
- event_history.time_between_orders = event_history.time_between_orders_min if event_history.time_between_orders < event_history.time_between_orders_min
163
- # Time between orders should never
164
- # be more than event_history.time_between_orders_max
165
- event_history.time_between_orders = event_history.time_between_orders_max if event_history.time_between_orders > event_history.time_between_orders_max
166
- end
167
-
168
- # SELL
169
- # Once buy arders are fulfilled submit a
170
- # limit sell order for fulfillment
171
- unless option_choice.autotrade
172
- # Testing logic via Mock
173
- event_type_arr = %i[received open done]
174
- last_et_index = event_type_arr.length - 1
175
- rand_et_index = Random.rand(0..last_et_index)
176
- event_type = event_type_arr[rand_et_index]
177
-
178
- event_side_arr = %i[buy sell]
179
- last_es_index = event_side_arr.length - 1
180
- rand_es_index = Random.rand(0..last_es_index)
181
- event_side = event_type_arr[rand_es_index].to_s.to_sym
182
- event_reason = 'mock'
183
- end
184
- end
185
-
186
- # Update Completed Sell Orders w/ Green
187
- if event_type == :open &&
188
- event_side == :buy
189
-
190
- buy_order_id = event_history.event[:order_id]
191
- order_history_meta.each do |meta|
192
- meta[:color] = :red if meta[:buy_order_id] == buy_order_id
193
- end
194
- end
195
-
196
- if event_type == :done &&
197
- event_side == :buy &&
198
- event_reason == :canceled
199
-
200
- buy_order_id = event_history.event[:order_id]
201
- order_history_meta.each do |meta|
202
- next unless meta[:buy_order_id] == buy_order_id
203
-
204
- meta[:done_at] = Time.now.strftime('%Y-%m-%d %H:%M:%S.%N%z')
205
- meta[:color] = :white
206
- end
207
- end
208
-
209
- if event_type == :done &&
210
- event_side == :buy &&
211
- event_reason != :canceled
212
-
213
- if option_choice.autotrade
214
- order_ready_to_sell_arr = order_history_meta.select do |meta|
215
- meta[:buy_order_id] == event_history.event[:order_id]
216
- end
217
- else
218
- last_index = order_history_meta.length - 1
219
- rand_index = Random.rand(0..last_index)
220
- order_ready_to_sell_arr = [
221
- order_history_meta[rand_index]
222
- ]
223
- end
224
-
225
- if order_ready_to_sell_arr.length.positive?
226
- order_ready_to_sell = order_ready_to_sell_arr.first
227
- buy_order_id = order_ready_to_sell[:buy_order_id]
228
-
229
- if option_choice.autotrade
230
- price = format(
231
- "%0.#{fiat_smallest_decimal}f",
232
- order_ready_to_sell[:target_price]
233
- )
234
-
235
- size = order_ready_to_sell[:size]
236
-
237
- Cryptum::API.submit_limit_order(
238
- option_choice: option_choice,
239
- env: env,
240
- price: price,
241
- size: size,
242
- buy_or_sell: :sell,
243
- event_history: event_history,
244
- bot_conf: bot_conf,
245
- buy_order_id: buy_order_id
246
- )
247
- else
248
- sell_order_id = format(
249
- '%0.2i',
250
- Random.rand(0..999_999)
251
- )
252
-
253
- event_history.order_book[:order_history_meta].each do |meta|
254
- if meta[:buy_order_id] == buy_order_id
255
- meta[:sell_order_id] = sell_order_id
256
- meta[:color] = :yellow
257
- end
258
- end
259
- end
260
- end
261
- end
262
-
263
- # Update Canceled Sell Orders w/ Black &&
264
- # Include done_at Timestamp for 24h gain calc
265
- if event_type == :done &&
266
- event_side == :sell &&
267
- event_reason == :canceled
268
-
269
- sell_order_id = event_history.event[:order_id]
270
- order_history_meta.each do |meta|
271
- next unless meta[:sell_order_id] == sell_order_id
272
-
273
- meta[:done_at] = Time.now.strftime('%Y-%m-%d %H:%M:%S.%N%z')
274
-
275
- # TODO: Retry sell order if the original sell order expires.
276
-
277
- # Reinitiate GTFO if the previous GTFO Order Expires.
278
- terminal_win.key_press_event.key_g = true if meta[:color] == :magenta
279
- meta[:color] = :white
280
- end
281
- end
282
-
283
- # Update Completed Sell Orders w/ Green &&
284
- # Include done_at Timestamp for 24h gain calc
285
- if event_type == :done &&
286
- event_side == :sell &&
287
- event_reason != :canceled
288
-
289
- sell_order_id = event_history.event[:order_id]
290
- order_history_meta.each do |meta|
291
- next unless meta[:sell_order_id] == sell_order_id
292
-
293
- meta[:done_at] = Time.now.strftime('%Y-%m-%d %H:%M:%S.%N%z')
294
- meta[:color] = :green
295
- end
296
- end
297
-
298
- # OK, now let's tally up everything...
299
- twenty_four_hrs_ago = Time.now - 86_400
300
-
301
- # Snag all sold orders
302
- oh_meta_sold_arr = order_history_meta.select do |ohm|
303
- ohm[:color].to_sym == :green && ohm.key?(:done_at)
304
- end
305
-
306
- # Snag all sold orders within past 24 hrs
307
- ohm_sold_twenty_four_arr = []
308
- unless oh_meta_sold_arr.empty?
309
- ohm_sold_twenty_four_arr = oh_meta_sold_arr.select do |o|
310
- Time.parse(o[:done_at]) >= twenty_four_hrs_ago
311
- end
312
- end
313
- order_hist_meta_sold = ohm_sold_twenty_four_arr.length
314
-
315
- # Snag all expired orders
316
- oh_meta_expired_arr = order_history_meta.select do |ohm|
317
- ohm[:color].to_sym == :white && ohm.key?(:done_at)
318
- end
319
-
320
- # Snag all expired orders within past 24 hrs
321
- ohm_expire_twenty_four_arr = []
322
- unless oh_meta_expired_arr.empty?
323
- ohm_expire_twenty_four_arr = oh_meta_expired_arr.select do |o|
324
- Time.parse(o[:done_at]) >= twenty_four_hrs_ago
325
- end
326
- end
327
- order_hist_meta_expired = ohm_expire_twenty_four_arr.length
328
-
329
- # Calculate gains within past 24 hrs
330
- gains_24h_sum = ohm_sold_twenty_four_arr.map do |ohms|
331
- ohms[:profit].to_f
332
- end.sum
333
-
334
- gains_24h_out = Cryptum.beautify_large_number(
335
- value: format(
336
- '%0.2f',
337
- gains_24h_sum
338
- )
339
- )
340
-
341
- total_to_sell = order_history.select do |oh|
342
- oh[:status].to_sym == :open && oh[:side].to_sym == :sell
343
- end.length
344
- event_history.open_sell_orders = total_to_sell
345
- # TODO: when event_history.open_sell_orders > event_history.open_sell_orders_max
346
- # Capture highest amount to sell, cancel all orders, and create _one_ limit sell
347
- # order set to a price of the previously captured highest amount to sell.
348
- event_history.open_sell_orders_merge = true if total_to_sell > event_history.open_sell_orders_max
349
-
350
- # TODO: Everything Above this Line Needs to be Indicators ^
351
-
352
- # UI
353
- col_just1 = (Curses.cols - Cryptum::UI.col_first) - 1
354
- col_just4 = Curses.cols - Cryptum::UI.col_fourth
355
-
356
- # ROW 1
357
- out_line_no = 0
358
- line_color = :white
359
- header_color = :white
360
- header_style = :bold
361
- style = :bold
362
- if event_history.order_execute_win_active
363
- line_color = :blue
364
- header_color = :blue
365
- header_style = :reverse
366
- end
367
-
368
- Cryptum::UI.line(
369
- ui_win: order_execute_win,
370
- out_line_no: out_line_no,
371
- color: line_color
372
- )
373
-
374
- # ROW 2
375
- out_line_no += 1
376
- order_execute_win.setpos(out_line_no, Cryptum::UI.col_first)
377
- order_execute_win.clrtoeol
378
- Cryptum::UI.colorize(
379
- ui_win: order_execute_win,
380
- color: header_color,
381
- style: header_style,
382
- string: ''.ljust(col_just1, ' ')
383
- )
384
-
385
- header_str = '- ORDER HISTORY -'
386
- order_execute_win.setpos(
387
- out_line_no,
388
- Cryptum::UI.col_center(str: header_str)
389
- )
390
-
391
- Cryptum::UI.colorize(
392
- ui_win: order_execute_win,
393
- color: header_color,
394
- style: header_style,
395
- string: header_str
396
- )
397
-
398
- order_execute_win.setpos(out_line_no, Cryptum::UI.col_fourth)
399
- order_execute_win.clrtoeol
400
- Cryptum::UI.colorize(
401
- ui_win: order_execute_win,
402
- color: header_color,
403
- style: header_style,
404
- string: ''.ljust(col_just4, ' ')
405
- )
406
-
407
- # ROWS 3-10
408
- remaining_blank_rows = 0
409
- remaining_blank_rows = max_rows_to_display if order_history_meta.empty?
410
- max_rows_to_display = event_history.order_execute_max_rows_to_display
411
- first_row = event_history.order_execute_index_offset
412
- last_row = first_row + max_rows_to_display
413
- if last_row >= order_history_meta.length
414
- last_row = order_history_meta.length - 1
415
- event_history.order_execute_max_records_available_to_display = last_row if last_row < max_rows_to_display
416
- first_row = last_row - event_history.order_execute_max_records_available_to_display
417
- event_history.order_execute_index_offset = first_row
418
- remaining_blank_rows = max_rows_to_display - last_row
419
- end
420
-
421
- if order_history_meta.any?
422
- selected_order = event_history.order_execute_selected_data
423
- order_history_meta.reverse[first_row..last_row].each do |meta|
424
- out_line_no += 1
425
- current_line = out_line_no - 2
426
-
427
- style = :normal
428
- if event_history.order_execute_row_to_select == current_line
429
- style = :highlight
430
- selected_order = meta
431
- selected_order[:color] = meta[:color]
432
- end
433
-
434
- invest_out = Cryptum.beautify_large_number(
435
- value: meta[:invest]
436
- )
437
- price_out = Cryptum.beautify_large_number(
438
- value: meta[:price]
439
- )
440
- size_out = Cryptum.beautify_large_number(
441
- value: meta[:size]
442
- )
443
- target_price_out = Cryptum.beautify_large_number(
444
- value: meta[:target_price]
445
- )
446
- plan_no = meta[:plan_no]
447
-
448
- buy_created_at_hash_arr = order_history.select do |oh|
449
- oh[:id] == meta[:buy_order_id]
450
- end
451
-
452
- buy_created_at = '____-__-__ __:__:__'
453
- unless buy_created_at_hash_arr.empty?
454
- buy_created_at = Time.parse(
455
- buy_created_at_hash_arr.first[:created_at]
456
- ).strftime('%Y-%m-%d %H:%M:%S')
457
- end
458
-
459
- invest = "$#{invest_out} @ "
460
- tick = "$#{price_out} = "
461
- size = "*#{size_out} + "
462
- tpm_out = "#{meta[:tpm]}% = "
463
- targ_tick = "$#{target_price_out}"
464
- profit = "|Profit: $#{meta[:profit]}"
465
-
466
- order_exec_ln = "#{buy_created_at}|#{invest}#{tick}#{size}#{tpm_out}#{targ_tick}#{profit}|#{plan_no}"
467
-
468
- order_execute_win.setpos(out_line_no, Cryptum::UI.col_first)
469
- order_execute_win.clrtoeol
470
- Cryptum::UI.colorize(
471
- ui_win: order_execute_win,
472
- color: meta[:color],
473
- style: style,
474
- string: order_exec_ln.ljust(col_just1, '.')
475
- )
476
-
477
- Cryptum::UI.colorize(
478
- ui_win: order_execute_win,
479
- color: meta[:color],
480
- style: style,
481
- string: ''.ljust(col_just4, ' ')
482
- )
483
- end
484
- event_history.order_execute_selected_data = selected_order
485
- end
486
-
487
- # Clear to SUMMARY
488
- # (Only Applicable if order_book[:order_history_meta] < max_rows_to_display)
489
- # out_line_no += 1
490
- if remaining_blank_rows.positive?
491
- rows_to_blank = out_line_no + remaining_blank_rows
492
- out_line_no += 1
493
- (out_line_no..rows_to_blank).each do |clr_line|
494
- out_line_no = clr_line
495
- order_execute_win.setpos(clr_line, Cryptum::UI.col_first)
496
- order_execute_win.clrtoeol
497
- Cryptum::UI.colorize(
498
- ui_win: order_execute_win,
499
- color: :white,
500
- style: :normal,
501
- string: ''.ljust(col_just1, ' ')
502
- )
503
- end
504
- end
505
-
506
- # ROW 10
507
- out_line_no += 1
508
- order_execute_win.setpos(out_line_no, Cryptum::UI.col_first)
509
- order_execute_win.clrtoeol
510
- Cryptum::UI.colorize(
511
- ui_win: order_execute_win,
512
- color: header_color,
513
- style: header_style,
514
- string: ''.ljust(col_just1, ' ')
515
- )
516
-
517
- header_str = "24 HR SUMMARY | Open Sell Orders: #{total_to_sell} | Sold: #{order_hist_meta_sold} | Gains: $#{gains_24h_out} | Expired: #{order_hist_meta_expired}"
518
- order_execute_win.setpos(
519
- out_line_no,
520
- Cryptum::UI.col_center(str: header_str)
521
- )
522
-
523
- Cryptum::UI.colorize(
524
- ui_win: order_execute_win,
525
- color: header_color,
526
- style: header_style,
527
- string: header_str
528
- )
529
-
530
- order_execute_win.setpos(out_line_no, Cryptum::UI.col_fourth)
531
- order_execute_win.clrtoeol
532
- Cryptum::UI.colorize(
533
- ui_win: order_execute_win,
534
- color: header_color,
535
- style: header_style,
536
- string: ''.ljust(col_just4, ' ')
537
- )
538
-
539
- # ROW 11
540
- out_line_no += 1
541
- Cryptum::UI.line(
542
- ui_win: order_execute_win,
543
- out_line_no: out_line_no,
544
- color: line_color
545
- )
546
-
547
- order_execute_win.refresh
548
-
549
- # Reset Order Ready && Open Sell Orders Merge (If Applicable) Booleans
550
- event_history.order_ready = false
551
- event_history.open_sell_orders_merge = false
552
-
553
- event_history
554
- rescue Interrupt
555
- # Exit Gracefully if CTRL+C is Pressed During Session
556
- Cryptum.exit_gracefully(which_self: self)
557
- rescue StandardError => e
558
- raise e
559
- end
560
-
561
- # Display Usage for this Module
562
-
563
- public_class_method def self.help
564
- puts "USAGE:
565
- #{self}.refresh(
566
- order_book: 'required - Order Book Data Structure',
567
- event: 'required - Event from Coinbase Web Socket'
568
- )
569
- "
570
- end
571
- end
572
- end
573
- end