rbtc_arbitrage 2.2.0 → 2.2.1

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: 747fa6e80f20a339b06275b1f4adf22396306f50
4
- data.tar.gz: 5eed554950ef49e4b6f229340b4597f318968dae
3
+ metadata.gz: 003fb356e8d918847a8e6264c4d9b5cb92faa9bf
4
+ data.tar.gz: c71f37d6eff0c7acfc9d18b675f8a69dca12b427
5
5
  SHA512:
6
- metadata.gz: de0ee118d885e6739461eb1e20690f7f9ffdfa6b99b80cbfb6a01bd7f5bfd7ab007d28fc976f28d1a56f5f8f32831b187b813456489fc3cadef13f1c945b42e5
7
- data.tar.gz: 95f55e95253d09da3c552a7c81eb2bbd5184f2344b5497fbb0f9a1bbf49c6dc3adfe5aaaf4b188559adf8d6d1f56d11b036cbe578fd290bdf36e9a2694d47cb5
6
+ metadata.gz: 7384118643af66aff89842e6d40c633450146821b189ea3a88098813e0d5250c10366d9477e9a72bd19fdc9df98f9c48f31a9e38127850126b1a8c928f5731ef
7
+ data.tar.gz: 61064f0b85a60aebbc20a9af7aaa13966b20907b9bb6e2379ff431c8ec488808dc9160d53c2f6b547ee5f4522e71b544385261c769948d4a1b09765845d41fad
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,59 @@
1
+ ## Contributing
2
+
3
+ Pull Requests are welcome!
4
+
5
+ ### Setup
6
+
7
+ ~~~bash
8
+ git clone git@github.com:hstove/rbtc_arbitrage.git
9
+ cd rbtc_arbitrage
10
+ bundle install
11
+ ~~~
12
+
13
+ To automatically run tests as you code, run `guard`.
14
+
15
+ ### Adding an exchange
16
+
17
+ Create a new file called `lib/rbtc_arbitrage/clients/[exchange]_client.rb`. If the exchange is Bitstamp, the file will be `bitstamp_client.rb`.
18
+
19
+ Copy and paste this [template client](https://github.com/hstove/rbtc_arbitrage/blob/master/lib/rbtc_arbitrage/clients/client.rb.example) into your new file and replace class ExchangeClient with your exchange name. For Bitstamp, this would be **BitstampClient**.
20
+
21
+ Go through each method and implement it. You should use an already built and tested Ruby library for calling API methods. This part requires some programming and Ruby knowledge, so I won't go too into details about how to implement these methods. Feel free to look at the [other clients](https://github.com/hstove/rbtc_arbitrage/tree/master/lib/rbtc_arbitrage/clients) to see how they're done.
22
+
23
+ **Testing**
24
+
25
+ Once you've done that, create a new spec file in [spec/clients/](https://github.com/hstove/rbtc_arbitrage/tree/master/spec/clients) for your new trader. If you're a 'test first' type of developer like me, you might want to finish this step first.
26
+
27
+ While you're writing code, run guard in your terminal. This will run tests automatically as you edit code.
28
+
29
+ To test out your client, you'll first need to run `git add .`. You only need to do this one time after creating new files.
30
+
31
+ Then to test the new exchange in the command line, run rake install and then whatever command you'd like, such as:
32
+
33
+ ~~~
34
+ rbtc --buyer mynewexchange
35
+ ~~~
36
+
37
+ You'll need to re-run `rake install` anytime you make changes to your code and want to test the command line again.
38
+
39
+ ### Submitting
40
+
41
+ When you're confident that your new exchange is fully functional, you just need to [submit a pull request](https://help.github.com/articles/using-pull-requests).
42
+
43
+ First, visit [rbtc_arbtirage](https://github.com/hstove/rbtc_arbitrage) and click the 'fork' button in the top-right. This will clone the repository in a new one under your account.
44
+
45
+ Then locate the ssh clone url on the right-hand side of your new repository. Copy that url, and in your terminal, run:
46
+
47
+ `git remote add github [url-you-just-copied]`
48
+
49
+ Then, push to that repository.
50
+
51
+ ~~~
52
+ git add .
53
+ git commit -m 'added mynewexchange'
54
+ git push github master
55
+ ~~~
56
+
57
+ Then go back to your repository on github. You should see a button that says 'Compare and pull request'. Click that button and enter a few details about your new code, then submit the pull request.
58
+
59
+ Your contributions are extremely thanked.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbtc_arbitrage (2.2.0)
4
+ rbtc_arbitrage (2.2.1)
5
5
  activemodel (>= 3.1)
6
6
  activesupport (>= 3.1)
7
7
  btce (= 0.2.4)
data/README.md CHANGED
@@ -1,15 +1,29 @@
1
1
  # RbtcArbitrage
2
2
 
3
- A Ruby gem for executing arbitrage between the MtGox and Bitstamp bitcoin exchanges.
3
+ A Ruby gem for executing arbitrage between different Bitcoin exchanges. Supports:
4
+
5
+ - Bitstamp
6
+ - CampBX
7
+ - BTC-E
8
+ - Coinbase
9
+ - ~~MtGox~~ (deprecated)
4
10
 
5
11
  ## Meta
6
12
 
13
+ Please contribute! There are always new exchanges that could be easily supported.
14
+ Check out the [contribution guidelines](https://github.com/hstove/rbtc_arbitrage/blob/master/CONTRIBUTING.md)
15
+ for instructions. Earn Bitcoin for every commit:
16
+
17
+ [![tip for next commit](http://tip4commit.com/projects/698.svg)](http://tip4commit.com/projects/698)
18
+
7
19
  [Explanation of bitcoin arbitrage](http://hankstoever.com/posts/13-Everything-you-need-to-know-about-Bitcoin-arbitrage)
8
20
 
9
21
  [Why I open sourced a bitcoin arbitrate bot](http://hankstoever.com/posts/2-Why-I-open-sourced-a-bitcoin-arbitrage-bot)
10
22
 
11
23
  I'm also creating a course on [creating your own bitcoin arbitrage bot](https://www.uludum.org/funds/2)
12
24
 
25
+ [CHANGELOG](https://github.com/hstove/rbtc_arbitrage/releases).
26
+
13
27
  Donations accepted: **16BMcqf93eEpb2aWgMkJCSQQH85WzrpbdZ**
14
28
 
15
29
  [![Build Status](https://travis-ci.org/hstove/rbtc_arbitrage.png?branch=master)](https://travis-ci.org/hstove/rbtc_arbitrage)
@@ -28,61 +42,60 @@ After installing the gem, simply run `rbtc` in the command line.
28
42
 
29
43
  #### Options
30
44
 
31
- - **Live**: whether you want to actually execute trades. You must have configured your API keys and bitcoin addresses through the following environment variables:
32
- 1. MTGOX_KEY
33
- 2. MTGOX_SECRET
34
- 2. MTGOX_ADDRESS
35
- 2. BITSTAMP_KEY
36
- 2. BITSTAMP_SECRET
37
- 3. BITSTAMP_ADDRESS
38
- 4. BITSTAMP_CLIENT_ID
39
-
45
+ - **Live**: whether you want to actually execute trades. See the 'Environment
46
+ Variable' section for the required keys.
40
47
  - **Cutoff**: the minimum profit percentage required to execute a trade. Defaults to **%2.00**.
41
48
  - **Volume**: The amount of bitcoins to trade per transaction. Defaults to **0.01** (the minimum transaction size).
42
- - **Buyer**: The exchange you'd like to buy bitcoins from during arbitrage. `"mtgox"` or `"bitstamp"`. Default is `bitstamp`
43
- - **Seller**: The exchange you'd like to sell bitcoins from during arbitrage. `"mtgox"` or `"bitstamp"`. Default is `mtgox`
49
+ - **Buyer**: The exchange you'd like to buy bitcoins from during arbitrage. Default is `bitstamp`
50
+ - **Seller**: The exchange you'd like to sell bitcoins from during arbitrage. Default is `campbx`
51
+
52
+ Valid exchanges for the `--buyer` and `--seller` option are `bitstamp`, `campbx`,
53
+ `btce`,and `coinbase`.
44
54
 
45
55
  #### Examples
46
56
 
57
+ ~~~
47
58
  $ rbtc --live --cutoff 4
48
59
  $ rbtc --cutoff 0.5
49
60
  $ rbtc --cutoff 3 --volume 0.05
50
- $ rbtc --seller bitstamp --buyer mtgox
61
+ $ rbtc --seller bitstamp --buyer campbx
51
62
  $ rbtc
63
+ ~~~
52
64
 
53
65
  The output will look like this:
54
66
 
55
- 07/08/2013 at 10:41AM
56
- Retrieving market information and balances
57
- Bitstamp: $74.0
58
- MtGox: $76.89
59
- buying 0.01 btc from Bitstamp for $0.74
60
- selling 0.01 btc on MtGox for $0.76
61
- profit: $0.02 (2.77%)
67
+ ~~~
68
+ I, [APR 6 2014 7:14:33 AM -0700#52261] INFO -- : Fetching exchange rates
69
+ I, [APR 6 2014 7:14:37 AM -0700#52261] INFO -- : Bitstamp (Ask): $455.0
70
+ I, [APR 6 2014 7:14:37 AM -0700#52261] INFO -- : Campbx (Bid): $455.05
71
+ I, [APR 6 2014 7:14:37 AM -0700#52261] INFO -- : buying 0.01 btc at Bitstamp for $4.58
72
+ I, [APR 6 2014 7:14:37 AM -0700#52261] INFO -- : selling 0.01 btc at Campbx for $4.52
73
+ I, [APR 6 2014 7:14:37 AM -0700#52261] INFO -- : profit: $-0.05 (-1.18%) is below cutoff of 2%.
74
+ ~~~
75
+
76
+ ### Environment Variables
62
77
 
63
- ## Changelog
78
+ You will need to configure the following environment variables
79
+ to trade with real accounts.
64
80
 
65
- See [releases](https://github.com/hstove/rbtc_arbitrage/releases).
81
+ ##### Bitstamp
66
82
 
67
- ## Contributing
83
+ * BITSTAMP_KEY
84
+ * BITSTAMP_SECRET
85
+ * BITSTAMP_ADDRESS
86
+ * BITSTAMP_CLIENT_ID
68
87
 
69
- ### Pull Requests are welcome!
88
+ ##### CampBX
70
89
 
71
- 1. Fork it
72
- 2. Create your feature branch (`git checkout -b my-new-feature`)
73
- 3. Commit your changes (`git commit -am 'Add some feature'`)
74
- 4. Push to the branch (`git push origin my-new-feature`)
75
- 5. Create new Pull Request
90
+ - CAMPBX_KEY
91
+ - CAMPBX_SECRET
76
92
 
77
- ## Adding an exchange
93
+ ##### BTC-E
78
94
 
79
- Right now there is support for only MtGox and Bitstamp, but adding support for other exchanges is dead simple. First, you'll need to create a new `client` in `lib/rbtc_arbitrage/clients`. Follow the example from the [mtgox client](https://github.com/hstove/rbtc_arbitrage/blob/master/lib/rbtc_arbitrage/clients/mtgox_client.rb). You'll need to provide custom implementations of the following methods:
95
+ * BTCE_KEY
96
+ * BTCE_SECRET
97
+ * BTCE_ADDRESS
80
98
 
81
- - `validate_env`
82
- - `balance`
83
- - `price`
84
- - `trade`
85
- - `exchange`
86
- - `transfer`
99
+ ##### Coinbase
87
100
 
88
- Make sure that the methods accept the same arguments and return similar objects. At the same time, make sure you copy the [mtgox_cient_spec](https://github.com/hstove/rbtc_arbitrage/blob/master/spec/clients/mtgox_client_spec.rb) and change it to test your client.
101
+ * COINBASE_KEY
@@ -8,8 +8,8 @@ module RbtcArbitrage
8
8
  def log_info
9
9
  lower_ex = @buy_client.exchange.to_s.capitalize
10
10
  higher_ex = @sell_client.exchange.to_s.capitalize
11
- logger.info "#{lower_ex}: $#{color(buyer[:price].round(2))}"
12
- logger.info "#{higher_ex}: $#{color(seller[:price].round(2))}"
11
+ logger.info "#{lower_ex} (Ask): $#{color(buyer[:price].round(2))}"
12
+ logger.info "#{higher_ex} (Bid): $#{color(seller[:price].round(2))}"
13
13
  logger.info log_string("buying", lower_ex, @paid)
14
14
  logger.info log_string("selling", higher_ex, @received)
15
15
 
@@ -1,3 +1,3 @@
1
1
  module RbtcArbitrage
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbtc_arbitrage
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hank Stoever
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-05 00:00:00.000000000 Z
11
+ date: 2014-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -162,6 +162,7 @@ files:
162
162
  - .gitmodules
163
163
  - .rspec
164
164
  - .travis.yml
165
+ - CONTRIBUTING.md
165
166
  - Gemfile
166
167
  - Gemfile.lock
167
168
  - Guardfile