Like this software? Tip me: 0x9456C8b7007531101e446401Df2b2D7dcdFA4aA9
. If you're stuck on setup or usage, you can ask for help at https://gitter.im/nellore/vickitrix.
vickitrix
makes crypto trades on GDAX according to rules about new tweets. Its development and name were inspired by @vickibotethusd; in fact, the default rules vickitrix/rules/vicki.py
sell ETH when @vickibotethusd goes short on ETH-USD and buy ETH when @vickibotethusd goes long on ETH-USD. However, vickitrix
can accommodate arbitrary rules about the content of status updates on Twitter. For example, the rules in vickitrix/rules/sentiment.py
buy (sell) a miniscule amount of ETH when the words "good" ("bad") and "ethereum" are found in a tweet. Now imagine the possibilities---what rules do you think would be effective? Experiment, create issues, and make pull requests!
(NOTE: vickitrix
versions < 0.1.2 didn't work with the default rules because of case sensitivity issues. If you've already followed the instructions below, you can upgrade to the latest version of vickitrix
with pip install vickitrix --upgrade
.)
Here's how to get vickitrix
to work on your machine.
Though vickitrix
should work on Python 2 or 3 in Windows/UNIX, it's been tested mostly on Python 2.7 on a Macbook from late 2016 running OS X Sierra. (Check out this issue if you run into pycrypto
compilation problems installing vickitrix
in Windows.)
You'll need some keys and secrets and passcodes from Twitter and GDAX. vickitrix
will store these in a config file (~/.vickitrix/config
) on disk, but it ensures the secrets and passcodes are AES256-encrypted so evildoers who grab your laptop while you're logged in can't easily swipe working credentials.
- Open a new browser tab, and use it to create a new Twitter app after logging into Twitter. Name and describe it however you like, and specify no callback URL, but note Twitter also requires you enter some well-formed website URL to finish the process. You're allowed to write something like
https://placeholder.com/placeholder
. The thing will complain if your description isn't long enough, too. So dumb. - Click the
Keys and Access Tokens
tab. - Click
Create my access token
. The tab should now display a consumer key, a consumer secret, an access token, and an access token secret. Leave this tab be for now. - Open a new browser tab, and use it to visit GDAX. Log in, click your avatar on the upper right, and click
API
. - Create an API key with permissions to view and trade. You should now see a key, secret, and passphrase. Don't close the tab, or you'll lose the secret forever---which isn't the end of the world; you'll just have to regenerate an API key.
-
Run
pip install vickitrix
...or clone the repo,
cd
into it,pip install
the required packagestwython
,gdax
, andpycrypto
, and precede allvickitrix
commands below withpython
. Your choice. -
Configure
vickitrix
by runningvickitrix configure
This allows you to create (or overwrite) a profile with a name of your choice. (Entering nothing makes the profile name
default
, which is nice because then you won't have to specify the profile name at the command line when youvickitrix trade
.) You'll be asked to enter credentials from the browser tabs you left open in Preliminaries. You'll also be asked to enter a password, which you'll need every time youvickitrix trade
. -
Grab and edit the rules in
vickitrix/rules/vicki.py
so they do what you want.vickitrix/rules/vicki.py
creates a Python list of dictionaries calledrules
, where each dictionary has the following keys:handles
: a list of the Twitter handles to which the rule should apply, where commas are interpreted as logical ORs. At least one ofhandles
orkeywords
must be specified in a rule. However, nothing is stopping you from passing an empty list, whichvickitrix
interprets as no filter---but do this at your own peril.keywords
: a list of keywords from tweets to which the rule should apply, where commas are interpreted as logical ORs. If bothhandles
andkeyword
are specified, there's a logical OR between the two lists as well.orders
: a list of orders. Each item is a dictionary of HTTP request parameters for an order as described in the GDAX docs.vickitrix
respects default values of parameters given there if any are left out in a given rule. Some details on particular keys from theorder
dictionary:product_id
: a valid GDAX product ID. It looks like<base currency>-<quote currency>
.funds
,size
,price
: the value may be any Python-parsable math expression involving any of the following: (1){tweet}
: the content of the current matched tweet; (2){available[<currency>]}
: here,<currency>
is one ofETH
,BTC
,LTC
, andUSD
.vickitrix
sets{available[<currency>]}
to the amount of<currency>
available for trading in your account right before making an order. You can use regular expressions with Python'sre
module; (3){inside_bid}
: the most recent inside (i.e., best) bid from the product order book for the order'sproduct_id
at the time the order is placed; (4){inside_ask}
: the most recent inside (i.e., best) ask from the product order book for the order'sproduct_id
at the time the order is placed.
condition
: any Python-parsable expression involving{tweet}
and{available[<currency>]
. Regular expressions can be used here with there
module. With the default rules, you buy all the ETH you can when @vickiethbot goes long, and you sell all the ETH you can when @vickiethbot goes short.
-
Run
vickitrix trade --profile <profile name> --rules <rules file>
, and enter the profile's password. Leave out the
--profile
to use the default profile, and leave out--rules
to use the defaultvickitrix/rules/vicki.py
.vickitrix
will listen for tweets that match the conditions from the rules invickirules.py
and perform the specified actions. If after a trade's been made, the "available to trade" line makes it look like currency vanished into thin air, don't fret; this probably means the trade hasn't completed yet. You can increase the sleep time after a trade is requested and before the "available to trade" line is displayed with--sleep
.
Pull requests are welcome! Fork freely! If you've written a substantial contribution, and you'd like to be added as a collaborator, reach out to me.
If you use this software, you're making and/or losing money because someone or something you probably don't know tweeted, which is totally crazy. Don't take risks with money you can't afford to lose.
Also note this part of the MIT license:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.