cryptum 0.0.355 → 0.0.356
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
- metadata +13 -116
- data/.github/workflows/main.yml +0 -16
- data/.gitignore +0 -30
- data/.rspec +0 -3
- data/.rspec_status +0 -0
- data/.rubocop.yml +0 -31
- data/.rubocop_todo.yml +0 -32
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/CODE_OF_CONDUCT.md +0 -84
- data/Gemfile +0 -38
- data/LICENSE +0 -674
- data/README.md +0 -87
- data/Rakefile +0 -19
- data/bin/cryptum +0 -73
- data/bin/cryptum-forecast +0 -200
- data/bin/cryptum-repl +0 -73
- data/bin/cryptum_autoinc_version +0 -38
- data/build_cryptum_gem.sh +0 -58
- data/cryptum.gemspec +0 -52
- data/cryptum_container.sh +0 -1
- data/docker/cryptum.json +0 -60
- data/docker/cryptum_container.sh +0 -59
- data/docker/packer_secrets.json.EXAMPLE +0 -7
- data/docker/provisioners/cryptum.sh +0 -11
- data/docker/provisioners/docker_bashrc.sh +0 -2
- data/docker/provisioners/docker_rvm.sh +0 -22
- data/docker/provisioners/init_image.sh +0 -28
- data/docker/provisioners/post_install.sh +0 -6
- data/docker/provisioners/ruby.sh +0 -16
- data/docker/provisioners/upload_globals.sh +0 -49
- data/etc/bot_confs/.gitkeep +0 -0
- data/etc/bot_confs/BOT_CONF.TEMPLATE +0 -10
- data/etc/coinbase_pro.yaml.EXAMPLE +0 -8
- data/etc/open_ai.yaml.EXAMPLE +0 -1
- data/git_commit.sh +0 -22
- data/lib/cryptum/api.rb +0 -688
- data/lib/cryptum/bot_conf.rb +0 -197
- data/lib/cryptum/event/bot_conf.rb +0 -34
- data/lib/cryptum/event/buy.rb +0 -145
- data/lib/cryptum/event/cancel.rb +0 -35
- data/lib/cryptum/event/exit.rb +0 -35
- data/lib/cryptum/event/gtfo.rb +0 -36
- data/lib/cryptum/event/history.rb +0 -105
- data/lib/cryptum/event/key_press.rb +0 -64
- data/lib/cryptum/event/order_book.rb +0 -34
- data/lib/cryptum/event/pane.rb +0 -65
- data/lib/cryptum/event/parse.rb +0 -181
- data/lib/cryptum/event/scroll.rb +0 -200
- data/lib/cryptum/event/sell.rb +0 -124
- data/lib/cryptum/event.rb +0 -27
- data/lib/cryptum/log.rb +0 -34
- data/lib/cryptum/matrix.rb +0 -181
- data/lib/cryptum/open_ai.rb +0 -156
- data/lib/cryptum/option/choice.rb +0 -28
- data/lib/cryptum/option.rb +0 -206
- data/lib/cryptum/order_book/generate.rb +0 -114
- data/lib/cryptum/order_book/indicator.rb +0 -15
- data/lib/cryptum/order_book/market_trend.rb +0 -137
- data/lib/cryptum/order_book/profit_margin.rb +0 -55
- data/lib/cryptum/order_book.rb +0 -19
- data/lib/cryptum/portfolio/balance.rb +0 -123
- data/lib/cryptum/portfolio.rb +0 -15
- data/lib/cryptum/ui/command.rb +0 -314
- data/lib/cryptum/ui/key_press_event.rb +0 -33
- data/lib/cryptum/ui/market_trend.rb +0 -74
- data/lib/cryptum/ui/order_execute_details.rb +0 -297
- data/lib/cryptum/ui/order_execution.rb +0 -573
- data/lib/cryptum/ui/order_plan.rb +0 -503
- data/lib/cryptum/ui/order_plan_details.rb +0 -240
- data/lib/cryptum/ui/order_timer.rb +0 -121
- data/lib/cryptum/ui/portfolio.rb +0 -221
- data/lib/cryptum/ui/signal_engine.rb +0 -109
- data/lib/cryptum/ui/terminal_window.rb +0 -111
- data/lib/cryptum/ui/ticker.rb +0 -319
- data/lib/cryptum/ui.rb +0 -343
- data/lib/cryptum/version.rb +0 -5
- data/lib/cryptum/web_sock/coinbase.rb +0 -102
- data/lib/cryptum/web_sock/event_machine.rb +0 -274
- data/lib/cryptum/web_sock.rb +0 -16
- data/lib/cryptum.rb +0 -120
- data/order_books/.gitkeep +0 -0
- data/reinstall_cryptum_gemset.sh +0 -29
- data/spec/lib/cryptum/api_spec.rb +0 -10
- data/spec/lib/cryptum/event_spec.rb +0 -10
- data/spec/lib/cryptum/log_spec.rb +0 -10
- data/spec/lib/cryptum/option_spec.rb +0 -10
- data/spec/lib/cryptum/order_book/generate_spec.rb +0 -10
- data/spec/lib/cryptum/order_book/market_trend_spec.rb +0 -10
- data/spec/lib/cryptum/order_book_spec.rb +0 -10
- data/spec/lib/cryptum/ui/command_spec.rb +0 -10
- data/spec/lib/cryptum/ui/ticker_spec.rb +0 -10
- data/spec/lib/cryptum/ui_spec.rb +0 -10
- data/spec/lib/cryptum/web_sock_spec.rb +0 -10
- data/spec/lib/cryptum_spec.rb +0 -10
- data/spec/spec_helper.rb +0 -3
- data/upgrade_Gemfile_gems.sh +0 -20
- data/upgrade_cryptum.sh +0 -13
- data/upgrade_gem.sh +0 -4
- data/upgrade_ruby.sh +0 -45
data/lib/cryptum/event/pane.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Switch through Order Plan / Order History
|
5
|
-
# Window Panes when the TAB Key is Pressed.
|
6
|
-
module Event
|
7
|
-
module Pane
|
8
|
-
# Supported Method Parameters::
|
9
|
-
# Cryptum::Event::Pane.switch(
|
10
|
-
# )
|
11
|
-
public_class_method def self.switch(opts = {})
|
12
|
-
terminal_win = opts[:terminal_win]
|
13
|
-
event_history = opts[:event_history]
|
14
|
-
|
15
|
-
terminal_win.key_press_event.key_tab = false
|
16
|
-
|
17
|
-
if event_history.order_plan_win_active
|
18
|
-
event_history.order_plan_win_active = false
|
19
|
-
event_history.order_execute_win_active = true
|
20
|
-
else
|
21
|
-
event_history.order_plan_win_active = true
|
22
|
-
event_history.order_execute_win_active = false
|
23
|
-
end
|
24
|
-
rescue StandardError => e
|
25
|
-
raise e
|
26
|
-
end
|
27
|
-
|
28
|
-
# Supported Method Parameters::
|
29
|
-
# Cryptum::Event::Pane.toggle_details(
|
30
|
-
# )
|
31
|
-
public_class_method def self.toggle_details(opts = {})
|
32
|
-
terminal_win = opts[:terminal_win]
|
33
|
-
event_history = opts[:event_history]
|
34
|
-
|
35
|
-
terminal_win.key_press_event.key_enter = false
|
36
|
-
|
37
|
-
if event_history.order_plan_win_active
|
38
|
-
unless event_history.red_pill
|
39
|
-
if event_history.order_plan_details_win_active
|
40
|
-
event_history.order_plan_details_win_active = false
|
41
|
-
else
|
42
|
-
event_history.order_plan_details_win_active = true
|
43
|
-
end
|
44
|
-
end
|
45
|
-
elsif event_history.order_execute_win_active
|
46
|
-
if event_history.order_execute_details_win_active
|
47
|
-
event_history.order_execute_details_win_active = false
|
48
|
-
else
|
49
|
-
event_history.order_execute_details_win_active = true
|
50
|
-
end
|
51
|
-
end
|
52
|
-
rescue StandardError => e
|
53
|
-
raise e
|
54
|
-
end
|
55
|
-
|
56
|
-
# Display Usage for this Module
|
57
|
-
public_class_method def self.help
|
58
|
-
puts "USAGE:
|
59
|
-
#{self}.switch()
|
60
|
-
#{self}.toggle_details()
|
61
|
-
"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
data/lib/cryptum/event/parse.rb
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to parse Coinbase Pro Web Socket Events in the HTTP Response
|
5
|
-
module Event
|
6
|
-
module Parse
|
7
|
-
# Supported Method Parameters::
|
8
|
-
# Cryptum::Event::Pane.websocket_msg(
|
9
|
-
# )
|
10
|
-
public_class_method def self.websocket_msg(opts = {})
|
11
|
-
env = opts[:env]
|
12
|
-
terminal_win = opts[:terminal_win]
|
13
|
-
option_choice = opts[:option_choice]
|
14
|
-
event_history = opts[:event_history]
|
15
|
-
indicator_status = opts[:indicator_status]
|
16
|
-
bot_conf = opts[:bot_conf]
|
17
|
-
|
18
|
-
this_product = event_history.order_book[:this_product]
|
19
|
-
fiat = this_product[:quote_currency]
|
20
|
-
fiat_portfolio_file = "#{option_choice.session_root}/order_books/#{fiat}_PORTFOLIO.json"
|
21
|
-
|
22
|
-
# Determine if Summary UI needs updated data
|
23
|
-
event_history = Cryptum::Portfolio::Balance.refresh(
|
24
|
-
env: env,
|
25
|
-
option_choice: option_choice,
|
26
|
-
terminal_win: terminal_win,
|
27
|
-
event_history: event_history,
|
28
|
-
fiat_portfolio_file: fiat_portfolio_file
|
29
|
-
)
|
30
|
-
|
31
|
-
# If the Terminal Window has been Resized, Resize the UI
|
32
|
-
if Curses.cols != terminal_win.cols
|
33
|
-
terminal_win.cols = Curses.cols
|
34
|
-
terminal_win.ticker_ui_resize = true
|
35
|
-
terminal_win.market_trend_ui_resize = true
|
36
|
-
end
|
37
|
-
|
38
|
-
event_history = Cryptum::UI::Portfolio.refresh(
|
39
|
-
option_choice: option_choice,
|
40
|
-
portfolio_win: terminal_win.portfolio_section,
|
41
|
-
event_history: event_history,
|
42
|
-
key_press_event: terminal_win.key_press_event,
|
43
|
-
indicator_status: indicator_status,
|
44
|
-
bot_conf: bot_conf,
|
45
|
-
fiat_portfolio_file: fiat_portfolio_file
|
46
|
-
)
|
47
|
-
|
48
|
-
if event_history.event_type == :ticker ||
|
49
|
-
terminal_win.ticker_ui_resize
|
50
|
-
|
51
|
-
ticker_event = event_history.ticker_event = event_history.event if event_history.event_type == :ticker
|
52
|
-
ticker_event = event_history.ticker_event if terminal_win.ticker_ui_resize
|
53
|
-
event_history = Cryptum::UI::Ticker.refresh(
|
54
|
-
option_choice: option_choice,
|
55
|
-
start_time: event_history.start_time,
|
56
|
-
ticker_win: terminal_win.ticker_section,
|
57
|
-
key_press_event: terminal_win.key_press_event,
|
58
|
-
event_history: event_history,
|
59
|
-
event: ticker_event
|
60
|
-
)
|
61
|
-
end
|
62
|
-
|
63
|
-
Cryptum::UI::OrderTimer.refresh(
|
64
|
-
option_choice: option_choice,
|
65
|
-
event_history: event_history,
|
66
|
-
order_timer_win: terminal_win.order_timer_section,
|
67
|
-
indicator_status: indicator_status,
|
68
|
-
key_press_event: terminal_win.key_press_event
|
69
|
-
)
|
70
|
-
|
71
|
-
if event_history.event_type == :l2update ||
|
72
|
-
terminal_win.market_trend_ui_resize
|
73
|
-
|
74
|
-
market_trend_event = event_history.market_trend_event = event_history.event if event_history.event_type == :l2update
|
75
|
-
market_trend_event = event_history.market_trend_event if terminal_win.market_trend_ui_resize
|
76
|
-
event_history = Cryptum::UI::MarketTrend.refresh(
|
77
|
-
option_choice: option_choice,
|
78
|
-
market_trend_win: terminal_win.market_trend_section,
|
79
|
-
event_history: event_history,
|
80
|
-
key_press_event: terminal_win.key_press_event,
|
81
|
-
event: market_trend_event,
|
82
|
-
indicator_status: indicator_status,
|
83
|
-
bot_conf: bot_conf
|
84
|
-
)
|
85
|
-
end
|
86
|
-
|
87
|
-
indicator_status = Cryptum::UI::SignalEngine.refresh(
|
88
|
-
option_choice: option_choice,
|
89
|
-
signal_engine_win: terminal_win.signal_engine_section,
|
90
|
-
event_history: event_history,
|
91
|
-
key_press_event: terminal_win.key_press_event,
|
92
|
-
indicator_status: indicator_status,
|
93
|
-
bot_conf: bot_conf,
|
94
|
-
fiat_portfolio_file: fiat_portfolio_file
|
95
|
-
)
|
96
|
-
|
97
|
-
unless event_history.order_plan_details_win_active
|
98
|
-
event_history = Cryptum::UI::OrderPlan.refresh(
|
99
|
-
option_choice: option_choice,
|
100
|
-
order_plan_win: terminal_win.order_plan_section,
|
101
|
-
env: env,
|
102
|
-
event_history: event_history,
|
103
|
-
key_press_event: terminal_win.key_press_event,
|
104
|
-
indicator_status: indicator_status,
|
105
|
-
bot_conf: bot_conf,
|
106
|
-
fiat_portfolio_file: fiat_portfolio_file
|
107
|
-
)
|
108
|
-
recalc_op = event_history.recalculate_order_plan
|
109
|
-
order_plan = event_history.order_book[:order_plan]
|
110
|
-
terminal_win.key_press_event.key_w = true if (recalc_op || order_plan.empty?) &&
|
111
|
-
!event_history.red_pill
|
112
|
-
event_history.recalculate_order_plan = false
|
113
|
-
end
|
114
|
-
|
115
|
-
if event_history.order_plan_details_win_active
|
116
|
-
event_history = Cryptum::UI::OrderPlanDetails.refresh(
|
117
|
-
option_choice: option_choice,
|
118
|
-
order_plan_details_win: terminal_win.order_plan_details_section,
|
119
|
-
event_history: event_history,
|
120
|
-
key_press_event: terminal_win.key_press_event
|
121
|
-
)
|
122
|
-
end
|
123
|
-
|
124
|
-
unless event_history.order_execute_details_win_active
|
125
|
-
event_history = Cryptum::UI::OrderExecution.refresh(
|
126
|
-
option_choice: option_choice,
|
127
|
-
order_execute_win: terminal_win.order_execute_section,
|
128
|
-
env: env,
|
129
|
-
event_history: event_history,
|
130
|
-
key_press_event: terminal_win.key_press_event,
|
131
|
-
indicator_status: indicator_status,
|
132
|
-
bot_conf: bot_conf,
|
133
|
-
fiat_portfolio_file: fiat_portfolio_file
|
134
|
-
)
|
135
|
-
end
|
136
|
-
|
137
|
-
if event_history.order_execute_details_win_active
|
138
|
-
event_history = Cryptum::UI::OrderExecuteDetails.refresh(
|
139
|
-
option_choice: option_choice,
|
140
|
-
order_execute_details_win: terminal_win.order_execute_details_section,
|
141
|
-
event_history: event_history,
|
142
|
-
key_press_event: terminal_win.key_press_event
|
143
|
-
)
|
144
|
-
end
|
145
|
-
|
146
|
-
# Refresh Command Section for Cryptum Session Usage
|
147
|
-
Cryptum::UI::Command.refresh(
|
148
|
-
command_win: terminal_win.command_section,
|
149
|
-
key_press_event: terminal_win.key_press_event
|
150
|
-
)
|
151
|
-
|
152
|
-
event_history
|
153
|
-
rescue Interrupt
|
154
|
-
# Exit Gracefully if CTRL+C is Pressed During Session
|
155
|
-
Cryptum.exit_gracefully(
|
156
|
-
which_self: self,
|
157
|
-
event_history: event_history,
|
158
|
-
option_choice: option_choice,
|
159
|
-
env: env
|
160
|
-
)
|
161
|
-
rescue StandardError => e
|
162
|
-
raise e
|
163
|
-
end
|
164
|
-
|
165
|
-
# Display Usage for this Module
|
166
|
-
public_class_method def self.help
|
167
|
-
puts "USAGE:
|
168
|
-
#{self}.websocket_msg(
|
169
|
-
env: env,
|
170
|
-
terminal_win: terminal_win,
|
171
|
-
option_choice: option_choice,
|
172
|
-
event_history: event_history,
|
173
|
-
indicator_status: indicator_status,
|
174
|
-
bot_conf: bot_conf,
|
175
|
-
ai_enabled: ai_enabled
|
176
|
-
)
|
177
|
-
"
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
data/lib/cryptum/event/scroll.rb
DELETED
@@ -1,200 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Scroll through Order Plan
|
5
|
-
# Order Plan and Order History Window Panes
|
6
|
-
# to File When the "w" Key is Pressed
|
7
|
-
module Event
|
8
|
-
module Scroll
|
9
|
-
# Supported Method Parameters::
|
10
|
-
# Cryptum::Event::Scroll.up(
|
11
|
-
# )
|
12
|
-
public_class_method def self.up(opts = {})
|
13
|
-
terminal_win = opts[:terminal_win]
|
14
|
-
event_history = opts[:event_history]
|
15
|
-
|
16
|
-
terminal_win.key_press_event.key_ansi = false
|
17
|
-
terminal_win.key_press_event.key_esc = false
|
18
|
-
terminal_win.key_press_event.key_up_arrow = false
|
19
|
-
|
20
|
-
if event_history.order_plan_win_active
|
21
|
-
event_history.order_plan_row_to_select -= 1
|
22
|
-
event_history.order_plan_index_offset -= 1 if event_history.order_plan_row_to_select.negative?
|
23
|
-
event_history.order_plan_index_offset = 0 if event_history.order_plan_index_offset.negative?
|
24
|
-
event_history.order_plan_row_to_select = 0 if event_history.order_plan_row_to_select.negative?
|
25
|
-
end
|
26
|
-
|
27
|
-
if event_history.order_execute_win_active
|
28
|
-
event_history.order_execute_row_to_select -= 1
|
29
|
-
event_history.order_execute_index_offset -= 1 if event_history.order_execute_row_to_select.negative?
|
30
|
-
event_history.order_execute_index_offset = 0 if event_history.order_execute_index_offset.negative?
|
31
|
-
event_history.order_execute_row_to_select = 0 if event_history.order_execute_row_to_select.negative?
|
32
|
-
end
|
33
|
-
rescue StandardError => e
|
34
|
-
raise e
|
35
|
-
end
|
36
|
-
|
37
|
-
# Supported Method Parameters::
|
38
|
-
# Cryptum::Event::Scroll.down(
|
39
|
-
# )
|
40
|
-
public_class_method def self.down(opts = {})
|
41
|
-
terminal_win = opts[:terminal_win]
|
42
|
-
event_history = opts[:event_history]
|
43
|
-
|
44
|
-
terminal_win.key_press_event.key_ansi = false
|
45
|
-
terminal_win.key_press_event.key_esc = false
|
46
|
-
terminal_win.key_press_event.key_down_arrow = false
|
47
|
-
|
48
|
-
order_book = event_history.order_book
|
49
|
-
|
50
|
-
if event_history.order_plan_win_active
|
51
|
-
order_plan_length = order_book[:order_plan].length
|
52
|
-
last_row = order_plan_length - 1
|
53
|
-
event_history.order_plan_max_records_available_to_display = last_row if last_row < event_history.order_plan_max_rows_to_display
|
54
|
-
|
55
|
-
event_history.order_plan_row_to_select += 1
|
56
|
-
event_history.order_plan_index_offset += 1 if event_history.order_plan_row_to_select > event_history.order_plan_max_records_available_to_display
|
57
|
-
event_history.order_plan_row_to_select = event_history.order_plan_max_records_available_to_display if event_history.order_plan_row_to_select > event_history.order_plan_max_records_available_to_display
|
58
|
-
end
|
59
|
-
|
60
|
-
if event_history.order_execute_win_active
|
61
|
-
order_history_meta_length = order_book[:order_history_meta].length
|
62
|
-
last_row = order_history_meta_length - 1
|
63
|
-
event_history.order_execute_max_records_available_to_display = last_row if last_row < event_history.order_execute_max_rows_to_display
|
64
|
-
|
65
|
-
event_history.order_execute_row_to_select += 1
|
66
|
-
event_history.order_execute_index_offset += 1 if event_history.order_execute_row_to_select > event_history.order_execute_max_records_available_to_display
|
67
|
-
event_history.order_execute_row_to_select = event_history.order_execute_max_records_available_to_display if event_history.order_execute_row_to_select > event_history.order_execute_max_records_available_to_display
|
68
|
-
end
|
69
|
-
rescue StandardError => e
|
70
|
-
raise e
|
71
|
-
end
|
72
|
-
|
73
|
-
# Supported Method Parameters::
|
74
|
-
# Cryptum::Event::Scroll.page_up(
|
75
|
-
# )
|
76
|
-
public_class_method def self.page_up(opts = {})
|
77
|
-
terminal_win = opts[:terminal_win]
|
78
|
-
event_history = opts[:event_history]
|
79
|
-
|
80
|
-
terminal_win.key_press_event.key_ansi = false
|
81
|
-
terminal_win.key_press_event.key_esc = false
|
82
|
-
terminal_win.key_press_event.key_page_up = false
|
83
|
-
|
84
|
-
if event_history.order_plan_win_active
|
85
|
-
event_history.order_plan_row_to_select = 0
|
86
|
-
event_history.order_plan_index_offset -= event_history.order_plan_max_rows_to_display + 1
|
87
|
-
event_history.order_plan_index_offset = 0 if event_history.order_plan_index_offset.negative?
|
88
|
-
event_history.order_plan_row_to_select = 0 if event_history.order_plan_row_to_select.negative?
|
89
|
-
end
|
90
|
-
|
91
|
-
if event_history.order_execute_win_active
|
92
|
-
event_history.order_execute_row_to_select = 0
|
93
|
-
event_history.order_execute_index_offset -= event_history.order_execute_max_rows_to_display + 1
|
94
|
-
event_history.order_execute_index_offset = 0 if event_history.order_execute_index_offset.negative?
|
95
|
-
event_history.order_execute_row_to_select = 0 if event_history.order_execute_row_to_select.negative?
|
96
|
-
end
|
97
|
-
rescue StandardError => e
|
98
|
-
raise e
|
99
|
-
end
|
100
|
-
|
101
|
-
# Supported Method Parameters::
|
102
|
-
# Cryptum::Event::Scroll.page_down(
|
103
|
-
# )
|
104
|
-
public_class_method def self.page_down(opts = {})
|
105
|
-
terminal_win = opts[:terminal_win]
|
106
|
-
event_history = opts[:event_history]
|
107
|
-
|
108
|
-
terminal_win.key_press_event.key_ansi = false
|
109
|
-
terminal_win.key_press_event.key_esc = false
|
110
|
-
terminal_win.key_press_event.key_page_down = false
|
111
|
-
|
112
|
-
order_book = event_history.order_book
|
113
|
-
|
114
|
-
if event_history.order_plan_win_active
|
115
|
-
order_plan_length = order_book[:order_plan].length
|
116
|
-
event_history.order_plan_row_to_select = 0
|
117
|
-
event_history.order_plan_index_offset += event_history.order_plan_max_rows_to_display + 1 unless event_history.order_plan_index_offset > order_plan_length
|
118
|
-
end
|
119
|
-
|
120
|
-
if event_history.order_execute_win_active
|
121
|
-
order_history_meta_length = order_book[:order_history_meta].length
|
122
|
-
event_history.order_execute_row_to_select = 0
|
123
|
-
event_history.order_execute_index_offset += event_history.order_execute_max_rows_to_display + 1 unless event_history.order_execute_index_offset > order_history_meta_length
|
124
|
-
end
|
125
|
-
rescue StandardError => e
|
126
|
-
raise e
|
127
|
-
end
|
128
|
-
|
129
|
-
# Supported Method Parameters::
|
130
|
-
# Cryptum::Event::Scroll.top(
|
131
|
-
# )
|
132
|
-
public_class_method def self.top(opts = {})
|
133
|
-
terminal_win = opts[:terminal_win]
|
134
|
-
event_history = opts[:event_history]
|
135
|
-
|
136
|
-
terminal_win.key_press_event.key_ansi = false
|
137
|
-
terminal_win.key_press_event.key_esc = false
|
138
|
-
terminal_win.key_press_event.key_home = false
|
139
|
-
|
140
|
-
if event_history.order_plan_win_active
|
141
|
-
event_history.order_plan_row_to_select = 0
|
142
|
-
event_history.order_plan_index_offset = 0
|
143
|
-
end
|
144
|
-
|
145
|
-
if event_history.order_execute_win_active
|
146
|
-
event_history.order_execute_row_to_select = 0
|
147
|
-
event_history.order_execute_index_offset = 0
|
148
|
-
end
|
149
|
-
rescue StandardError => e
|
150
|
-
raise e
|
151
|
-
end
|
152
|
-
|
153
|
-
# Supported Method Parameters::
|
154
|
-
# Cryptum::Event::Scroll.bottom(
|
155
|
-
# )
|
156
|
-
public_class_method def self.bottom(opts = {})
|
157
|
-
terminal_win = opts[:terminal_win]
|
158
|
-
event_history = opts[:event_history]
|
159
|
-
|
160
|
-
terminal_win.key_press_event.key_ansi = false
|
161
|
-
terminal_win.key_press_event.key_esc = false
|
162
|
-
terminal_win.key_press_event.key_end = false
|
163
|
-
|
164
|
-
order_book = event_history.order_book
|
165
|
-
|
166
|
-
if event_history.order_plan_win_active
|
167
|
-
order_plan_length = order_book[:order_plan].length
|
168
|
-
last_row = order_plan_length - 1
|
169
|
-
event_history.order_plan_max_records_available_to_display = last_row if last_row < event_history.order_plan_max_rows_to_display
|
170
|
-
|
171
|
-
event_history.order_plan_row_to_select = event_history.order_plan_max_records_available_to_display
|
172
|
-
event_history.order_plan_index_offset = order_plan_length - event_history.order_plan_max_records_available_to_display
|
173
|
-
end
|
174
|
-
|
175
|
-
if event_history.order_execute_win_active
|
176
|
-
order_history_meta_length = order_book[:order_history_meta].length
|
177
|
-
last_row = order_history_meta_length - 1
|
178
|
-
event_history.order_execute_max_records_available_to_display = last_row if last_row < event_history.order_execute_max_rows_to_display
|
179
|
-
|
180
|
-
event_history.order_execute_row_to_select = event_history.order_execute_max_records_available_to_display
|
181
|
-
event_history.order_execute_index_offset = order_history_meta_length - event_history.order_execute_max_records_available_to_display
|
182
|
-
end
|
183
|
-
rescue StandardError => e
|
184
|
-
raise e
|
185
|
-
end
|
186
|
-
|
187
|
-
# Display Usage for this Module
|
188
|
-
public_class_method def self.help
|
189
|
-
puts "USAGE:
|
190
|
-
#{self}.up()
|
191
|
-
#{self}.down()
|
192
|
-
#{self}.page_up()
|
193
|
-
#{self}.page_down()
|
194
|
-
#{self}.top()
|
195
|
-
#{self}.bottom()
|
196
|
-
"
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
data/lib/cryptum/event/sell.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Submit a Limit Order
|
5
|
-
# to Sell Crypto Currency
|
6
|
-
|
7
|
-
module Event
|
8
|
-
module Sell
|
9
|
-
# Supported Method Parameters::
|
10
|
-
# Cryptum::Event::Sell.crypto(
|
11
|
-
# )
|
12
|
-
public_class_method def self.crypto(opts = {})
|
13
|
-
option_choice = opts[:option_choice]
|
14
|
-
env = opts[:env]
|
15
|
-
bot_conf = opts[:bot_conf]
|
16
|
-
stuck_in_pos_status = opts[:stuck_in_pos_status]
|
17
|
-
event_history = opts[:event_history]
|
18
|
-
order_type = opts[:order_type]
|
19
|
-
fiat_smallest_decimal = opts[:fiat_smallest_decimal]
|
20
|
-
crypto_smallest_decimal = opts[:crypto_smallest_decimal]
|
21
|
-
# base_min_size = opts[:base_min_size]
|
22
|
-
min_market_funds = this_product[:min_market_funds]
|
23
|
-
indicator_status = opts[:indicator_status]
|
24
|
-
quote_increment = opts[:quote_increment]
|
25
|
-
|
26
|
-
# Initialize some bot_conf variables
|
27
|
-
pie_in_sky_sell_percent = bot_conf[:pie_in_sky_sell_percent].to_f
|
28
|
-
|
29
|
-
crypto_currency = option_choice.symbol.to_s.upcase.split('_').first
|
30
|
-
portfolio = event_history.order_book[:portfolio]
|
31
|
-
symbol_portfolio = portfolio.select do |this_portfolio|
|
32
|
-
this_portfolio if this_portfolio[:currency] == crypto_currency
|
33
|
-
end
|
34
|
-
|
35
|
-
symbol_balance_available = format(
|
36
|
-
'%0.8f',
|
37
|
-
symbol_portfolio.first[:available].to_f
|
38
|
-
).to_f
|
39
|
-
|
40
|
-
# 2. Calculate Price, Size, Fees
|
41
|
-
# Get the middle of last 3 ticker prices
|
42
|
-
# to avoid over purcase blips.
|
43
|
-
last_three_prices_arr = []
|
44
|
-
last_ticker_price = event_history.order_book[:ticker_price].to_f
|
45
|
-
second_to_last_ticker_price = event_history.order_book[:ticker_price_second_to_last].to_f
|
46
|
-
third_to_last_ticker_price = event_history.order_book[:ticker_price_third_to_last].to_f
|
47
|
-
last_three_prices_arr.push(last_ticker_price)
|
48
|
-
last_three_prices_arr.push(second_to_last_ticker_price)
|
49
|
-
last_three_prices_arr.push(third_to_last_ticker_price)
|
50
|
-
# limit_price = last_three_prices_arr.min
|
51
|
-
# limit_price = last_three_prices_arr.max
|
52
|
-
|
53
|
-
# Obtain our Target Price based on TPM configurations
|
54
|
-
target_symbol_price = stuck_in_pos_status[:target_symbol_price].to_f
|
55
|
-
|
56
|
-
case order_type
|
57
|
-
when :pie
|
58
|
-
pie_in_sky_sell_percent_cast_as_decimal = format(
|
59
|
-
'%0.2f',
|
60
|
-
pie_in_sky_sell_percent * 0.01
|
61
|
-
).to_f
|
62
|
-
|
63
|
-
target_profit = target_symbol_price * pie_in_sky_sell_percent_cast_as_decimal
|
64
|
-
limit_price = target_symbol_price + target_profit
|
65
|
-
|
66
|
-
when :tpm
|
67
|
-
limit_price = target_symbol_price
|
68
|
-
# TODO: Ensure previous order price
|
69
|
-
# on last _open order_ if applicable
|
70
|
-
# is greater than this one.
|
71
|
-
order_type = :tpm
|
72
|
-
when :gtfo
|
73
|
-
# Attempt to get in front of falling price.
|
74
|
-
limit_price = last_three_prices_arr.sort[1]
|
75
|
-
gtfo_price = limit_price -= quote_increment.to_f
|
76
|
-
limit_price = gtfo_price if gtfo_price.positive?
|
77
|
-
else
|
78
|
-
raise "ERROR: Unknown order_type: #{order_type}"
|
79
|
-
end
|
80
|
-
|
81
|
-
price = format("%0.#{fiat_smallest_decimal}f", limit_price)
|
82
|
-
|
83
|
-
# Selling Available Crytpo Balance in its Entirety
|
84
|
-
# We Will Likely Want to Change this in the Future.
|
85
|
-
size = format(
|
86
|
-
"%0.#{crypto_smallest_decimal}f",
|
87
|
-
symbol_balance_available.floor(crypto_smallest_decimal)
|
88
|
-
)
|
89
|
-
|
90
|
-
size = symbol_balance_available if min_market_funds.to_i == 1
|
91
|
-
|
92
|
-
if size.to_f >= min_market_funds.to_f &&
|
93
|
-
price.to_f.positive?
|
94
|
-
|
95
|
-
# SUBMIT SELL ORDER
|
96
|
-
event_history.order_submitted = true
|
97
|
-
event_history.event_notes = "{ \"event_type\": \"#{event_history.event_type}\", \"cancel\": \"#{event_history.order_canceled}\", \"submitted\": \"#{event_history.order_submitted}\" }" if option_choice.proxy
|
98
|
-
|
99
|
-
event_history = Cryptum::API.submit_limit_order(
|
100
|
-
option_choice: option_choice,
|
101
|
-
env: env,
|
102
|
-
price: price,
|
103
|
-
size: size,
|
104
|
-
buy_or_sell: :sell,
|
105
|
-
order_type: order_type,
|
106
|
-
event_history: event_history,
|
107
|
-
indicator_status: indicator_status
|
108
|
-
)
|
109
|
-
end
|
110
|
-
|
111
|
-
event_history
|
112
|
-
rescue StandardError => e
|
113
|
-
raise e
|
114
|
-
end
|
115
|
-
|
116
|
-
# Display Usage for this Module
|
117
|
-
public_class_method def self.help
|
118
|
-
puts "USAGE:
|
119
|
-
order_book = #{self}.crypto()
|
120
|
-
"
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
data/lib/cryptum/event.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
module Cryptum
|
6
|
-
# This plugin is used to parse Coinbase Pro Web Socket Events in the HTTP Response
|
7
|
-
module Event
|
8
|
-
require 'cryptum/event/bot_conf'
|
9
|
-
require 'cryptum/event/buy'
|
10
|
-
require 'cryptum/event/cancel'
|
11
|
-
require 'cryptum/event/exit'
|
12
|
-
require 'cryptum/event/gtfo'
|
13
|
-
require 'cryptum/event/history'
|
14
|
-
require 'cryptum/event/key_press'
|
15
|
-
require 'cryptum/event/order_book'
|
16
|
-
require 'cryptum/event/pane'
|
17
|
-
require 'cryptum/event/parse'
|
18
|
-
require 'cryptum/event/scroll'
|
19
|
-
require 'cryptum/event/sell'
|
20
|
-
|
21
|
-
# Display Usage for this Module
|
22
|
-
|
23
|
-
public_class_method def self.help
|
24
|
-
constants.sort
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/cryptum/log.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
module Cryptum
|
6
|
-
# This plugin is used to instantiate a Cryptum logger with a custom message format
|
7
|
-
module Log
|
8
|
-
# Supported Method Parameters::
|
9
|
-
# Cryptum::Log.create(
|
10
|
-
# )
|
11
|
-
public_class_method def self.create
|
12
|
-
logger = Logger.new($stdout)
|
13
|
-
logger.level = Logger::INFO
|
14
|
-
logger.datetime_format = '%Y-%m-%d %H:%M:%S'
|
15
|
-
|
16
|
-
logger.formatter = proc do |severity, _datetime, _progname, msg|
|
17
|
-
# TODO: Include datetime & progname vars
|
18
|
-
"[#{severity}] #{msg}\n"
|
19
|
-
end
|
20
|
-
|
21
|
-
logger
|
22
|
-
rescue StandardError => e
|
23
|
-
raise e
|
24
|
-
end
|
25
|
-
|
26
|
-
# Display Usage for this Module
|
27
|
-
|
28
|
-
public_class_method def self.help
|
29
|
-
puts "USAGE:
|
30
|
-
logger = #{self}.create()
|
31
|
-
"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|