Рассчитайте 'эффективную цену покупки' для акции в Python - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу рассчитать эффективную среднюю цену покупки акций, используя лист Excel. У меня есть 2 листа Excel: bids.xlsx и asks.xlsx Каждый из этих листов содержит 10 заказов, каждый с ценой и объемом, например: Изображение здесь

Я хочу написать python код, который:

  1. принимает данные от пользователя для действия (покупка или продажа)
  2. принимает информацию о количестве единиц для покупки или продажи (объем)
  3. Вычисляет эффективную среднюю цену покупки или продажи для этого объема

Вот мой код:

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!")

Учитывая снимок книги заказов, задача состоит в том, чтобы реализовать то, что если проанализировать и рассчитать эффективную цену, которая должна быть уплачена (т. е. общая сумма уплаченной суммы / объем заказа) за безграничный заказ определенного объема. Книга заказов не должна быть изменена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...