Skip to main content

Create automated bots that trade for you while you sleep

Project description

Logo

GitHub Workflow Status PyPI - Python Version PyPI PyPI - Downloads CodeFactor Grade GitHub

Installation

$ pip install futon

Usage

Step 1: Initialize a data provider

A data provider refers to a source from where an instruments historical data can be fetched. Currently, Binance is the only supported provider (more are being added actively)

from futon.data.providers import Binance

# Add your developer API keys here
api_key = '<API KEY>'
secret_key = '<API SECRET>'

binance = Binance(api_key, secret_key)

Step 2: Choose an instrument

coin = futon.instruments.Crypto(base_asset = 'DOGE',
                                quote_asset = 'USDT',
                                provider = binance,
                                interval = '30-min',
                                start_date = '2021-05-01 00:00:00')

When you initialize an instrument, historical data for the instrument is downloaded by default

If you're a chart guy, then you can create an interactive OHLCV chart right in your jupyter notebook:

from bokeh.io import output_notebook, show, push_notebook
output_notebook()

coin.plot_candles()

Candlestick Plot

Step 3: Create a trading strategy

from futon.strategy import TradingStrategy

class MACDCrossover(TradingStrategy):
    def setup(self):
        self.macd = futon.indicators.MACD(fastperiod = 6,
                                            slowperiod = 18,
                                            signalperiod = 5,
                                            plot_separately = True)

        self.indicators = [self.macd]

    def logic(self, account, lookback):
        try:
            today = lookback.iloc[-1]

            macd_today, signal_today, _ = self.macd.lookback[-1]
            macd_yest, signal_yest, _ = self.macd.lookback[-2]

            # Buying
            buy_signal = (macd_today > signal_today) and (macd_yest < signal_yest)
            if buy_signal:
                entry_price   = today.close
                entry_capital = account.buying_power
                account.buy(entry_capital=entry_capital, entry_price=entry_price)

            # Selling
            sell_signal = (macd_today < signal_today) and (macd_yest > signal_yest)

            if sell_signal:
                percent = 1
                exit_price = today.close
                account.sell(percent=percent, current_price=exit_price)

        except Exception as e:
            print('ERROR:', e)

strat = MACDCrossover(coin)

Step 4: Run a backtest on historical data

strat.backtest(start_date = '2021-06-1 00:00:00', commision = 0.001, show_trades = True)

Output

Performing backtest from: 01 June, 2021 (00:00:00) to 21 June, 2021 (16:00:00)

-------------- Results ----------------

Relative Returns: -2.55%
Relative Profit: -25.49

Strategy     : -36.4%
Net Profit   : -363.96

Buy and Hold : -33.85%
Net Profit   : -338.47

Buys        : 75
Sells        : 75
--------------------
Total Trades : 150

---------------------------------------

Backtest Plot

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

futon-1.0.0.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

futon-1.0.0-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file futon-1.0.0.tar.gz.

File metadata

  • Download URL: futon-1.0.0.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for futon-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c8cf9e2782709b66dd367dd96fc30930a205715e07d5a0a7228dc3a16a640755
MD5 88a1fa6856351e76acf768c22c875ade
BLAKE2b-256 4b65fe8b1eeaba6b8dda34f51cb2098d0f4ed482fdc6d2ec5767a978f3de5599

See more details on using hashes here.

File details

Details for the file futon-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: futon-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for futon-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3db290e361c6dfd34204dae8b6f5a325c6427a663a0c154c758a87bfacf40127
MD5 c0ad0eb079d61b166c1b0a1fe1929398
BLAKE2b-256 9608f8144812ad8b1950cb8d2e9a8fc7126ee0797e6da75a34077b0627c70083

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page