A Ruby gem for executing arbitrage between different Bitcoin exchanges. Supports:
- Bitstamp
- CampBX
- BTC-E
- Coinbase
MtGox(deprecated)
Please contribute with code! There are always new exchanges that could be easily supported. Check out thecontribution guidelines for instructions. Earn Bitcoin for every commit:
- Explanation of bitcoin arbitrage
- Why I open sourced a bitcoin arbitrate bot
- I made a course aboutusing this to run your own arbitrage bot.
- CHANGELOG.
Donations accepted:16BMcqf93eEpb2aWgMkJCSQQH85WzrpbdZ
Install it yourself as:
$ gem install rbtc_arbitrage
After installing the gem, simply runrbtc
in the command line.
- Live:whether you want to actually execute trades. See the 'Environment Variable' section for the required keys.
- Cutoff:the minimum profit percentage required to execute a trade. Defaults to%2.00.
- Volume:The amount of bitcoins to trade per transaction. Defaults to0.01(the minimum transaction size).
- Buyer:The exchange you'd like to buy bitcoins from during arbitrage. Default is
bitstamp
- Seller:The exchange you'd like to sell bitcoins from during arbitrage. Default is
campbx
Valid exchanges for the--buyer
and--seller
option arebitstamp
,campbx
,
btce
,andcoinbase
.
$ rbtc --live --cutoff 4
$ rbtc --cutoff 0.5
$ rbtc --cutoff 3 --volume 0.05
$ rbtc --seller bitstamp --buyer campbx
$ rbtc
The output will look like this:
I, [APR 6 2014 7:14:33 AM -0700#52261] INFO --: Fetching exchange rates
I, [APR 6 2014 7:14:37 AM -0700#52261] INFO --: Bitstamp (Ask): $455.0
I, [APR 6 2014 7:14:37 AM -0700#52261] INFO --: Campbx (Bid): $455.05
I, [APR 6 2014 7:14:37 AM -0700#52261] INFO --: buying 0.01 btc at Bitstamp for $4.58
I, [APR 6 2014 7:14:37 AM -0700#52261] INFO --: selling 0.01 btc at Campbx for $4.52
I, [APR 6 2014 7:14:37 AM -0700#52261] INFO --: profit: $-0.05 (-1.18%) is below cutoff of 2%.
You will need to configure the following environment variables to trade with real accounts.
- BITSTAMP_KEY
- BITSTAMP_SECRET
- BITSTAMP_ADDRESS
- BITSTAMP_CLIENT_ID
- CAMPBX_KEY
- CAMPBX_SECRET
- BTCE_KEY
- BTCE_SECRET
- BTCE_ADDRESS
- COI NBA SE_KEY
- COI NBA SE_SECRET
rbtc_arbtitrage
also exposes a handy interface for interacting with different
bitcoin clients. For example:
client=RbtcArbitrage::Clients::BitstampClient.new
client.price:buy
=>462.88
client.price:sell
=>462.88
client.balance
=>[0.0079,1.41]# [btc, usd]
client.options[:volume]=0.5# default is 0.01
# client.trade uses market price
client.trade:buy
client.trade:sell
client.address# for deposits
=>"16rQQYMTTKb9cnnSX3xYkN4hcKXoYcXXXX"
# send btc to an address
coinbase=RbtcArbitrage::Clients::CoinbaseClient.new
client.transfercoinbase.address