Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

import requests

import pandas as pd

# set up API key and base URL

api_key = 'OQ9JRGVKDLDSH096'

base_url = 'https://www.alphavantage.co/query'

# define function to get data from Alpha Vantage

def get_data_from_alpha_vantage(symbol, interval):

# set parameters for API request

params = {

'function': 'TIME_SERIES_INTRADAY',

'symbol': symbol,

'interval': interval,

'apikey': api_key

# send API request and get response

response = requests.get(base_url, params=params)

# parse response data and convert to pandas dataframe

data = pd.DataFrame(response.json()['Time Series (' + interval + ')']).transpose()

# rename columns to more meaningful names

data.columns = ['open', 'high', 'low', 'close', 'volume']

# convert column data types to float

data = data.astype(float)

# sort dataframe by date

data = data.sort_index()

return data

# define strategy function

def strategy(symbol, interval):

# get data from Alpha Vantage


data = get_data_from_alpha_vantage(symbol, interval)

# calculate moving averages

data['sma20'] = data['close'].rolling(window=20).mean()

data['sma50'] = data['close'].rolling(window=50).mean()

data['sma200'] = data['close'].rolling(window=200).mean()

# define buy and sell signals

data['buy_signal'] = (data['sma20'] > data['sma50']) & (data['sma50'] > data['sma200'])

data['sell_signal'] = (data['sma20'] < data['sma50']) & (data['sma50'] < data['sma200'])

# create empty positions column

data['position'] = 0

# loop through dataframe and set positions based on signals

for i in range(len(data)):

if data['buy_signal'][i]:

data['position'][i] = 1

elif data['sell_signal'][i]:

data['position'][i] = -1

# calculate daily returns

data['daily_return'] = data['close'].pct_change() * data['position'].shift()

# calculate cumulative returns

data['cumulative_return'] = (1 + data['daily_return']).cumprod()

# return final dataframe

return data

# run strategy function with desired symbol and interval

result = strategy('AAPL', '15min')

# print result

print(result)

You might also like