Я хочу рассчитать эффективную среднюю цену покупки акций, используя лист Excel. У меня есть 2 листа Excel: bids.xlsx и asks.xlsx Каждый из этих листов содержит 10 заказов, каждый с ценой и объемом, например: Изображение здесь
Я хочу написать python код, который:
- принимает данные от пользователя для действия (покупка или продажа)
- принимает информацию о количестве единиц для покупки или продажи (объем)
- Вычисляет эффективную среднюю цену покупки или продажи для этого объема
Вот мой код:
import pandas as pd # Import pandas
from openpyxl import load_workbook # Import load_workbook module from openpyxl
import os # Import 'os'
cwd = os.getcwd() # Retrieve current working directory ('cwd')
cwd
# Change Directory
os.chdir("/home/rohit/Downloads/GDTQ Task") #/path/to/your/folder
os.listdir('.') # List all files and directories in current directory
# Accessing workbooks
wb1 = load_workbook('/home/rohit/Downloads/GDTQ Task/asks.xlsx')
wb2 = load_workbook('/home/rohit/Downloads/GDTQ Task/bids.xlsx')
asks = wb1.get_sheet_by_name('asks')
bids = wb2.get_sheet_by_name('bids')
# Defining methods to get volume and price for BID and ASK
def askPrice(orderNumber):
if (asks.cell(row=orderNumber+1, column=2).value > 0):
price = asks.cell(row=orderNumber+1, column=1).value #Checking if order exists
else: price = "No orders for this order number!"
return (price)
def askVolume(orderNumber):
if (asks.cell(row=orderNumber + 1, column=2).value > 0): #Checking if order exists
volume = asks.cell(row=orderNumber+1, column=2).value
else: volume = "No orders for this order number!"
return (volume)
def bidPrice(orderNumber):
if (bids.cell(row=orderNumber+1, column=2).value > 0): #Checking if order exists
price = bids.cell(row=orderNumber+1, column=1).value
else: price = "No orders for this order number!"
return (price)
def bidVolume(orderNumber):
if(bids.cell(row=orderNumber+1, column=2).value > 0): #Checking if order exists
volume = bids.cell(row=orderNumber+1, column=2).value
else: volume = "No orders for this order number"
return (volume)
def compute_effective_price(volume, action):
if (action == "buy"):
return computeBuyPrice(volume)
if (action == "sell"):
return computeSellPrice(volume)
def computeBuyPrice(volume):
**#some code here**
def computeSellPrice(volume):
**#some code here**
action = input("Do you want to buy or sell? buy for 1 and sell for 2: ")
if(action == 1):
userVolume = input("Please enter the volume to BUY: ")
print ("Effective average buy price is: " )
print(compute_effective_price(userVolume, action))
if(action== 2):
userVolume = input("Please enter the volume to BUY: ")
print ("Effective average sell price is: ")
print(compute_effective_price(userVolume, action))
if(action!=1 & action!=2):
print ("Please enter a valid input and try again!")
Учитывая снимок книги заказов, задача состоит в том, чтобы реализовать то, что если проанализировать и рассчитать эффективную цену, которая должна быть уплачена (т. е. общая сумма уплаченной суммы / объем заказа) за безграничный заказ определенного объема. Книга заказов не должна быть изменена.