cryptum 0.0.355 → 0.0.356
Sign up to get free protection for your applications and to get access to all the features.
- 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/bot_conf.rb
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
module Cryptum
|
6
|
-
# This plugin is used to read and update bot conf files.
|
7
|
-
module BotConf
|
8
|
-
# Deserialize Cryptum Bot Conf
|
9
|
-
public_class_method def self.read(opts = {})
|
10
|
-
option_choice = opts[:option_choice]
|
11
|
-
event_history = opts[:event_history]
|
12
|
-
|
13
|
-
session_root = option_choice.session_root
|
14
|
-
symbol = option_choice.symbol
|
15
|
-
bot_conf_file = "#{session_root}/etc/bot_confs/#{symbol}_bot_conf.yaml"
|
16
|
-
unless File.exist?(bot_conf_file)
|
17
|
-
FileUtils.cp(
|
18
|
-
"#{session_root}/etc/bot_confs/BOT_CONF.TEMPLATE",
|
19
|
-
bot_conf_file
|
20
|
-
)
|
21
|
-
end
|
22
|
-
|
23
|
-
bot_conf = YAML.load_file(
|
24
|
-
bot_conf_file,
|
25
|
-
symbolize_names: true
|
26
|
-
)
|
27
|
-
|
28
|
-
ai_enabled = bot_conf[:artifical_intelligence]
|
29
|
-
if ai_enabled && event_history
|
30
|
-
bot_conf = Cryptum::BotConf.recalculate_tpm(
|
31
|
-
option_choice: option_choice,
|
32
|
-
event_history: event_history,
|
33
|
-
bot_conf: bot_conf
|
34
|
-
)
|
35
|
-
end
|
36
|
-
|
37
|
-
bot_conf
|
38
|
-
rescue Errno::ENOENT, NoMethodError => e
|
39
|
-
File.open('/tmp/cryptum-errors.txt', 'a') do |f|
|
40
|
-
f.puts Time.now.strftime('%Y-%m-%d %H:%M:%S.%N %z')
|
41
|
-
f.puts "Module: #{self}"
|
42
|
-
f.puts "#{e}\n\n\n"
|
43
|
-
end
|
44
|
-
|
45
|
-
retry
|
46
|
-
rescue Interrupt
|
47
|
-
# Exit Gracefully if CTRL+C is Pressed During Session
|
48
|
-
Cryptum.exit_gracefully(which_self: self)
|
49
|
-
rescue StandardError => e
|
50
|
-
# Produce a Stacktrace for anything else
|
51
|
-
Curses.close_screen
|
52
|
-
raise e
|
53
|
-
end
|
54
|
-
|
55
|
-
# SAUCE 1
|
56
|
-
# Calculate Target Profit Margin Percent Based Upon
|
57
|
-
# Observed Margins of Change in the Past 24hrs.
|
58
|
-
public_class_method def self.recalculate_tpm(opts = {})
|
59
|
-
option_choice = opts[:option_choice]
|
60
|
-
event_history = opts[:event_history]
|
61
|
-
bot_conf = opts[:bot_conf]
|
62
|
-
|
63
|
-
# BE EXTREMELY CAREFUL CHANGING THIS VALUE AS IT DICTATES
|
64
|
-
# THE TARGET PRICE AND SUBSEQUENT TIME IT TAKES FOR AN OPEN
|
65
|
-
# SELL ORDER TO BE TRIGGERED!!! SHOULD NEVER BE > 1
|
66
|
-
default_net_tpm = 1.0
|
67
|
-
maker_rate = 0.4
|
68
|
-
taker_rate = 0.6
|
69
|
-
|
70
|
-
gross_tpm = bot_conf[:target_profit_margin_percent].to_f
|
71
|
-
|
72
|
-
# Refactor TPM to be 1.0 > than fee tier,
|
73
|
-
# particularly as fee tier goes up or down
|
74
|
-
fees = event_history.order_book[:fees]
|
75
|
-
maker_rate = fees[:maker_fee_rate].to_f unless fees.empty?
|
76
|
-
# maker_fee = format('%0.2f', maker_rate * 100)
|
77
|
-
|
78
|
-
taker_rate = fees[:taker_fee_rate].to_f unless fees.empty?
|
79
|
-
# taker_fee = format('%0.2f', taker_rate * 100)
|
80
|
-
|
81
|
-
# Set default_net_tpm if AI is true in bot_conf.
|
82
|
-
low_24h = event_history.order_book[:low_24h].to_f
|
83
|
-
high_24h = event_history.order_book[:high_24h].to_f
|
84
|
-
|
85
|
-
case option_choice.market_trend_reset
|
86
|
-
when 604_800
|
87
|
-
# 1W Chart
|
88
|
-
ai_net_tpm = ((1 - (low_24h / high_24h)) * 100) * 7
|
89
|
-
when 86_400
|
90
|
-
# 1D Chart
|
91
|
-
ai_net_tpm = (1 - (low_24h / high_24h)) * 100
|
92
|
-
when 14_400
|
93
|
-
# 4H Chart
|
94
|
-
ai_net_tpm = ((1 - (low_24h / high_24h)) * 100) / 6
|
95
|
-
when 10_800
|
96
|
-
# 3H Chart
|
97
|
-
ai_net_tpm = ((1 - (low_24h / high_24h)) * 100) / 8
|
98
|
-
when 7_200
|
99
|
-
# 2H Chart
|
100
|
-
ai_net_tpm = ((1 - (low_24h / high_24h)) * 100) / 12
|
101
|
-
when 3_600
|
102
|
-
# 1H Chart
|
103
|
-
ai_net_tpm = ((1 - (low_24h / high_24h)) * 100) / 24
|
104
|
-
when 2_700
|
105
|
-
# 45m Chart
|
106
|
-
ai_net_tpm = (((1 - (low_24h / high_24h)) * 100) / 24) * 0.75
|
107
|
-
when 1_800
|
108
|
-
# 30m Chart
|
109
|
-
ai_net_tpm = (((1 - (low_24h / high_24h)) * 100) / 24) * 0.5
|
110
|
-
when 900
|
111
|
-
# 15m Chart
|
112
|
-
ai_net_tpm = (((1 - (low_24h / high_24h)) * 100) / 24) * 0.25
|
113
|
-
when 300
|
114
|
-
# 5m Chart
|
115
|
-
ai_net_tpm = (((1 - (low_24h / high_24h)) * 100) / 24) * 0.083
|
116
|
-
when 180
|
117
|
-
# 3m Chart
|
118
|
-
ai_net_tpm = (((1 - (low_24h / high_24h)) * 100) / 24) * 0.05
|
119
|
-
when 60
|
120
|
-
# 1m Chart
|
121
|
-
ai_net_tpm = (((1 - (low_24h / high_24h)) * 100) / 24) * 0.017
|
122
|
-
end
|
123
|
-
|
124
|
-
default_net_tpm = ai_net_tpm if ai_net_tpm > default_net_tpm
|
125
|
-
|
126
|
-
min_gross_tpm = format(
|
127
|
-
'%0.2f',
|
128
|
-
(maker_rate.to_f + taker_rate.to_f) + default_net_tpm
|
129
|
-
)
|
130
|
-
|
131
|
-
if min_gross_tpm != gross_tpm.to_s
|
132
|
-
bot_conf[:target_profit_margin_percent] = min_gross_tpm.to_f
|
133
|
-
Cryptum::BotConf.update(
|
134
|
-
option_choice: option_choice,
|
135
|
-
bot_conf: bot_conf,
|
136
|
-
key: :target_profit_margin_percent,
|
137
|
-
value: min_gross_tpm.to_f
|
138
|
-
)
|
139
|
-
end
|
140
|
-
|
141
|
-
bot_conf
|
142
|
-
rescue Errno::ENOENT, NoMethodError => e
|
143
|
-
File.open('/tmp/cryptum-errors.txt', 'a') do |f|
|
144
|
-
f.puts Time.now.strftime('%Y-%m-%d %H:%M:%S.%N %z')
|
145
|
-
f.puts "Module: #{self}"
|
146
|
-
f.puts "#{e}\n\n\n"
|
147
|
-
end
|
148
|
-
|
149
|
-
retry
|
150
|
-
rescue Interrupt
|
151
|
-
# Exit Gracefully if CTRL+C is Pressed During Session
|
152
|
-
Cryptum.exit_gracefully(which_self: self)
|
153
|
-
rescue StandardError => e
|
154
|
-
# Produce a Stacktrace for anything else
|
155
|
-
Curses.close_screen
|
156
|
-
raise e
|
157
|
-
end
|
158
|
-
|
159
|
-
# Update Key/Value Pair in Bot Conf and Serialize to YAML File
|
160
|
-
public_class_method def self.update(opts = {})
|
161
|
-
option_choice = opts[:option_choice]
|
162
|
-
bot_conf = opts[:bot_conf]
|
163
|
-
key = opts[:key].to_s.to_sym
|
164
|
-
value = opts[:value]
|
165
|
-
|
166
|
-
session_root = option_choice.session_root
|
167
|
-
symbol = option_choice.symbol
|
168
|
-
bot_conf_file = "#{session_root}/etc/bot_confs/#{symbol}_bot_conf.yaml"
|
169
|
-
|
170
|
-
bot_conf[key] = value
|
171
|
-
File.write(bot_conf_file, bot_conf.to_yaml)
|
172
|
-
rescue Errno::ENOENT, NoMethodError => e
|
173
|
-
File.open('/tmp/cryptum-errors.txt', 'a') do |f|
|
174
|
-
f.puts Time.now.strftime('%Y-%m-%d %H:%M:%S.%N %z')
|
175
|
-
f.puts "Module: #{self}"
|
176
|
-
f.puts "#{e}\n\n\n"
|
177
|
-
end
|
178
|
-
|
179
|
-
retry
|
180
|
-
rescue Interrupt
|
181
|
-
# Exit Gracefully if CTRL+C is Pressed During Session
|
182
|
-
Cryptum.exit_gracefully(which_self: self)
|
183
|
-
rescue StandardError => e
|
184
|
-
# Produce a Stacktrace for anything else
|
185
|
-
Curses.close_screen
|
186
|
-
raise e
|
187
|
-
end
|
188
|
-
|
189
|
-
# Display Usage for this Module
|
190
|
-
|
191
|
-
public_class_method def self.help
|
192
|
-
puts "USAGE:
|
193
|
-
logger = #{self}.create()
|
194
|
-
"
|
195
|
-
end
|
196
|
-
end
|
197
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Reload the Bot Conf When the "r" Key is Pressed
|
5
|
-
module Event
|
6
|
-
module BotConf
|
7
|
-
# Supported Method Parameters::
|
8
|
-
# Cryptum::Event::BotConf.reload(
|
9
|
-
# )
|
10
|
-
public_class_method def self.reload(opts = {})
|
11
|
-
terminal_win = opts[:terminal_win]
|
12
|
-
event_history = opts[:event_history]
|
13
|
-
option_choice = opts[:option_choice]
|
14
|
-
|
15
|
-
event_history.recalculate_order_plan = true
|
16
|
-
terminal_win.key_press_event.key_r = false
|
17
|
-
|
18
|
-
Cryptum::BotConf.read(
|
19
|
-
option_choice: option_choice,
|
20
|
-
event_history: event_history
|
21
|
-
)
|
22
|
-
rescue StandardError => e
|
23
|
-
raise e
|
24
|
-
end
|
25
|
-
|
26
|
-
# Display Usage for this Module
|
27
|
-
public_class_method def self.help
|
28
|
-
puts "USAGE:
|
29
|
-
bot_conf = #{self}.reload()
|
30
|
-
"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/lib/cryptum/event/buy.rb
DELETED
@@ -1,145 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Submit a Limit Order
|
5
|
-
# to Buy Crypto Currency
|
6
|
-
|
7
|
-
module Event
|
8
|
-
module Buy
|
9
|
-
# Supported Method Parameters::
|
10
|
-
# Cryptum::Event::Buy.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
|
-
event_history = opts[:event_history]
|
17
|
-
order_type = opts[:order_type]
|
18
|
-
fiat_smallest_decimal = opts[:fiat_smallest_decimal]
|
19
|
-
# fiat_portfolio_file = opts[:fiat_portfolio_file]
|
20
|
-
order_history = opts[:order_history]
|
21
|
-
crypto_smallest_decimal = opts[:crypto_smallest_decimal]
|
22
|
-
# base_min_size = opts[:base_min_size]
|
23
|
-
min_market_funds = this_product[:min_market_funds]
|
24
|
-
indicator_status = opts[:indicator_status]
|
25
|
-
|
26
|
-
# Initialize some bot_conf variables
|
27
|
-
pie_in_sky_buy_percent = bot_conf[:pie_in_sky_buy_percent].to_f
|
28
|
-
autotrade_portfolio_percent = bot_conf[:autotrade_portfolio_percent].to_f
|
29
|
-
# target_profit_margin_percent = bot_conf[:target_profit_margin_percent].to_f
|
30
|
-
|
31
|
-
crypto_currency = option_choice.symbol.to_s.upcase.split('_').first
|
32
|
-
portfolio = event_history.order_book[:portfolio]
|
33
|
-
symbol_portfolio = portfolio.select do |this_portfolio|
|
34
|
-
this_portfolio if this_portfolio[:currency] == crypto_currency
|
35
|
-
end
|
36
|
-
|
37
|
-
symbol_balance = format(
|
38
|
-
'%0.8f',
|
39
|
-
symbol_portfolio.first[:balance].to_f
|
40
|
-
).to_f
|
41
|
-
|
42
|
-
# 2. Calculate Price, Size, Fees
|
43
|
-
# Get the middle of last 3 ticker prices
|
44
|
-
# to avoid over purcase blips.
|
45
|
-
last_three_prices_arr = []
|
46
|
-
last_ticker_price = event_history.order_book[:ticker_price].to_f
|
47
|
-
second_to_last_ticker_price = event_history.order_book[:ticker_price_second_to_last].to_f
|
48
|
-
third_to_last_ticker_price = event_history.order_book[:ticker_price_third_to_last].to_f
|
49
|
-
last_three_prices_arr.push(last_ticker_price)
|
50
|
-
last_three_prices_arr.push(second_to_last_ticker_price)
|
51
|
-
last_three_prices_arr.push(third_to_last_ticker_price)
|
52
|
-
|
53
|
-
case order_type
|
54
|
-
when :pie
|
55
|
-
limit_price = last_three_prices_arr.sort[1]
|
56
|
-
pie_in_sky_buy_percent_cast_as_decimal = format(
|
57
|
-
'%0.2f',
|
58
|
-
pie_in_sky_buy_percent * 0.01
|
59
|
-
).to_f
|
60
|
-
|
61
|
-
limit_price -= (limit_price * pie_in_sky_buy_percent_cast_as_decimal)
|
62
|
-
when :tpm
|
63
|
-
limit_price = last_three_prices_arr.sort[1]
|
64
|
-
when :gtfo
|
65
|
-
# price = format("%0.#{fiat_smallest_decimal}f", limit_price)
|
66
|
-
raise "ERROR: Why is a Buy Submitted for #{order_type}?"
|
67
|
-
else
|
68
|
-
raise "ERROR: Unknown order_type: #{order_type}"
|
69
|
-
end
|
70
|
-
|
71
|
-
price = format("%0.#{fiat_smallest_decimal}f", limit_price)
|
72
|
-
|
73
|
-
# TODO: Determine if our N% Autotrade
|
74
|
-
# Threshold has already been met
|
75
|
-
# Buying Crypto w/ Fiat
|
76
|
-
autotrade_portfolio_percent_cast_as_decimal = format(
|
77
|
-
'%0.7f',
|
78
|
-
autotrade_portfolio_percent * 0.01
|
79
|
-
).to_f
|
80
|
-
|
81
|
-
fiat_portfolio = event_history.order_book[:fiat_portfolio]
|
82
|
-
fiat_balance_available = format(
|
83
|
-
"%0.#{fiat_smallest_decimal}f",
|
84
|
-
fiat_portfolio.first[:available]
|
85
|
-
).to_f
|
86
|
-
|
87
|
-
# Make sure size is within constraints
|
88
|
-
# of autotrade_portfolio_percent
|
89
|
-
total_limit_buy_orders_open = order_history.select do |orders|
|
90
|
-
orders[:type] == 'limit' &&
|
91
|
-
orders[:side] == 'buy' &&
|
92
|
-
orders[:status] == 'open'
|
93
|
-
end
|
94
|
-
|
95
|
-
total_limit_buy_order_open_tot = total_limit_buy_orders_open.length
|
96
|
-
total_limit_buy_orders_open_size = total_limit_buy_orders_open.inject(0) do |sum, hash|
|
97
|
-
sum + hash[:size].to_f
|
98
|
-
end.to_f
|
99
|
-
|
100
|
-
fiat_to_autotrade = fiat_balance_available * autotrade_portfolio_percent_cast_as_decimal
|
101
|
-
calc_fiat_to_buy = (fiat_to_autotrade / last_ticker_price) - symbol_balance
|
102
|
-
size = format(
|
103
|
-
"%0.#{crypto_smallest_decimal}f",
|
104
|
-
calc_fiat_to_buy - total_limit_buy_orders_open_size
|
105
|
-
)
|
106
|
-
|
107
|
-
if min_market_funds.to_i >= 1
|
108
|
-
size = (
|
109
|
-
(calc_fiat_to_buy - total_limit_buy_orders_open_size).to_i - min_market_funds.to_i
|
110
|
-
).to_s
|
111
|
-
end
|
112
|
-
|
113
|
-
if size.to_f >= min_market_funds.to_f &&
|
114
|
-
total_limit_buy_order_open_tot.zero? &&
|
115
|
-
price.to_f.positive?
|
116
|
-
# SUBMIT BUY ORDER
|
117
|
-
event_history.order_submitted = true
|
118
|
-
event_history.event_notes = "{ \"event_type\": \"#{event_history.event_type}\", \"cancel\": \"#{event_history.order_canceled}\", \"submitted\": \"#{event_history.order_submitted}\" }" if option_choice.proxy
|
119
|
-
|
120
|
-
event_history = Cryptum::API.submit_limit_order(
|
121
|
-
option_choice: option_choice,
|
122
|
-
env: env,
|
123
|
-
price: price,
|
124
|
-
size: size,
|
125
|
-
buy_or_sell: :buy,
|
126
|
-
order_type: order_type,
|
127
|
-
event_history: event_history,
|
128
|
-
indicator_status: indicator_status
|
129
|
-
)
|
130
|
-
end
|
131
|
-
|
132
|
-
event_history
|
133
|
-
rescue StandardError => e
|
134
|
-
raise e
|
135
|
-
end
|
136
|
-
|
137
|
-
# Display Usage for this Module
|
138
|
-
public_class_method def self.help
|
139
|
-
puts "USAGE:
|
140
|
-
event_history = #{self}.crypto()
|
141
|
-
"
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
data/lib/cryptum/event/cancel.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Reload the Bot Conf When the "C" Key is Pressed
|
5
|
-
module Event
|
6
|
-
module Cancel
|
7
|
-
# Supported Method Parameters::
|
8
|
-
# Cryptum::Event::Cancel.open_orders(
|
9
|
-
# )
|
10
|
-
public_class_method def self.open_orders(opts = {})
|
11
|
-
terminal_win = opts[:terminal_win]
|
12
|
-
option_choice = opts[:option_choice]
|
13
|
-
env = opts[:env]
|
14
|
-
# event_history = opts[:event_history]
|
15
|
-
# order_type = opts[:order_type]
|
16
|
-
# order_action = opts[:order_action]
|
17
|
-
|
18
|
-
terminal_win.key_press_event.key_c = false
|
19
|
-
Cryptum::API.cancel_all_open_orders(
|
20
|
-
env: env,
|
21
|
-
option_choice: option_choice
|
22
|
-
)
|
23
|
-
rescue StandardError => e
|
24
|
-
raise e
|
25
|
-
end
|
26
|
-
|
27
|
-
# Display Usage for this Module
|
28
|
-
public_class_method def self.help
|
29
|
-
puts "USAGE:
|
30
|
-
#{self}.open_orders()
|
31
|
-
"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/cryptum/event/exit.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Exit Cryptum Gracefully When the "x" Key is Pressed
|
5
|
-
module Event
|
6
|
-
module Exit
|
7
|
-
# Supported Method Parameters::
|
8
|
-
# Cryptum::Event::BotConf.gracefully(
|
9
|
-
# )
|
10
|
-
public_class_method def self.gracefully(opts = {})
|
11
|
-
terminal_win = opts[:terminal_win]
|
12
|
-
event_history = opts[:event_history]
|
13
|
-
option_choice = opts[:option_choice]
|
14
|
-
env = opts[:env]
|
15
|
-
|
16
|
-
terminal_win.key_press_event.key_x = false
|
17
|
-
Cryptum.exit_gracefully(
|
18
|
-
which_self: self,
|
19
|
-
event_history: event_history,
|
20
|
-
option_choice: option_choice,
|
21
|
-
env: env
|
22
|
-
)
|
23
|
-
rescue StandardError => e
|
24
|
-
raise e
|
25
|
-
end
|
26
|
-
|
27
|
-
# Display Usage for this Module
|
28
|
-
public_class_method def self.help
|
29
|
-
puts "USAGE:
|
30
|
-
#{self}.gracefully()
|
31
|
-
"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/cryptum/event/gtfo.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Get the F* Out (GTFO) when the "G" Key is Pressed
|
5
|
-
module Event
|
6
|
-
module GTFO
|
7
|
-
# Supported Method Parameters::
|
8
|
-
# Cryptum::Event::GTFO.now(
|
9
|
-
# )
|
10
|
-
public_class_method def self.now(opts = {})
|
11
|
-
terminal_win = opts[:terminal_win]
|
12
|
-
option_choice = opts[:option_choice]
|
13
|
-
env = opts[:env]
|
14
|
-
event_history = opts[:event_history]
|
15
|
-
bot_conf = opts[:bot_conf]
|
16
|
-
|
17
|
-
terminal_win.key_press_event.key_g = false
|
18
|
-
Cryptum::API.gtfo(
|
19
|
-
option_choice: option_choice,
|
20
|
-
env: env,
|
21
|
-
event_history: event_history,
|
22
|
-
bot_conf: bot_conf
|
23
|
-
)
|
24
|
-
rescue StandardError => e
|
25
|
-
raise e
|
26
|
-
end
|
27
|
-
|
28
|
-
# Display Usage for this Module
|
29
|
-
public_class_method def self.help
|
30
|
-
puts "USAGE:
|
31
|
-
bot_conf = #{self}.now()
|
32
|
-
"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,105 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Track Event History
|
5
|
-
module Event
|
6
|
-
# Keep Last Event History When Terminal Resize Occuers
|
7
|
-
class History
|
8
|
-
attr_accessor :bullish_trend,
|
9
|
-
:event,
|
10
|
-
:event_notes,
|
11
|
-
:event_type,
|
12
|
-
:first_event,
|
13
|
-
:market_trend_event,
|
14
|
-
:open_sell_orders,
|
15
|
-
:open_sell_orders_max,
|
16
|
-
:open_sell_orders_merge,
|
17
|
-
:order_book,
|
18
|
-
:order_canceled,
|
19
|
-
:order_execute_win_active,
|
20
|
-
:order_execute_details_win_active,
|
21
|
-
:order_execute_index_offset,
|
22
|
-
:order_execute_max_rows_to_display,
|
23
|
-
:order_execute_max_records_available_to_display,
|
24
|
-
:order_execute_row_to_select,
|
25
|
-
:order_execute_selected_data,
|
26
|
-
:order_plan_win_active,
|
27
|
-
:order_plan_details_win_active,
|
28
|
-
:order_plan_index_offset,
|
29
|
-
:order_plan_max_rows_to_display,
|
30
|
-
:order_plan_max_records_available_to_display,
|
31
|
-
:order_plan_row_to_select,
|
32
|
-
:order_plan_selected_data,
|
33
|
-
:order_ready,
|
34
|
-
:order_submitted,
|
35
|
-
:plan_no,
|
36
|
-
:reconnected,
|
37
|
-
:red_pill,
|
38
|
-
:start_time,
|
39
|
-
:ticker_event,
|
40
|
-
:time_between_orders,
|
41
|
-
:time_between_orders_max,
|
42
|
-
:time_between_orders_min,
|
43
|
-
:time_between_orders_reset,
|
44
|
-
:recalculate_order_plan
|
45
|
-
|
46
|
-
def initialize(opts = {})
|
47
|
-
# option_choice = opts[:option_choice]
|
48
|
-
start_time = opts[:start_time]
|
49
|
-
order_book = opts[:order_book]
|
50
|
-
|
51
|
-
self.bullish_trend = true
|
52
|
-
self.first_event = true
|
53
|
-
self.open_sell_orders = 0
|
54
|
-
self.open_sell_orders_max = 500
|
55
|
-
self.open_sell_orders_merge = false
|
56
|
-
self.order_book = order_book
|
57
|
-
self.order_canceled = false
|
58
|
-
self.order_execute_win_active = false
|
59
|
-
self.order_execute_details_win_active = false
|
60
|
-
self.order_execute_index_offset = 0
|
61
|
-
self.order_execute_max_rows_to_display = 6
|
62
|
-
self.order_execute_max_records_available_to_display = 6
|
63
|
-
self.order_execute_row_to_select = order_execute_index_offset
|
64
|
-
self.order_execute_selected_data = { color: :white }
|
65
|
-
self.order_plan_win_active = true
|
66
|
-
self.order_plan_details_win_active = false
|
67
|
-
self.order_plan_index_offset = 0
|
68
|
-
self.order_plan_max_rows_to_display = 6
|
69
|
-
self.order_plan_max_records_available_to_display = 6
|
70
|
-
self.order_plan_row_to_select = order_plan_index_offset
|
71
|
-
self.order_plan_selected_data = { color: :white }
|
72
|
-
self.order_ready = false
|
73
|
-
self.order_submitted = false
|
74
|
-
self.plan_no = 1
|
75
|
-
self.reconnected = false
|
76
|
-
self.red_pill = false
|
77
|
-
self.recalculate_order_plan = false
|
78
|
-
self.start_time = start_time
|
79
|
-
|
80
|
-
# -------------------------------------------------- #
|
81
|
-
# SAUCE 4
|
82
|
-
# TODO: develop algorithm to calculate
|
83
|
-
# FAST BUY && SLOW BUY values taking
|
84
|
-
# market_trend_reset values into account
|
85
|
-
|
86
|
-
# FAST BUY = 10 minutes
|
87
|
-
self.time_between_orders = 600
|
88
|
-
self.time_between_orders_reset = time_between_orders
|
89
|
-
|
90
|
-
# SLOW BUY = 1 hour
|
91
|
-
self.time_between_orders_max = 3_600
|
92
|
-
|
93
|
-
# 5 seconds
|
94
|
-
self.time_between_orders_min = 5
|
95
|
-
# -------------------------------------------------- #
|
96
|
-
end
|
97
|
-
rescue Interrupt
|
98
|
-
# Exit Gracefully if CTRL+C is Pressed During Session
|
99
|
-
Cryptum.exit_gracefully(which_self: self)
|
100
|
-
rescue StandardError => e
|
101
|
-
# Produce a Stacktrace for anything else
|
102
|
-
raise e
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Detect if any Keys were Pressed on the Keyboard
|
5
|
-
module Event
|
6
|
-
module KeyPress
|
7
|
-
# Supported Method Parameters::
|
8
|
-
# Cryptum::Event::KeyPress.detect(
|
9
|
-
# )
|
10
|
-
public_class_method def self.detect(opts = {})
|
11
|
-
terminal_win = opts[:terminal_win]
|
12
|
-
|
13
|
-
Cryptum::UI.detect_key_press_in_ui(
|
14
|
-
key_press_event: terminal_win.key_press_event,
|
15
|
-
ui_win: terminal_win.ticker_section
|
16
|
-
)
|
17
|
-
|
18
|
-
Cryptum::UI.detect_key_press_in_ui(
|
19
|
-
key_press_event: terminal_win.key_press_event,
|
20
|
-
ui_win: terminal_win.portfolio_section
|
21
|
-
)
|
22
|
-
|
23
|
-
Cryptum::UI.detect_key_press_in_ui(
|
24
|
-
key_press_event: terminal_win.key_press_event,
|
25
|
-
ui_win: terminal_win.order_plan_section
|
26
|
-
)
|
27
|
-
|
28
|
-
Cryptum::UI.detect_key_press_in_ui(
|
29
|
-
key_press_event: terminal_win.key_press_event,
|
30
|
-
ui_win: terminal_win.order_timer_section
|
31
|
-
)
|
32
|
-
|
33
|
-
Cryptum::UI.detect_key_press_in_ui(
|
34
|
-
key_press_event: terminal_win.key_press_event,
|
35
|
-
ui_win: terminal_win.market_trend_section
|
36
|
-
)
|
37
|
-
|
38
|
-
Cryptum::UI.detect_key_press_in_ui(
|
39
|
-
key_press_event: terminal_win.key_press_event,
|
40
|
-
ui_win: terminal_win.signal_engine_section
|
41
|
-
)
|
42
|
-
|
43
|
-
Cryptum::UI.detect_key_press_in_ui(
|
44
|
-
key_press_event: terminal_win.key_press_event,
|
45
|
-
ui_win: terminal_win.order_execute_section
|
46
|
-
)
|
47
|
-
|
48
|
-
Cryptum::UI.detect_key_press_in_ui(
|
49
|
-
key_press_event: terminal_win.key_press_event,
|
50
|
-
ui_win: terminal_win.command_section
|
51
|
-
)
|
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
|
-
order_book = #{self}.crypto()
|
60
|
-
"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Cryptum
|
4
|
-
# This plugin is used to Write the Order Book from Memory
|
5
|
-
# to File When the "w" Key is Pressed
|
6
|
-
module Event
|
7
|
-
module OrderBook
|
8
|
-
# Supported Method Parameters::
|
9
|
-
# Cryptum::Event::BotConf.write(
|
10
|
-
# )
|
11
|
-
public_class_method def self.write(opts = {})
|
12
|
-
terminal_win = opts[:terminal_win]
|
13
|
-
event_history = opts[:event_history]
|
14
|
-
|
15
|
-
terminal_win.key_press_event.key_w = false
|
16
|
-
order_book_file = event_history.order_book[:path]
|
17
|
-
|
18
|
-
File.write(
|
19
|
-
order_book_file,
|
20
|
-
JSON.pretty_generate(event_history.order_book)
|
21
|
-
)
|
22
|
-
rescue StandardError => e
|
23
|
-
raise e
|
24
|
-
end
|
25
|
-
|
26
|
-
# Display Usage for this Module
|
27
|
-
public_class_method def self.help
|
28
|
-
puts "USAGE:
|
29
|
-
#{self}.write()
|
30
|
-
"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|