Skip to content

primeroz/sats-stacker

Repository files navigation

Sats Stacker

A simple tool to stack, create orders to try and buy dips, withdraw sats from exchanges. At the moment only the Kraken plugin is implemented.

sats-stacker is intented to be run through a scheduler like Systemd Timer or Crontab and is is provided as Docker Images and pre-compiled binaries.

Use this at your own risk and decide for yourself whether or not you want to run this tool - access to your exchange account , and so your funds, is required so you are expected to validate the Code before running it. This software is provided as it is.

Supported Exchanges

Kraken

You will need to get your Kraken API Key and Secret Key from the Api Settings page.

Required permissions are:

  • Query Funds
  • Modify Orders
  • Withdraw Funds ( Only if you plan to automate the withdrawal )

Note sats-stacker, on Kraken exchange, can only withdraw to a pre-configured withdrawal address referenced by name. You will need to create it using the UI before you can automate withdrawals. This is to avoid allowing this tool to create new withdrawal addresses on kraken and potentially loose you funds.

Supported Notifiers

sats-stacker support sending notifications for each stack or withdraw event so you always know how your stacking is going.

The infrastructure for notifications is pluggable but somewhat limited at the moment to STDOUT and SIMPLEPUSH.IO

STDOUT

The simplest of notifications. Just redirect stdout to whatever/wherever you like

SIMPLEPUSH

Send notification using SIMPLEPUSH.IO notification infrastructure with optional support for encrypting your message.

Help

Global Options

GLOBAL OPTIONS:
   --debug, -d            debug logging (default: false) [$STACKER_DEBUG]
   --dry-run, --validate  dry-run (default: true) [$STACKER_VALIDATE, $STACKER_DRY_RUN]
   --exchange value       Exchange ['kraken', 'binance'] (default: "kraken") [$STACKER_EXCHANGE]
   --api-key value        Exchange Api Key [$STACKER_API_KEY]
   --secret-key value     Exchange Api Secret [$STACKER_SECRET_KEY, $STACKER_API_SECRET]
   --notifier value       What notifier to use ['stdout','simplepush'] (default: "stdout") [$STACKER_NOTIFIER]
   --sp-encrypt           Simplepush: If set, the message will be sent end-to-end encrypted with the provided Password/Salt. If false, the message is sent unencrypted. (default: true) [$STACKER_SP_ENCRYPT]
   --sp-key value         Simplepush: Your simplepush.io Key [$STACKER_SP_KEY]
   --sp-event value       Simplepush: The event the message should be associated with [$STACKER_SP_EVENT]
   --sp-password value    Simplepush: Encryption Password [$STACKER_SP_PASSWORD]
   --sp-salt value        Simplepush: The salt for the encrypted message [$STACKER_SP_SALT]
   --help, -h             show help (default: false)
   --version, -v          print the version (default: false)

Stack command options

the stack command will buy the specified amount of fiat in btc using a market value order

This is the default Dollar Cost Averaging mode and will buy you some btc every time you run it.

OPTIONS:
   --amount value                    Amount of fiat to exchange (default: 0) [$STACKER_STACK_AMOUNT]
   --fiat value                      Fiat to exchange [$STACKER_STACK_FIAT]
   --order-type value, --type value  Order type (default: "limit") [$STACKER_STACK_ORDER_TYPE]
   --help, -h                        show help (default: false)

BTD command options

the btd command will place a number of orders at progressively more discounted prices and progressively higher amount of fiat, trying to catch a DIP in price.

this mode will first delete any previous btd order, will then place the new orders based on the budget it is allowed to spend.
The frequency at which you run this command will define the window of time in which you will try and catch a DIP.

The first order will be placed at a discount of dip-percentage from the current ASK price for a given amount of fiat. Every successive order will apply a bigger discount, based on dip-increments for an amount of fiat higher the previous one.

OPTIONS:
   --budget value                     Budget to allocate for the DIPs, set to 0 to allocate all of the available budget (default: 0) [$STACKER_BTD_BUDGET]
   --dip-percentage value             Initial percentage of the firt dip, the other values will be calculated (default: 10) [$STACKER_BTD_DIP_PERCENTAGE]
   --dip-increments value             Increment of dip percentage for each order (default: 5) [$STACKER_BTD_DIP_INCREMENTS_PERCENTAGE]
   --n-orders value                   Number of DIPS orders to place (default: 5) [$STACKER_BTD_DIP_N_ORDERS]
   --high-price-gap-percentage value  Gap between current price and high price to trigger modifier (default: 5) [$STACKER_BTD_HIGH_PRICE_GAP_PERCENTAGE]
   --fiat value                       Fiat to exchange [$STACKER_BTD_FIAT]
   --help, -h                         show help (default: false)
Example BTD orders