We have decided to give EVERYTHING for free! What are you waiting for?

trading strategy for the busy person

Let’s assume you like trading or that you trade once a month, then why not try to automate it? People like that normally want to know what is the best trading strategy for the busy person.

Using freqtrade you can use strategies that work on the daily, weekly, 3 days and even monthly time frames.

You can use the time frames given by the exchange, if a time frame is not available then you’ll need to use re sampling of lower time frames to higher time frames.

Binance provides 1d, 3d, 1w and 1M (not to be confused with 1m which corresponds to 1 minute). We shared this strategy in our private freqtrade community, inspired on the following youtube video.

Resources for traders by Fallible

The question is would this strategy that trades once a month work for bitcoin? Let’s find out

Logic of the strategy

A trading strategy for the busy person will have a logic like this:

To buy:

If the price of the asset AT the end of the month closes above 200 simple moving average then BUY

To sell: 

If the price of the asset AT the end of the month closes below 200 simple moving average then SELL

Implementing it with freqtrade

Let’s start by copying the sample_strategy.py into another file. Change directories into your freqtrade user_data/strategy/ folder.

$ cp sample_strategy.py sma.py

Open the file and let’s modify it

  1. Import libraries that will be required to get the date and put it into a dataframe:
    from datetime import datetime
    from calendar import monthrange
  2. Change the strategy class name:
    class SampleStrategy(IStrategy) to class sma1d(IStrategy)
  3. Set unrealistic profits in the minimal ROI section so it wont interfere with the strategy:
    minimal_roi = {
  4. Change the stoploss to something that will never trigger:
    stoploss = -10
  5. Move time frame to 1 day:
    ticker_interval = '1d'
  6. Change use_sell_signal to True:
    use_sell_signal = True
  7. Create the 200 sma indicator using Talib inside the def populate_indicators function:
    dataframe['sma200']=ta.SMA(dataframe, timeperiod=200)

We’re still missing a few steps but we’ll need a specific function inside the def populate_indicators, this function will determine if its the last day of the month in order to verify the buy and sell condition

        def convert(date):
            if dt.day == monthrange(dt.year, dt.month)[1]:
                dt = 1 
                dt = 0 
            return dt


Just to make sure you did not make a mistake, here’s how def populate_indicators should look like:

def populate_indicator for 200 sma strategy

This will give us a dataframe called date2 that we’ll use to verify if the candle that we’re currently at is the last candle of the month.

Now we need to modify def populate_buy_trend and def populate_sell_trend:

    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

            (dataframe['close'] >= dataframe['sma200']) &
            (dataframe['date2'] == 1)
            'buy'] = 1 

        return dataframe

Now our def populate_sell_trend:

    def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

            (dataframe['date2'] == 1) &
            (dataframe['close'] < dataframe['sma200'])
            'sell'] = 1

Backtesting on Binance

Binance has only been around since 2017, if we test this strategy from 2017-11-03 then we’ll get roughly 53.35%, which is not bad. Do know that freqtrade can’t calculate 200 SMA if its missing 200 candles to calculate it, meaning that it would’ve only performed 1 trade.

backtesting sma 200 1d until September 29

Looking to automate your trading process!?

Get Gunthy Bot!

The trade would still be open and would look like this on tradingview:

[tv-ideaview idea=”NEJ3T4x0″ width=”980″ height=”610″ language=”en”]

It’s very likely that this strategy would sell BTC at the end of September 2019 as the price is below the 200 SMA on the daily time frame.

Backtesting on Coinbase

Even though we do not run coinbase, it’s possible to take advantage of the fact that coinbase has been around since 2015.

backtesting sma 200 1d from 2015-08-22 to 2019-09-29

The results would’ve been 1482%, which compared to buy and hold from 2015, you would’ve missed roughly ~1000% in profits.


Taking in consideration that this is something that would’ve required from you barely any intervention and that holding BTC strategy suffers from survivorship bias, we consider this strategy as viable in the long run with an average return of 370% yearly.

Past Performance is Not Indicative of Future Results.
Survivorship bias is the tendency to view the performance of existing stocks, funds or cryptocurrencies in the market as a representative comprehensive sample without regarding those that have gone bust. 

This trading strategy for the busy person icould be adjusted to multiple situations and markets.

We encourage the reader to try backtest this strategy on other crypto assets like Litecoin, Monero and Ethereum. We believe it would greatly help you sleep safe and sound while holding cryptocurrencies.

Leave a Reply

Your email address will not be published. Required fields are marked *