As part of the first strategy, I will be making use of the RSI. The RSI short for Relative strength index is an indicator used in technical analysis, the value of the indicator will range from 0 to 100. Values over 70 signal that the instrument is being overbought and values below 30 signal that the instrument is being oversold. So, when in an overbought situation I will look to sell and in an oversold situation I will look to buy.
To compliment as well as confirm the above I will also make use of the MACD. The MACD short for Moving average convergence divergence is another indicator used in technical analysis. Using the MACD I will be looking out for crosses occurring between the MACD and signal line to confirm my entry and exit points.
The RSI indicator looks at price changes in relation to recent highs and lows, whilst the MACD indicator looks at the relationship between two exponential moving averages. They are commonly used together by several analysts and seemed to have stood the test of time in the world of technical analysis.
To achieve the above I will be creating a script in Python that will retrieve price data via Binance, once the data has been received, I will manipulate it further to derive to the values of the indicators above using the Python BTALIB library.
Find the full source code below. If you are requiring a Binance API and secret key, click here to create an account with them.
import pandas as pd
import btalib
from datetime import datetime
from binance.client import Client
api_key = 'BINANCE API KEY'
api_secret = 'BINANCE SECRET KEY'
client = Client(api_key,api_secret)
def Main(Instrument):
#Here we define our data from date, in this case I want hourly data starting from yesterday
Data = client.get_historical_klines(Instrument, '1h', '12 November, 2021')
#Define the data for frame
bnb_df = pd.DataFrame(Data, columns=['timestamp', 'Open', 'High', 'Low', 'Close','Volume', 'Ctime', 'Quotes', 'Trades', 'Taker base','Taker quote', 'Ignore'])
#Set the index
bnb_df.set_index('timestamp', inplace=True)
#Convert the timestamp which is in MS to an appropriate timestamp
bnb_df.index = pd.to_datetime(bnb_df.index, unit='ms')
#Prepping the OHLCV data for validation
ohlcv_columns = ['Open', 'High', 'Low', 'Close','Volume']
#Validating the data types for the OHLCV data columns
bnb_df[ohlcv_columns] = bnb_df[ohlcv_columns].astype('float')
#Generating the MACD using btalib
MACD = btalib.macd(bnb_df, pfast=12, pslow=26, psignal=9)
#Generating the RSI using btalib
RSI = btalib.rsi(bnb_df, period=12)
#Merging the MACD and RSI to our data frame
bnb_df = bnb_df.join([MACD.df,RSI.df])
#Writing the data frame to a CSV file
bnb_df.to_csv(Instrument+'.csv')
Main("BNBGBP") #For this example we are using BNB TO GBP although any pair would be available to you