cryptum 0.0.253 → 0.0.255
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/.rubocop_todo.yml +16 -16
- data/lib/cryptum/api.rb +0 -1
- data/lib/cryptum/event/history.rb +9 -1
- data/lib/cryptum/event.rb +1 -1
- data/lib/cryptum/ui/command.rb +72 -34
- data/lib/cryptum/ui/key_press_event.rb +8 -2
- data/lib/cryptum/ui/order_execution.rb +26 -5
- data/lib/cryptum/ui/order_plan.rb +26 -5
- data/lib/cryptum/ui/order_timer.rb +13 -14
- data/lib/cryptum/ui/terminal_window.rb +5 -5
- data/lib/cryptum/ui/ticker.rb +7 -16
- data/lib/cryptum/ui.rb +34 -17
- data/lib/cryptum/version.rb +1 -1
- data/lib/cryptum/web_sock/event_machine.rb +48 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 821d3666c9176e49b63ba26c032d24a901e1c5eab538726d8b675860156190fd
|
4
|
+
data.tar.gz: 7a58108f07d42aefce9112c6349e76c802590ed9e21b829f3d96ae22700483de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97c6fc6168fd04c6f4c6d55994ab27908977c4c7969aff195a60fb01f3e7a43f510056a16ff49f3e08e5d1f0f701f7f0633e85eda55ee4f4333ddcdbea169996
|
7
|
+
data.tar.gz: 98a384029779c042d4059ed5194ffd65ba9179bfe7e1cc8a1746efc30cc53ee06be84bce7190adb4a893dca6114e4a950b739217b6906b41035d563b64672862
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2022-
|
3
|
+
# on 2022-12-01 03:19:16 UTC using RuboCop version 1.39.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -120,41 +120,41 @@ Lint/UselessAssignment:
|
|
120
120
|
- 'lib/cryptum/ui/signal_engine.rb'
|
121
121
|
- 'lib/cryptum/ui/ticker.rb'
|
122
122
|
|
123
|
-
# Offense count:
|
124
|
-
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
123
|
+
# Offense count: 39
|
124
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes.
|
125
125
|
Metrics/AbcSize:
|
126
|
-
Max:
|
126
|
+
Max: 384
|
127
127
|
|
128
128
|
# Offense count: 7
|
129
|
-
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
130
|
-
#
|
129
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
|
130
|
+
# AllowedMethods: refine
|
131
131
|
Metrics/BlockLength:
|
132
|
-
Max:
|
132
|
+
Max: 117
|
133
133
|
|
134
134
|
# Offense count: 4
|
135
135
|
# Configuration parameters: CountBlocks.
|
136
136
|
Metrics/BlockNesting:
|
137
137
|
Max: 4
|
138
138
|
|
139
|
-
# Offense count:
|
140
|
-
# Configuration parameters: IgnoredMethods.
|
139
|
+
# Offense count: 16
|
140
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
|
141
141
|
Metrics/CyclomaticComplexity:
|
142
|
-
Max:
|
142
|
+
Max: 72
|
143
143
|
|
144
144
|
# Offense count: 56
|
145
|
-
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
145
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
|
146
146
|
Metrics/MethodLength:
|
147
|
-
Max:
|
147
|
+
Max: 361
|
148
148
|
|
149
149
|
# Offense count: 15
|
150
150
|
# Configuration parameters: CountComments, CountAsOne.
|
151
151
|
Metrics/ModuleLength:
|
152
152
|
Max: 538
|
153
153
|
|
154
|
-
# Offense count:
|
155
|
-
# Configuration parameters: IgnoredMethods.
|
154
|
+
# Offense count: 17
|
155
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods.
|
156
156
|
Metrics/PerceivedComplexity:
|
157
|
-
Max:
|
157
|
+
Max: 75
|
158
158
|
|
159
159
|
# Offense count: 1
|
160
160
|
# Configuration parameters: AllowedConstants.
|
@@ -183,7 +183,7 @@ Style/Next:
|
|
183
183
|
|
184
184
|
# Offense count: 4
|
185
185
|
# This cop supports safe autocorrection (--autocorrect).
|
186
|
-
# Configuration parameters: Strict, AllowedNumbers.
|
186
|
+
# Configuration parameters: Strict, AllowedNumbers, AllowedPatterns.
|
187
187
|
Style/NumericLiterals:
|
188
188
|
MinDigits: 7
|
189
189
|
|
data/lib/cryptum/api.rb
CHANGED
@@ -438,7 +438,6 @@ module Cryptum
|
|
438
438
|
public_class_method def self.cancel_all_open_orders(opts = {})
|
439
439
|
env = opts[:env]
|
440
440
|
option_choice = opts[:option_choice]
|
441
|
-
# order_type = opts[:order_type]
|
442
441
|
event_notes = opts[:event_notes]
|
443
442
|
|
444
443
|
product_id = option_choice.symbol.to_s.gsub('_', '-').upcase
|
@@ -24,7 +24,11 @@ module Cryptum
|
|
24
24
|
:time_between_orders,
|
25
25
|
:time_between_orders_max,
|
26
26
|
:time_between_orders_min,
|
27
|
-
:time_between_orders_reset
|
27
|
+
:time_between_orders_reset,
|
28
|
+
:order_plan_win_highlighted,
|
29
|
+
:order_plan_line,
|
30
|
+
:order_execute_win_highlighted,
|
31
|
+
:order_execute_line
|
28
32
|
|
29
33
|
def initialize(opts = {})
|
30
34
|
# option_choice = opts[:option_choice]
|
@@ -42,6 +46,10 @@ module Cryptum
|
|
42
46
|
self.reconnected = false
|
43
47
|
self.red_pill = false
|
44
48
|
self.reset_market_trend = false
|
49
|
+
self.order_plan_win_highlighted = true
|
50
|
+
self.order_plan_line = 0
|
51
|
+
self.order_execute_win_highlighted = false
|
52
|
+
self.order_execute_line = 0
|
45
53
|
|
46
54
|
# 10 minutes
|
47
55
|
self.time_between_orders = 600
|
data/lib/cryptum/event.rb
CHANGED
@@ -6,7 +6,7 @@ module Cryptum
|
|
6
6
|
# This plugin is used to parse Coinbase Pro Web Socket Events in the HTTP Response
|
7
7
|
module Event
|
8
8
|
autoload :Buy, 'cryptum/event/buy'
|
9
|
-
autoload :
|
9
|
+
autoload :Buy, 'cryptum/event/cancel'
|
10
10
|
autoload :History, 'cryptum/event/history'
|
11
11
|
autoload :KeyPress, 'cryptum/event/key_press'
|
12
12
|
autoload :Sell, 'cryptum/event/sell'
|
data/lib/cryptum/ui/command.rb
CHANGED
@@ -19,6 +19,14 @@ module Cryptum
|
|
19
19
|
ui_win: command_win
|
20
20
|
)
|
21
21
|
|
22
|
+
if key_press_event.key_c
|
23
|
+
key_c_color = :cyan
|
24
|
+
key_c_style = :reverse
|
25
|
+
else
|
26
|
+
key_c_color = :white
|
27
|
+
key_c_style = :bold
|
28
|
+
end
|
29
|
+
|
22
30
|
if key_press_event.key_g
|
23
31
|
key_g_color = :cyan
|
24
32
|
key_g_style = :reverse
|
@@ -62,19 +70,23 @@ module Cryptum
|
|
62
70
|
command_str_r2_arr = [
|
63
71
|
"* v#{Cryptum::VERSION} >>> ",
|
64
72
|
'[',
|
73
|
+
'C',
|
74
|
+
']ancel Open Orders',
|
75
|
+
' | ',
|
76
|
+
'[',
|
65
77
|
'G',
|
66
78
|
']TFO',
|
67
79
|
' | ',
|
68
80
|
'[',
|
69
81
|
'r',
|
70
|
-
']eload bot conf'
|
71
|
-
' | ',
|
72
|
-
'[',
|
73
|
-
'u',
|
74
|
-
']pdate summary'
|
82
|
+
']eload bot conf'
|
75
83
|
]
|
76
84
|
|
77
85
|
command_str_r3_arr = [
|
86
|
+
'[',
|
87
|
+
'u',
|
88
|
+
']pdate summary',
|
89
|
+
' | ',
|
78
90
|
'[',
|
79
91
|
'w',
|
80
92
|
']rite order book',
|
@@ -85,19 +97,13 @@ module Cryptum
|
|
85
97
|
]
|
86
98
|
# ROW 1
|
87
99
|
out_line_no = 0
|
88
|
-
Cryptum::UI.line(
|
89
|
-
ui_win: command_win,
|
90
|
-
out_line_no: out_line_no
|
91
|
-
)
|
92
|
-
|
93
|
-
# ROW 2
|
94
|
-
out_line_no += 1
|
95
100
|
command_win.setpos(
|
96
101
|
out_line_no,
|
97
102
|
Cryptum::UI.col_center(str: command_str_r2_arr.join(''))
|
98
103
|
)
|
99
104
|
command_win.clrtoeol
|
100
105
|
|
106
|
+
# * v#{Cryptum::VERSION} >>>
|
101
107
|
Cryptum::UI.colorize(
|
102
108
|
ui_win: command_win,
|
103
109
|
color: :yellow,
|
@@ -105,24 +111,25 @@ module Cryptum
|
|
105
111
|
string: command_str_r2_arr.first
|
106
112
|
)
|
107
113
|
|
114
|
+
# [C]ancel Open Orders
|
108
115
|
Cryptum::UI.colorize(
|
109
116
|
ui_win: command_win,
|
110
|
-
color:
|
111
|
-
style:
|
117
|
+
color: key_c_color,
|
118
|
+
style: key_c_style,
|
112
119
|
string: command_str_r2_arr[1]
|
113
120
|
)
|
114
121
|
|
115
122
|
Cryptum::UI.colorize(
|
116
123
|
ui_win: command_win,
|
117
124
|
color: :yellow,
|
118
|
-
style:
|
125
|
+
style: key_c_style,
|
119
126
|
string: command_str_r2_arr[2]
|
120
127
|
)
|
121
128
|
|
122
129
|
Cryptum::UI.colorize(
|
123
130
|
ui_win: command_win,
|
124
|
-
color:
|
125
|
-
style:
|
131
|
+
color: key_c_color,
|
132
|
+
style: key_c_style,
|
126
133
|
string: command_str_r2_arr[3]
|
127
134
|
)
|
128
135
|
|
@@ -133,24 +140,24 @@ module Cryptum
|
|
133
140
|
string: command_str_r2_arr[4]
|
134
141
|
)
|
135
142
|
|
143
|
+
# [G]TFO
|
136
144
|
Cryptum::UI.colorize(
|
137
145
|
ui_win: command_win,
|
138
|
-
color:
|
139
|
-
style:
|
146
|
+
color: key_g_color,
|
147
|
+
style: key_g_style,
|
140
148
|
string: command_str_r2_arr[5]
|
141
149
|
)
|
142
150
|
|
143
151
|
Cryptum::UI.colorize(
|
144
152
|
ui_win: command_win,
|
145
153
|
color: :yellow,
|
146
|
-
style:
|
154
|
+
style: key_g_style,
|
147
155
|
string: command_str_r2_arr[6]
|
148
156
|
)
|
149
157
|
|
150
158
|
Cryptum::UI.colorize(
|
151
159
|
ui_win: command_win,
|
152
|
-
color:
|
153
|
-
style: key_r_style,
|
160
|
+
color: key_g_color,
|
154
161
|
string: command_str_r2_arr[7]
|
155
162
|
)
|
156
163
|
|
@@ -161,25 +168,26 @@ module Cryptum
|
|
161
168
|
string: command_str_r2_arr[8]
|
162
169
|
)
|
163
170
|
|
171
|
+
# [r]eload bot conf
|
164
172
|
Cryptum::UI.colorize(
|
165
173
|
ui_win: command_win,
|
166
|
-
color:
|
167
|
-
style:
|
174
|
+
color: key_r_color,
|
175
|
+
style: key_r_style,
|
168
176
|
string: command_str_r2_arr[9]
|
169
177
|
)
|
170
178
|
|
171
179
|
Cryptum::UI.colorize(
|
172
180
|
ui_win: command_win,
|
173
181
|
color: :yellow,
|
174
|
-
style:
|
182
|
+
style: key_r_style,
|
175
183
|
string: command_str_r2_arr[10]
|
176
184
|
)
|
177
185
|
|
178
186
|
Cryptum::UI.colorize(
|
179
187
|
ui_win: command_win,
|
180
|
-
color:
|
181
|
-
style:
|
182
|
-
string: command_str_r2_arr
|
188
|
+
color: key_r_color,
|
189
|
+
style: key_r_style,
|
190
|
+
string: command_str_r2_arr.last
|
183
191
|
)
|
184
192
|
|
185
193
|
# ROW 3
|
@@ -190,46 +198,76 @@ module Cryptum
|
|
190
198
|
)
|
191
199
|
command_win.clrtoeol
|
192
200
|
|
201
|
+
# [u]date summary
|
202
|
+
Cryptum::UI.colorize(
|
203
|
+
ui_win: command_win,
|
204
|
+
color: key_u_color,
|
205
|
+
string: command_str_r3_arr.first
|
206
|
+
)
|
207
|
+
|
208
|
+
Cryptum::UI.colorize(
|
209
|
+
ui_win: command_win,
|
210
|
+
color: :yellow,
|
211
|
+
style: key_u_style,
|
212
|
+
string: command_str_r3_arr[1]
|
213
|
+
)
|
214
|
+
|
215
|
+
Cryptum::UI.colorize(
|
216
|
+
ui_win: command_win,
|
217
|
+
color: key_u_color,
|
218
|
+
style: key_u_style,
|
219
|
+
string: command_str_r3_arr[2]
|
220
|
+
)
|
221
|
+
|
222
|
+
# |
|
223
|
+
Cryptum::UI.colorize(
|
224
|
+
ui_win: command_win,
|
225
|
+
color: :white,
|
226
|
+
string: command_str_r3_arr[3]
|
227
|
+
)
|
228
|
+
|
229
|
+
# [w]rite order book
|
193
230
|
Cryptum::UI.colorize(
|
194
231
|
ui_win: command_win,
|
195
232
|
color: key_w_color,
|
196
233
|
style: key_w_style,
|
197
|
-
string: command_str_r3_arr
|
234
|
+
string: command_str_r3_arr[4]
|
198
235
|
)
|
199
236
|
|
200
237
|
Cryptum::UI.colorize(
|
201
238
|
ui_win: command_win,
|
202
239
|
color: :yellow,
|
203
240
|
style: key_w_style,
|
204
|
-
string: command_str_r3_arr[
|
241
|
+
string: command_str_r3_arr[5]
|
205
242
|
)
|
206
243
|
|
207
244
|
Cryptum::UI.colorize(
|
208
245
|
ui_win: command_win,
|
209
246
|
color: key_w_color,
|
210
247
|
style: key_w_style,
|
211
|
-
string: command_str_r3_arr[
|
248
|
+
string: command_str_r3_arr[6]
|
212
249
|
)
|
213
250
|
|
214
251
|
# |
|
215
252
|
Cryptum::UI.colorize(
|
216
253
|
ui_win: command_win,
|
217
254
|
color: :white,
|
218
|
-
string: command_str_r3_arr[
|
255
|
+
string: command_str_r3_arr[7]
|
219
256
|
)
|
220
257
|
|
258
|
+
# e[x]it
|
221
259
|
Cryptum::UI.colorize(
|
222
260
|
ui_win: command_win,
|
223
261
|
color: key_x_color,
|
224
262
|
style: key_x_style,
|
225
|
-
string: command_str_r3_arr[
|
263
|
+
string: command_str_r3_arr[8]
|
226
264
|
)
|
227
265
|
|
228
266
|
Cryptum::UI.colorize(
|
229
267
|
ui_win: command_win,
|
230
268
|
color: :yellow,
|
231
269
|
style: key_x_style,
|
232
|
-
string: command_str_r3_arr[
|
270
|
+
string: command_str_r3_arr[9]
|
233
271
|
)
|
234
272
|
|
235
273
|
Cryptum::UI.colorize(
|
@@ -4,11 +4,17 @@ module Cryptum
|
|
4
4
|
module UI
|
5
5
|
# This Class is Used to Detect Key Press Events
|
6
6
|
class KeyPressEvent
|
7
|
-
attr_accessor :
|
7
|
+
attr_accessor :key_c,
|
8
|
+
:key_g,
|
8
9
|
:key_r,
|
9
10
|
:key_u,
|
10
11
|
:key_w,
|
11
|
-
:key_x
|
12
|
+
:key_x,
|
13
|
+
:key_ansi,
|
14
|
+
:key_down,
|
15
|
+
:key_esc,
|
16
|
+
:key_tab,
|
17
|
+
:key_up
|
12
18
|
|
13
19
|
rescue Interrupt
|
14
20
|
# Exit Gracefully if CTRL+C is Pressed During Session
|
@@ -375,9 +375,14 @@ module Cryptum
|
|
375
375
|
|
376
376
|
# ROW 1
|
377
377
|
out_line_no = 0
|
378
|
+
line_color = :white
|
379
|
+
style = :bold
|
380
|
+
line_color = :red if event_history.order_execute_win_highlighted
|
381
|
+
|
378
382
|
Cryptum::UI.line(
|
379
383
|
ui_win: order_execute_win,
|
380
|
-
out_line_no: out_line_no
|
384
|
+
out_line_no: out_line_no,
|
385
|
+
color: line_color
|
381
386
|
)
|
382
387
|
|
383
388
|
# ROW 2
|
@@ -387,7 +392,7 @@ module Cryptum
|
|
387
392
|
Cryptum::UI.colorize(
|
388
393
|
ui_win: order_execute_win,
|
389
394
|
color: :white,
|
390
|
-
style:
|
395
|
+
style: style,
|
391
396
|
string: 'Open Sell Orders | 24 Hr Stats:'
|
392
397
|
)
|
393
398
|
|
@@ -395,6 +400,7 @@ module Cryptum
|
|
395
400
|
Cryptum::UI.colorize(
|
396
401
|
ui_win: order_execute_win,
|
397
402
|
color: :white,
|
403
|
+
style: style,
|
398
404
|
string: "#{total_to_sell} | #{order_hist_meta_expired} Expired | #{order_hist_meta_sold} Sold | $#{gains_24h_out} Gained".rjust(
|
399
405
|
col_just3,
|
400
406
|
'.'
|
@@ -405,15 +411,24 @@ module Cryptum
|
|
405
411
|
out_line_no += 1
|
406
412
|
Cryptum::UI.line(
|
407
413
|
ui_win: order_execute_win,
|
408
|
-
out_line_no: out_line_no
|
414
|
+
out_line_no: out_line_no,
|
415
|
+
color: line_color
|
409
416
|
)
|
410
417
|
|
411
418
|
|
412
419
|
# ROWS 4-10
|
413
|
-
|
420
|
+
first_row = event_history.order_execute_line
|
421
|
+
last_row = first_row + 6
|
422
|
+
if last_row >= order_history_meta.length
|
423
|
+
last_row = order_history_meta.length - 1
|
424
|
+
first_row = last_row - 6
|
425
|
+
event_history.order_execute_line = first_row
|
426
|
+
end
|
427
|
+
|
428
|
+
order_history_meta.reverse[first_row..last_row].each do |meta|
|
414
429
|
out_line_no += 1
|
415
430
|
style = :normal
|
416
|
-
style = :highlight if
|
431
|
+
style = :highlight if event_history.order_execute_win_highlighted
|
417
432
|
risk_alloc_out = Cryptum.beautify_large_number(
|
418
433
|
value: meta[:risk_alloc]
|
419
434
|
)
|
@@ -464,6 +479,12 @@ module Cryptum
|
|
464
479
|
)
|
465
480
|
end
|
466
481
|
|
482
|
+
Cryptum::UI.line(
|
483
|
+
ui_win: order_execute_win,
|
484
|
+
out_line_no: out_line_no,
|
485
|
+
color: line_color
|
486
|
+
)
|
487
|
+
|
467
488
|
order_execute_win.refresh
|
468
489
|
|
469
490
|
# Reset Order Ready Boolean
|
@@ -199,9 +199,14 @@ module Cryptum
|
|
199
199
|
|
200
200
|
# ROW 1
|
201
201
|
out_line_no = 0
|
202
|
+
line_color = :white
|
203
|
+
style = :bold
|
204
|
+
line_color = :red if event_history.order_plan_win_highlighted
|
205
|
+
|
202
206
|
Cryptum::UI.line(
|
203
207
|
ui_win: order_plan_win,
|
204
|
-
out_line_no: out_line_no
|
208
|
+
out_line_no: out_line_no,
|
209
|
+
color: line_color
|
205
210
|
)
|
206
211
|
|
207
212
|
# ROW 2
|
@@ -211,7 +216,7 @@ module Cryptum
|
|
211
216
|
Cryptum::UI.colorize(
|
212
217
|
ui_win: order_plan_win,
|
213
218
|
color: :white,
|
214
|
-
style:
|
219
|
+
style: style,
|
215
220
|
string: "Order Plan ##{order_plan_prefix} Summary:"
|
216
221
|
)
|
217
222
|
|
@@ -219,6 +224,7 @@ module Cryptum
|
|
219
224
|
Cryptum::UI.colorize(
|
220
225
|
ui_win: order_plan_win,
|
221
226
|
color: :white,
|
227
|
+
style: style,
|
222
228
|
string: "$#{order_plan_volume_out} w #{max_order_plan_slices} Slices | $#{order_plan_profit_sum_out} 2 Gain | #{order_plan_exec_percent}% Done".rjust(
|
223
229
|
col_just3,
|
224
230
|
'.'
|
@@ -229,7 +235,8 @@ module Cryptum
|
|
229
235
|
out_line_no += 1
|
230
236
|
Cryptum::UI.line(
|
231
237
|
ui_win: order_plan_win,
|
232
|
-
out_line_no: out_line_no
|
238
|
+
out_line_no: out_line_no,
|
239
|
+
color: line_color
|
233
240
|
)
|
234
241
|
|
235
242
|
# ROWS 4-10
|
@@ -310,10 +317,18 @@ module Cryptum
|
|
310
317
|
plan_color = :cyan if color == :red
|
311
318
|
plan_color = :green if color == :green
|
312
319
|
|
313
|
-
|
320
|
+
first_row = event_history.order_plan_line
|
321
|
+
last_row = first_row + 7
|
322
|
+
if last_row >= order_plan.length
|
323
|
+
last_row = order_plan.length - 1
|
324
|
+
first_row = last_row - 7
|
325
|
+
event_history.order_plan_line = first_row
|
326
|
+
end
|
327
|
+
|
328
|
+
order_plan[first_row..last_row].each do |order|
|
314
329
|
out_line_no += 1
|
315
330
|
style = :normal
|
316
|
-
style = :highlight if
|
331
|
+
style = :highlight if event_history.order_plan_win_highlighted
|
317
332
|
fiat_avail_out = Cryptum.beautify_large_number(
|
318
333
|
value: order[:fiat_available]
|
319
334
|
)
|
@@ -361,6 +376,12 @@ module Cryptum
|
|
361
376
|
end
|
362
377
|
end
|
363
378
|
|
379
|
+
Cryptum::UI.line(
|
380
|
+
ui_win: order_plan_win,
|
381
|
+
out_line_no: out_line_no,
|
382
|
+
color: line_color
|
383
|
+
)
|
384
|
+
|
364
385
|
order_plan_win.refresh
|
365
386
|
|
366
387
|
# event_history
|
@@ -30,24 +30,30 @@ module Cryptum
|
|
30
30
|
trend_timer_begin = Time.parse(last_trend_reset_time)
|
31
31
|
trend_timer_end = trend_timer_begin + time_between_trend_reset
|
32
32
|
trend_time_remaining = trend_timer_end - Time.now
|
33
|
-
trend_countdown =
|
33
|
+
trend_countdown = Cryptum.beautify_large_number(
|
34
|
+
value: format('%0.2f', trend_time_remaining)
|
35
|
+
)
|
34
36
|
|
35
37
|
# Market Trend Reset Timer
|
36
38
|
time_between_order_exec = event_history.time_between_orders
|
37
|
-
time_between_order_exec_out =
|
38
|
-
'%0.
|
39
|
-
time_between_order_exec
|
39
|
+
time_between_order_exec_out = Cryptum.beautify_large_number(
|
40
|
+
value: format('%0.2f', time_between_order_exec)
|
40
41
|
)
|
41
42
|
order_begin_time = Time.parse(last_order_exec_time)
|
42
43
|
order_end_time = order_begin_time + time_between_order_exec
|
43
44
|
order_exec_time_remaining = order_end_time - Time.now
|
44
|
-
order_countdown =
|
45
|
+
order_countdown = Cryptum.beautify_large_number(
|
46
|
+
value: format('%0.2f', order_exec_time_remaining)
|
47
|
+
)
|
45
48
|
|
46
49
|
color = :white
|
47
50
|
color = indicator_status.market_trend[:color] if indicator_status.market_trend
|
48
51
|
case color
|
49
52
|
when :green
|
50
|
-
|
53
|
+
# TODO: add condition to check if open sell orders exist.
|
54
|
+
# If so intent should be something like, "- SEE LIMIT SELL ORDERS -"
|
55
|
+
# Otherwise, intent should be something like, "- WAIT FOR MARKET TREND SHIFT -"
|
56
|
+
intent = "- SEE LIMIT SELL ORDERS -"
|
51
57
|
else
|
52
58
|
trend = 'BEAR'
|
53
59
|
speed = 'FAST'
|
@@ -56,7 +62,7 @@ module Cryptum
|
|
56
62
|
speed = 'SLOW'
|
57
63
|
end
|
58
64
|
|
59
|
-
intent = "#{
|
65
|
+
intent = "#{trend} - #{speed} BUY: #{order_countdown} of #{time_between_order_exec_out}"
|
60
66
|
intent = '- BUYING PAUSED -' if event_history.red_pill
|
61
67
|
end
|
62
68
|
|
@@ -68,13 +74,6 @@ module Cryptum
|
|
68
74
|
|
69
75
|
# ROW 1
|
70
76
|
out_line_no = 0
|
71
|
-
Cryptum::UI.line(
|
72
|
-
ui_win: order_timer_win,
|
73
|
-
out_line_no: out_line_no
|
74
|
-
)
|
75
|
-
|
76
|
-
# ROW 2
|
77
|
-
out_line_no += 1
|
78
77
|
order_timer_win.setpos(out_line_no, Cryptum::UI.col_first)
|
79
78
|
order_timer_win.clrtoeol
|
80
79
|
Cryptum::UI.colorize(
|
@@ -42,16 +42,16 @@ module Cryptum
|
|
42
42
|
)
|
43
43
|
|
44
44
|
self.order_plan_section = Cryptum::UI.window(
|
45
|
-
height:
|
45
|
+
height: 12,
|
46
46
|
width: 0,
|
47
47
|
top: 13,
|
48
48
|
left: 0
|
49
49
|
)
|
50
50
|
|
51
51
|
self.order_timer_section = Cryptum::UI.window(
|
52
|
-
height:
|
52
|
+
height: 1,
|
53
53
|
width: 0,
|
54
|
-
top:
|
54
|
+
top: 24,
|
55
55
|
left: 0
|
56
56
|
)
|
57
57
|
|
@@ -70,14 +70,14 @@ module Cryptum
|
|
70
70
|
)
|
71
71
|
|
72
72
|
self.order_execute_section = Cryptum::UI.window(
|
73
|
-
height:
|
73
|
+
height: 11,
|
74
74
|
width: 0,
|
75
75
|
top: 29,
|
76
76
|
left: 0
|
77
77
|
)
|
78
78
|
|
79
79
|
self.command_section = Cryptum::UI.window(
|
80
|
-
height:
|
80
|
+
height: 3,
|
81
81
|
width: 0,
|
82
82
|
top: 39,
|
83
83
|
left: 0
|
data/lib/cryptum/ui/ticker.rb
CHANGED
@@ -161,21 +161,12 @@ module Cryptum
|
|
161
161
|
out_line_no += 1
|
162
162
|
ticker_win.setpos(out_line_no, Cryptum::UI.col_first)
|
163
163
|
ticker_win.clrtoeol
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
)
|
171
|
-
else
|
172
|
-
Cryptum::UI.colorize(
|
173
|
-
ui_win: ticker_win,
|
174
|
-
color: :yellow,
|
175
|
-
style: :bold,
|
176
|
-
string: symbol_out.ljust(col_just1)
|
177
|
-
)
|
178
|
-
end
|
164
|
+
Cryptum::UI.colorize(
|
165
|
+
ui_win: ticker_win,
|
166
|
+
color: :yellow,
|
167
|
+
style: :bold,
|
168
|
+
string: symbol_out.ljust(col_just1)
|
169
|
+
)
|
179
170
|
|
180
171
|
ticker_win.setpos(out_line_no, Cryptum::UI.col_second)
|
181
172
|
Cryptum::UI.colorize(
|
@@ -209,7 +200,7 @@ module Cryptum
|
|
209
200
|
ui_win: ticker_win,
|
210
201
|
color: :white,
|
211
202
|
style: :bold,
|
212
|
-
string: '
|
203
|
+
string: 'High | Low Limit Sell Prices:'
|
213
204
|
)
|
214
205
|
|
215
206
|
ticker_win.setpos(out_line_no, Cryptum::UI.col_third)
|
data/lib/cryptum/ui.rb
CHANGED
@@ -87,24 +87,19 @@ module Cryptum
|
|
87
87
|
public_class_method def self.line(opts = {})
|
88
88
|
ui_win = opts[:ui_win]
|
89
89
|
out_line_no = opts[:out_line_no].to_i
|
90
|
+
color = opts[:color]
|
91
|
+
color ||= :white
|
92
|
+
|
93
|
+
style = :normal
|
94
|
+
style = :bold unless color == :white
|
90
95
|
|
91
96
|
ui_win.setpos(out_line_no, 0)
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
blue: 192,
|
99
|
-
string: "\u2500" * Curses.cols
|
100
|
-
)
|
101
|
-
else
|
102
|
-
colorize(
|
103
|
-
ui_win: ui_win,
|
104
|
-
color: :white,
|
105
|
-
string: "\u2500" * Curses.cols
|
106
|
-
)
|
107
|
-
end
|
97
|
+
colorize(
|
98
|
+
ui_win: ui_win,
|
99
|
+
color: color,
|
100
|
+
style: style,
|
101
|
+
string: "\u2500" * Curses.cols
|
102
|
+
)
|
108
103
|
rescue Interrupt
|
109
104
|
# Exit Gracefully if CTRL+C is Pressed During Session
|
110
105
|
Cryptum.exit_gracefully(which_self: self)
|
@@ -274,7 +269,20 @@ module Cryptum
|
|
274
269
|
key_press_event = opts[:key_press_event]
|
275
270
|
ui_win = opts[:ui_win]
|
276
271
|
|
277
|
-
|
272
|
+
key_press = ui_win.get_char
|
273
|
+
|
274
|
+
# Useful for detecting and logging actual key presses to file
|
275
|
+
# unless key_press.nil?
|
276
|
+
# File.open('/tmp/detect_key_press_in_ui-cryptum.txt', 'a') do |f|
|
277
|
+
# f.puts key_press.class
|
278
|
+
# f.print key_press.inspect
|
279
|
+
# f.puts "\n\n\n"
|
280
|
+
# end
|
281
|
+
# end
|
282
|
+
|
283
|
+
case key_press
|
284
|
+
when 'C'
|
285
|
+
key_press_event.key_c = true
|
278
286
|
when 'G'
|
279
287
|
key_press_event.key_g = true
|
280
288
|
when 'r'
|
@@ -285,8 +293,17 @@ module Cryptum
|
|
285
293
|
key_press_event.key_w = true
|
286
294
|
when 'x'
|
287
295
|
key_press_event.key_x = true
|
296
|
+
when "\t"
|
297
|
+
key_press_event.key_tab = true
|
298
|
+
when "\e"
|
299
|
+
key_press_event.key_esc = true
|
288
300
|
end
|
289
301
|
|
302
|
+
# What a hack to detect up / down arrow key presses.
|
303
|
+
key_press_event.key_ansi = true if key_press_event.key_esc && key_press == '['
|
304
|
+
key_press_event.key_up = true if key_press_event.key_ansi && key_press == 'A'
|
305
|
+
key_press_event.key_down = true if key_press_event.key_ansi && key_press == 'B'
|
306
|
+
|
290
307
|
key_press_event
|
291
308
|
rescue Interrupt
|
292
309
|
# Exit Gracefully if CTRL+C is Pressed During Session
|
data/lib/cryptum/version.rb
CHANGED
@@ -54,6 +54,7 @@ module Cryptum
|
|
54
54
|
|
55
55
|
ws.on :message do |event|
|
56
56
|
ai_enabled = bot_conf[:artifical_intelligence]
|
57
|
+
|
57
58
|
event_history.event = JSON.parse(
|
58
59
|
event.data,
|
59
60
|
symbolize_names: true
|
@@ -77,6 +78,16 @@ module Cryptum
|
|
77
78
|
# Detect Key Press Events
|
78
79
|
Cryptum::Event::KeyPress.detect(terminal_win: terminal_win)
|
79
80
|
|
81
|
+
# Cancel ALL Open Orders when
|
82
|
+
# C is pressed
|
83
|
+
if terminal_win.key_press_event.key_c
|
84
|
+
Cryptum::API.cancel_all_open_orders(
|
85
|
+
env: env,
|
86
|
+
option_choice: option_choice
|
87
|
+
)
|
88
|
+
terminal_win.key_press_event.key_c = false
|
89
|
+
end
|
90
|
+
|
80
91
|
# Get the F* Out (GTFO) when
|
81
92
|
# G is pressed
|
82
93
|
if terminal_win.key_press_event.key_g
|
@@ -116,6 +127,43 @@ module Cryptum
|
|
116
127
|
env: env
|
117
128
|
)
|
118
129
|
end
|
130
|
+
|
131
|
+
# Scroll Down Order Plan / Order Execution Window Panes
|
132
|
+
if terminal_win.key_press_event.key_down
|
133
|
+
terminal_win.key_press_event.key_ansi = false
|
134
|
+
terminal_win.key_press_event.key_esc = false
|
135
|
+
terminal_win.key_press_event.key_down = false
|
136
|
+
|
137
|
+
event_history.order_plan_line += 1 if event_history.order_plan_win_highlighted
|
138
|
+
|
139
|
+
event_history.order_execute_line += 1 if event_history.order_execute_win_highlighted
|
140
|
+
end
|
141
|
+
|
142
|
+
# TAB through Order Plan / Order Execution Window Panes
|
143
|
+
if terminal_win.key_press_event.key_tab
|
144
|
+
terminal_win.key_press_event.key_tab = false
|
145
|
+
|
146
|
+
if event_history.order_plan_win_highlighted
|
147
|
+
event_history.order_plan_win_highlighted = false
|
148
|
+
event_history.order_execute_win_highlighted = true
|
149
|
+
else
|
150
|
+
event_history.order_plan_win_highlighted = true
|
151
|
+
event_history.order_execute_win_highlighted = false
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# Scroll Up Order Plan / Order Execution Window Panes
|
156
|
+
if terminal_win.key_press_event.key_up
|
157
|
+
terminal_win.key_press_event.key_ansi = false
|
158
|
+
terminal_win.key_press_event.key_esc = false
|
159
|
+
terminal_win.key_press_event.key_up = false
|
160
|
+
|
161
|
+
event_history.order_plan_line -= 1 if event_history.order_plan_win_highlighted &&
|
162
|
+
event_history.order_plan_line.positive?
|
163
|
+
|
164
|
+
event_history.order_execute_line -= 1 if event_history.order_execute_win_highlighted &&
|
165
|
+
event_history.order_execute_line.positive?
|
166
|
+
end
|
119
167
|
end
|
120
168
|
|
121
169
|
ws.on :close do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cryptum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.255
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 0day Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|