Доступ к данным с помощью ilo c или другого метода для более чем одного элемента с использованием l oop в нем - PullRequest
0 голосов
/ 12 марта 2020

Привет всем коллегам,

, так что я делаю в своем проекте через API. Я обращаюсь к цене 10 скриптов и отправляю эти тиковые данные на mysql. Начиная с mysql я получаю данные обратно для расчета или использования повторной выборки цены акций в формате OHL C, далее следует код для использования функции повторной выборки:

def data_from_sql(): # fetch all query
try:
    db = pymysql.connect(host, user, password, database)
    cursor = db.cursor()

    sql_query_2 = "SELECT * FROM tick_data.ticks WHERE date >= NOW() - INTERVAL 5 MINUTE"

    cursor.execute(sql_query_2)

    records = cursor.fetchall()
    cursor.close()
    print("Total rows are: ", len(records))
    df = pd.DataFrame(records, columns=['token', 'last_price', 'time']).set_index('time')
    ohlc = df.groupby('token').resample('5min')['last_price'].ohlc()

    excel_details(ohlc) # send the data to other function for updating my excel sheet.

except pymysql.Error as error:
    print("Failed to read data from table", error)

data_from_sql()

while True:
data_from_sql()  # for infinite loop

Хорошо, теперь Вывод приведенного выше кода:

enter image description here

Теперь мне нужно: для каждого номера токена мне нужна цена «закрытия» предыдущего таймфрейма, т.е. за 5 минут до текущего таймфрейма, например, для токена с номером «5633» мне нужна цена «закрытия» в 2020-03-12 14:15:00, а не 2020-03-12 14:20:00, начиная с «2020- 03-12 14:20:00 "Свеча или время не закрыты, и я хотел бы обновить свой лист Excel для того же.

Так что для приведенного выше результата я кодирую как:

new_close = ohlc.iloc[-2]['close']
    print(new_close)

И для этого я получаю close_price только моего последнего токена нет "3861249":

# вывод:

292.05

Но мне нужна close_price всего числа токенов, поэтому, пожалуйста, помогите мне узнать, как получить желаемый результат.

А также, если возможно, кто-нибудь может сказать мне, как улучшить перфорацию Что из моего кода? :)

1 Ответ

0 голосов
/ 12 марта 2020

Ciao tanjiro,

, я бы сделал следующее. Если вам удастся адаптировать к вашему случаю первую часть (извлечение даты), вы можете сделать:

from datetime import datetime, timedelta

dateformat = '%Y-%m-%d %H:%M:%S'
#the following isolate the date 
#now_date = datetime.now() (or something like this)
now_date = datetime.strptime("2020-03-12 14:20:00",dateformat)
dt = timedelta(minutes=5)
prev_date = now-dt
prev = prev_date.strftime(dateformat)

#the following gets the wanted values
#1. select the subdatabase
prev_ohlc = ohlc[ohlc['time']==prev]
#2. get the values
new_close = prev_ohlc['close'].values
...