bitex_bot 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98d52a8ce88ec8cfa25ad7781d8c989ac3311fd2
4
- data.tar.gz: 3c15cc5fcb36a12a78585aa61e2ba2c86e73134d
3
+ metadata.gz: efc6ef530a550fa1e3c3f2a52f414b1027b4eba6
4
+ data.tar.gz: 82201c561520e8adbaf98472fd5a1ebb749f6157
5
5
  SHA512:
6
- metadata.gz: 59c028daeb22fae99f9c2a87bf473a78d5cacf09ba1b3c3d3973560ac6cc4bc08c533ad00dfbb1ae3eb182a1798605a1a799258e57fa9dccaa602ec82174145b
7
- data.tar.gz: 37138d26080cd50d03700733002c9318be47a8c433cdc71e42d7c9c0a4adca0fab55d4e1a5d3b96a01d287f198a99872b7902c7daa63b892dd23455a3da006fa
6
+ metadata.gz: d5086a469c090655a423994b5e915777090b94a99f3687bdeb48ee1df5c44c57dd0a5817f0de2a449b69ed92de518d3a95cb1e539ad0488f3f2745c1be978b75
7
+ data.tar.gz: 1f497ce86c62a994969c9718f7f5239e943457349b961cf2a41599c698ae989b00e521f43df05f5974849e27efeeaa445160dd29f876c2235ddcfc7a1aa991df
data/Gemfile CHANGED
@@ -2,4 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in bitex_bot.gemspec
4
4
  gemspec
5
- gem 'bitstamp', git: 'https://github.com/nubis/bitstamp.git'
5
+ gem 'bitstamp', git: 'https://github.com/bitex-la/bitstamp.git'
data/bitex_bot.gemspec CHANGED
@@ -21,9 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "settingslogic"
25
- spec.add_dependency "activerecord"
26
- spec.add_dependency "activesupport"
24
+ spec.add_dependency "activerecord", "4.2"
27
25
  spec.add_dependency "sqlite3"
28
26
  spec.add_dependency "bitstamp"
29
27
  spec.add_dependency "bitex", "0.3"
@@ -32,7 +30,7 @@ Gem::Specification.new do |spec|
32
30
  spec.add_dependency "mail"
33
31
  spec.add_dependency "hashie"
34
32
 
35
- spec.add_development_dependency "bundler", "~> 1.3"
33
+ spec.add_development_dependency "bundler"
36
34
  spec.add_development_dependency "byebug"
37
35
  spec.add_development_dependency "rake"
38
36
  spec.add_development_dependency "rspec"
@@ -41,4 +39,5 @@ Gem::Specification.new do |spec|
41
39
  spec.add_development_dependency "factory_girl"
42
40
  spec.add_development_dependency "timecop"
43
41
  spec.add_development_dependency "shoulda-matchers"
42
+ spec.add_development_dependency "webmock"
44
43
  end
@@ -1,6 +1,20 @@
1
1
  require "bigdecimal"
2
2
  require "bigdecimal/util"
3
3
 
4
+ module Bitfinex
5
+ module WithUserAgent
6
+ def new_rest_connection
7
+ super.tap do |conn|
8
+ conn.headers['User-Agent'] = BitexBot.user_agent
9
+ end
10
+ end
11
+ end
12
+
13
+ class Client
14
+ prepend WithUserAgent
15
+ end
16
+ end
17
+
4
18
  class BitfinexApiWrapper
5
19
  def self.setup(settings)
6
20
  Bitfinex::Client.configure do |conf|
@@ -13,6 +27,7 @@ class BitfinexApiWrapper
13
27
  begin
14
28
  block.call
15
29
  rescue StandardError, Bitfinex::ClientError => e
30
+ raise e if BitexBot::Robot.test_mode
16
31
  BitexBot::Robot.logger.info("Bitfinex #{action} failed. Retrying in 5 seconds.")
17
32
  sleep 5
18
33
  retry
@@ -1,7 +1,7 @@
1
1
  class BitstampApiWrapper
2
2
  def self.setup(settings)
3
3
  Bitstamp.setup do |config|
4
- config.key = settings.bitstamp.key
4
+ config.key = settings.bitstamp.api_key
5
5
  config.secret = settings.bitstamp.secret
6
6
  config.client_id = settings.bitstamp.client_id.to_s
7
7
  end
@@ -225,8 +225,8 @@ module BitexBot
225
225
  subject 'Notice from your robot trader'
226
226
  body message
227
227
  end
228
- mail.delivery_method(Settings.mailer.method.to_sym,
229
- Settings.mailer.options.symbolize_keys)
228
+ mail.delivery_method(Settings.mailer.delivery_method.to_sym,
229
+ Settings.mailer.options.to_hash)
230
230
  mail.deliver!
231
231
  end
232
232
  end
@@ -1,21 +1,38 @@
1
- require 'settingslogic'
1
+ require 'hashie'
2
2
 
3
3
  module BitexBot
4
- class Settings < Settingslogic
5
- def self.load_default
6
- path = ARGV[0] || File.expand_path('bitex_bot_settings.yml', Dir.pwd)
4
+ class FileSettings < ::Hashie::Clash
5
+ def method_missing(name, *args)
6
+ return super unless args.size == 1 && args.none?
7
+ self[name] = args.first
8
+ end
9
+ end
10
+
11
+ class SettingsClass < ::Hashie::Mash
12
+ include ::Hashie::Extensions::Mash::SymbolizeKeys
13
+
14
+ def load_default
15
+ path = ARGV[0] || 'bitex_bot_settings.rb'
7
16
  unless FileTest.exists?(path)
8
- sample_path = File.expand_path('../../../settings.yml.sample', __FILE__)
17
+ sample_path = File.expand_path('../../../settings.rb.sample', __FILE__)
9
18
  FileUtils.cp(sample_path, path)
10
19
  puts "No settings found, I've created a new one with sample "\
11
20
  "values at #{path}. Please go ahead and edit it before running this again."
12
21
  exit 1
13
22
  end
14
- source path
23
+ load_settings(path)
15
24
  end
16
25
 
17
- def self.load_test
18
- source File.expand_path('../../../settings.yml.sample', __FILE__)
26
+ def load_test
27
+ load_settings File.expand_path('../../../settings.rb.sample', __FILE__)
28
+ end
29
+
30
+ def load_settings(path)
31
+ file_settings = FileSettings.new
32
+ file_settings.instance_eval(File.read(path), path, 1)
33
+ merge!(file_settings)
19
34
  end
20
35
  end
36
+
37
+ Settings = SettingsClass.new
21
38
  end
@@ -1,3 +1,3 @@
1
1
  module BitexBot
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.3"
3
3
  end
data/lib/bitex_bot.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  require "bitex_bot/version"
2
2
  require 'hashie'
3
- require "active_support"
4
3
  require "active_record"
5
- require "active_model"
6
4
  require "mail"
7
5
  require "logger"
8
6
  require "bitex"
@@ -17,4 +15,36 @@ Dir[File.dirname(__FILE__) + '/bitex_bot/models/*.rb'].each {|file| require file
17
15
  require "bitex_bot/robot"
18
16
 
19
17
  module BitexBot
18
+ def self.user_agent
19
+ "Bitexbot/#{VERSION} (https://github.com/bitex-la/bitex-bot)"
20
+ end
21
+ end
22
+
23
+ module Bitex
24
+ module WithUserAgent
25
+ def grab_curl
26
+ super.tap do |curl|
27
+ curl.headers['User-Agent'] = BitexBot.user_agent
28
+ end
29
+ end
30
+ end
31
+
32
+ class Api
33
+ class << self
34
+ prepend WithUserAgent
35
+ end
36
+ end
37
+ end
38
+
39
+ # Itbit and Bitstamp
40
+ module RestClient
41
+ module WithUserAgent
42
+ def default_headers
43
+ super.merge(:user_agent => BitexBot.user_agent)
44
+ end
45
+ end
46
+
47
+ class Request
48
+ prepend WithUserAgent
49
+ end
20
50
  end
@@ -0,0 +1,97 @@
1
+ # File to write log to. The log is rotated every 10240000 bytes, 10 oldest
2
+ # logs are kept around.
3
+ # If you want to log to stdout you can set 'file' to nil or remove the key.
4
+ # How much information to show in the log, valid values are debug, info, error
5
+ log file: 'bitex_bot.log', level: :info
6
+
7
+ # Seconds to keep an order alive before recalculating the price and replacing it.
8
+ # Given the way in which the robot tries to find the safest price to place an
9
+ # order, if the time to live is too long the price is not going to be
10
+ # competitive. About 20 seconds is a good number here.
11
+ time_to_live 20
12
+
13
+ # Use sandbox environments instead of live environments
14
+ # only available for bitex and itbit
15
+ sandbox false
16
+
17
+ # Which market to use for taking (we're always makers on bitex)
18
+ # 'itbit', 'bitstamp' or 'bitfinex'
19
+ taker 'bitstamp'
20
+
21
+ # Settings for buying on bitex and selling on bitstamp.
22
+ # amount_to_spend_per_order:
23
+ # Dollars to spend on each initial bitex bid.
24
+ # Should at least be 10.0 which is the current minimum order size on Bitex.
25
+ # if it's too large you're taking a higher risk if whatever happens and you
26
+ # cannot re sell it afterwards. Also, higher amounts result in your bitex
27
+ # bid price not being competitive.
28
+ # A number between 10.0 and 1000.0 is reccommended.
29
+ # profit:
30
+ # Your profit when buying on bitex, 0.5 means 0.5%.
31
+ # After calculating the price at which bitcoins can be sold on bitstamp, the
32
+ # robot deduces your profit from that price, and places a bid on bitex paying
33
+ # a lower price.
34
+ buying amount_to_spend_per_order: 10.0, profit: 0.5
35
+
36
+ # Settings for selling on bitex and buying on bitstamp.
37
+ # quantity_to_sell_per_order:
38
+ # Quantity to sell on each initial bitex Ask.
39
+ # It should be at least 10 USD worth of BTC at current market prices, a bit
40
+ # more just to be safe. Otherwise Bitex will reject your orders for being too
41
+ # small.
42
+ # If it's too large then you're taking a risk if whatever happens and you
43
+ # If it's too small then the robot is pointless, and if it's too large you're
44
+ # taking a higher risk if whatever happens ad you cannot re buy afterwards.
45
+ # Also, higher amounts result in your bitex bid price not being competitive.
46
+ # A number between 0.05 and 2.0 is recommended.
47
+ # profit:
48
+ # Your profit when selling on bitex, 0.5 means 0.5%.
49
+ # After calculating the price at which bitcoins can be bought on bitstamp,
50
+ # the robot deduces your profit from that price and places an ask on bitex
51
+ # charging a higher price.
52
+ selling quantity_to_sell_per_order: 0.1, profit: 0.5
53
+
54
+ # This is your bitex api key, it's passed in to the
55
+ # bitex gem: https://github.com/bitex-la/bitex-ruby
56
+ bitex 'your_bitex_api_key_which_should_be_kept_safe'
57
+
58
+ # These are passed in to the bitstamp gem:
59
+ # see https://github.com/kojnapp/bitstamp for more info.
60
+ bitstamp api_key: 'YOUR_API_KEY',
61
+ secret: 'YOUR_API_SECRET',
62
+ client_id: 'YOUR_BITSTAMP_USERNAME'
63
+
64
+ # These are passed in to the itbit gem:
65
+ # see https://github.com/bitex-la/itbit for more info.
66
+ itbit client_key: 'the-client-key',
67
+ secret: 'the-secret',
68
+ user_id: 'the-user-id',
69
+ default_wallet_id: 'wallet-000'
70
+
71
+ # These are passed in to the bitfinex gem:
72
+ # see https://github.com/bitfinexcom/bitfinex-api-rb for more info.
73
+ bitfinex api_key: 'your_api_key',
74
+ api_secret: 'your_api_secret'
75
+
76
+ # Settings for the ActiveRecord Database to use.
77
+ # sqlite is just fine. Check this link for more options:
78
+ # http://apidock.com/rails/ActiveRecord/Base/establish_connection/class
79
+ database adapter: :sqlite3, database: 'bitex_bot.db'
80
+
81
+ # The robot sends you emails whenever a problem occurs.
82
+ # If you do not want to receive emails just remove this 'mailer'
83
+ # key and everything under it.
84
+ # It uses https://github.com/mikel/mail under the hood, so method
85
+ # is any valid delivery_method for teh mail gem.
86
+ # Options is the options hash passed in to delivery_method.
87
+ mailer from: 'robot@example.com',
88
+ to: 'you@example.com',
89
+ delivery_method: :smtp,
90
+ options: {
91
+ address: "your_smtp_server_address.com",
92
+ port: 587,
93
+ authentication: "plain",
94
+ enable_starttls_auto: true,
95
+ user_name: 'your_user_name',
96
+ password: 'your_smtp_password'
97
+ }
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'BitexApi' do
4
+ before(:each) do
5
+ BitexBot::Robot.setup
6
+ end
7
+
8
+ it 'Sends User-Agent header' do
9
+ stub_request(:get, "https://bitex.la/api-v1/rest/private/profile?api_key=your_bitex_api_key_which_should_be_kept_safe")
10
+ .with(headers: { 'User-Agent': BitexBot.user_agent })
11
+ Bitex::Profile.get rescue nil # we don't care about the response
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe BitfinexApiWrapper do
4
+ before(:each) do
5
+ BitexBot::Robot.stub(taker: 'bitfinex')
6
+ BitexBot::Robot.stub(taker: BitfinexApiWrapper)
7
+ BitexBot::Robot.setup
8
+ end
9
+
10
+ it 'Sends User-Agent header' do
11
+ stub_request(:post, "https://api.bitfinex.com/v1/balances")
12
+ .with(headers: { 'User-Agent': BitexBot.user_agent })
13
+ stub_request(:post, "https://api.bitfinex.com/v1/account_infos")
14
+ .with(headers: { 'User-Agent': BitexBot.user_agent })
15
+ BitfinexApiWrapper.balance rescue nil # we don't care about the response
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe BitstampApiWrapper do
4
+ before(:each) do
5
+ BitexBot::Robot.stub(taker: 'bitstamp')
6
+ BitexBot::Robot.stub(taker: BitstampApiWrapper)
7
+ BitexBot::Robot.setup
8
+ end
9
+
10
+ it 'Sends User-Agent header' do
11
+ stub_request(:post, "https://www.bitstamp.net/api/balance/")
12
+ .with(headers: { 'User-Agent': BitexBot.user_agent })
13
+ BitstampApiWrapper.balance rescue nil # we don't care about the response
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe ItbitApiWrapper do
4
+ before(:each) do
5
+ BitexBot::Robot.stub(taker: 'itbit')
6
+ BitexBot::Robot.stub(taker: ItbitApiWrapper)
7
+ BitexBot::Robot.setup
8
+ end
9
+
10
+ it 'Sends User-Agent header' do
11
+ stub_request(:get, "https://api.itbit.com/v1/wallets?userId=the-user-id")
12
+ .with(headers: { 'User-Agent': BitexBot.user_agent })
13
+ ItbitApiWrapper.balance rescue nil # we don't care about the response
14
+ end
15
+ end
@@ -13,7 +13,7 @@ describe BitexBot::Robot do
13
13
  mailer: double(
14
14
  from: 'test@test.com',
15
15
  to: 'test@test.com',
16
- method: :test,
16
+ delivery_method: :test,
17
17
  options: {}
18
18
  )
19
19
  )
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,7 @@ require 'factory_girl'
8
8
  require 'database_cleaner'
9
9
  require 'shoulda/matchers'
10
10
  require 'timecop'
11
+ require 'webmock/rspec'
11
12
  FactoryGirl.find_definitions
12
13
 
13
14
  Dir[File.dirname(__FILE__) + '/support/*.rb'].each {|file| require file }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitex_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nubis
@@ -9,50 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-05-09 00:00:00.000000000 Z
12
+ date: 2017-09-21 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: settingslogic
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: activerecord
30
16
  requirement: !ruby/object:Gem::Requirement
31
17
  requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: activesupport
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
18
+ - - '='
47
19
  - !ruby/object:Gem::Version
48
- version: '0'
20
+ version: '4.2'
49
21
  type: :runtime
50
22
  prerelease: false
51
23
  version_requirements: !ruby/object:Gem::Requirement
52
24
  requirements:
53
- - - ">="
25
+ - - '='
54
26
  - !ruby/object:Gem::Version
55
- version: '0'
27
+ version: '4.2'
56
28
  - !ruby/object:Gem::Dependency
57
29
  name: sqlite3
58
30
  requirement: !ruby/object:Gem::Requirement
@@ -155,16 +127,16 @@ dependencies:
155
127
  name: bundler
156
128
  requirement: !ruby/object:Gem::Requirement
157
129
  requirements:
158
- - - "~>"
130
+ - - ">="
159
131
  - !ruby/object:Gem::Version
160
- version: '1.3'
132
+ version: '0'
161
133
  type: :development
162
134
  prerelease: false
163
135
  version_requirements: !ruby/object:Gem::Requirement
164
136
  requirements:
165
- - - "~>"
137
+ - - ">="
166
138
  - !ruby/object:Gem::Version
167
- version: '1.3'
139
+ version: '0'
168
140
  - !ruby/object:Gem::Dependency
169
141
  name: byebug
170
142
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +249,20 @@ dependencies:
277
249
  - - ">="
278
250
  - !ruby/object:Gem::Version
279
251
  version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: webmock
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
280
266
  description: |-
281
267
  Both a trading robot and a library to build trading
282
268
  robots. The bitex-bot lets you buy cheap on bitex and
@@ -317,15 +303,19 @@ files:
317
303
  - lib/bitex_bot/robot.rb
318
304
  - lib/bitex_bot/settings.rb
319
305
  - lib/bitex_bot/version.rb
320
- - settings.yml.sample
306
+ - settings.rb.sample
321
307
  - spec/factories/bitex_buy.rb
322
308
  - spec/factories/bitex_sell.rb
323
309
  - spec/factories/buy_opening_flow.rb
324
310
  - spec/factories/open_buy.rb
325
311
  - spec/factories/open_sell.rb
326
312
  - spec/factories/sell_opening_flow.rb
313
+ - spec/models/bitex_api_spec.rb
314
+ - spec/models/bitfinex_api_wrapper_spec.rb
315
+ - spec/models/bitstamp_api_wrapper_spec.rb
327
316
  - spec/models/buy_closing_flow_spec.rb
328
317
  - spec/models/buy_opening_flow_spec.rb
318
+ - spec/models/itbit_api_wrapper_spec.rb
329
319
  - spec/models/order_book_simulator_spec.rb
330
320
  - spec/models/robot_spec.rb
331
321
  - spec/models/sell_closing_flow_spec.rb
@@ -353,7 +343,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
343
  version: '0'
354
344
  requirements: []
355
345
  rubyforge_project:
356
- rubygems_version: 2.4.5
346
+ rubygems_version: 2.6.11
357
347
  signing_key:
358
348
  specification_version: 4
359
349
  summary: A trading robot to do arbitrage between bitex.la and other exchanges!
@@ -364,8 +354,12 @@ test_files:
364
354
  - spec/factories/open_buy.rb
365
355
  - spec/factories/open_sell.rb
366
356
  - spec/factories/sell_opening_flow.rb
357
+ - spec/models/bitex_api_spec.rb
358
+ - spec/models/bitfinex_api_wrapper_spec.rb
359
+ - spec/models/bitstamp_api_wrapper_spec.rb
367
360
  - spec/models/buy_closing_flow_spec.rb
368
361
  - spec/models/buy_opening_flow_spec.rb
362
+ - spec/models/itbit_api_wrapper_spec.rb
369
363
  - spec/models/order_book_simulator_spec.rb
370
364
  - spec/models/robot_spec.rb
371
365
  - spec/models/sell_closing_flow_spec.rb
data/settings.yml.sample DELETED
@@ -1,107 +0,0 @@
1
- log:
2
- # File to write log to. The log is rotated every 10240000 bytes, 10 oldest
3
- # logs are kept around.
4
- # If you want to log to stdout you can comment this line.
5
- file: bitex_bot.log
6
- # How much information to show in the log, valid values are debug, info, error
7
- level: info
8
-
9
- # Seconds to keep an order alive before recalculating the price and replacing it.
10
- # Given the way in which the robot tries to find the safest price to place an
11
- # order, if the time to live is too long the price is not going to be
12
- # competitive. About 20 seconds is a good number here.
13
- time_to_live: 20
14
-
15
- # Use sandbox environments instead of live environments
16
- # only available for bitex and itbit
17
- sandbox: false
18
-
19
- # Which market to use for taking (we're always makers on bitex)
20
- # itbit, bitstamp or bitfinex
21
- taker: bitstamp
22
-
23
- # Settings for buying on bitex and selling on bitstamp.
24
- buying:
25
- # Dollars to spend on each initial bitex bid.
26
- # Should at least be 10.0 which is the current minimum order size on Bitex.
27
- # if it's too large you're taking a higher risk if whatever happens and you
28
- # cannot re sell it afterwards. Also, higher amounts result in your bitex
29
- # bid price not being competitive.
30
- # A number between 10.0 and 1000.0 is reccommended.
31
- amount_to_spend_per_order: 10.0
32
-
33
- # Your profit when buying on bitex, 0.5 means 0.5%.
34
- # After calculating the price at which bitcoins can be sold on bitstamp, the
35
- # robot deduces your profit from that price, and places a bid on bitex paying
36
- # a lower price.
37
- profit: 0.5
38
-
39
- # Settings for selling on bitex and buying on bitstamp.
40
- selling:
41
- # Quantity to sell on each initial bitex Ask.
42
- # It should be at least 10 USD worth of BTC at current market prices, a bit
43
- # more just to be safe. Otherwise Bitex will reject your orders for being too
44
- # small.
45
- # If it's too large then you're taking a risk if whatever happens and you
46
- # If it's too small then the robot is pointless, and if it's too large you're
47
- # taking a higher risk if whatever happens ad you cannot re buy afterwards.
48
- # Also, higher amounts result in your bitex bid price not being competitive.
49
- # A number between 0.05 and 2.0 is recommended.
50
- quantity_to_sell_per_order: 0.1
51
-
52
- # Your profit when selling on bitex, 0.5 means 0.5%.
53
- # After calculating the price at which bitcoins can be bought on bitstamp,
54
- # the robot deduces your profit from that price and places an ask on bitex
55
- # charging a higher price.
56
- profit: 0.5
57
-
58
- # This is your bitex api key, it's passed in to the
59
- # bitex gem: https://github.com/bitex-la/bitex-ruby
60
- bitex: your_bitex_api_key_which_should_be_kept_safe
61
-
62
- # These are passed in to the bitstamp gem:
63
- # see https://github.com/kojnapp/bitstamp for more info.
64
- bitstamp:
65
- key: YOUR_API_KEY
66
- secret: YOUR_API_SECRET
67
- client_id: YOUR_BITSTAMP_USERNAME
68
-
69
- # These are passed in to the itbit gem:
70
- # see https://github.com/bitex-la/itbit for more info.
71
- itbit:
72
- client_key: 'the-client-key'
73
- secret: 'the-secret'
74
- user_id: 'the-user-id'
75
- default_wallet_id: 'wallet-000'
76
-
77
- # These are passed in to the bitfinex gem:
78
- # see https://github.com/bitfinexcom/bitfinex-api-rb for more info.
79
- bitfinex:
80
- api_key: 'your_api_key'
81
- api_secret: 'your_api_secret'
82
-
83
-
84
- # Settings for the ActiveRecord Database to use.
85
- # sqlite is just fine. Check this link for more options:
86
- # http://apidock.com/rails/ActiveRecord/Base/establish_connection/class
87
- database:
88
- adapter: sqlite3
89
- database: bitex_bot.db
90
-
91
- # The robot sends you emails whenever a problem occurs.
92
- # If you do not want to receive emails just remove this 'mailer'
93
- # key and everything under it.
94
- # It uses https://github.com/mikel/mail under the hood, so method
95
- # is any valid delivery_method for teh mail gem.
96
- # Options is the options hash passed in to delivery_method.
97
- mailer:
98
- from: 'robot@example.com'
99
- to: 'you@example.com'
100
- method: smtp
101
- options:
102
- address: "your_smtp_server_address.com"
103
- port: 587
104
- authentication: "plain"
105
- enable_starttls_auto: true
106
- user_name: 'your_user_name'
107
- password: 'your_smtp_password'