Как сохранить данные из биржевых данных за определенный период - PullRequest
1 голос
/ 02 ноября 2019

Я получаю данные о запасах каждую секунду в следующем формате

'ohlc': {'close': 75.95, 'high': 83.5, 'low': 64.6, 'open':75.95}, last_price ': 75.0, timestamp': datetime.datetime (2019, 11, 2, 11, 20, 15)

Поскольку мое торговое время начинается в 9:30, мне нравитсясохраняйте максимум и минимум акции только в первые пять минут, поэтому максимум и минимум акции должны быть между 9:30 и 9:35. Ниже приведен код, который я использую, но я не могу получить результат. Пожалуйста, помогите мне в этом вопросе. в основном мне нужно сохранить данные за 5 минут, но я не могу понять, как это сделать.

start_time = datetime.time(9, 30)
end_time = datetime.time(9, 35)
current_time = datetime.datetime.now().time()
candle_start_time = current_time >= start_time and current_time <= end_time

breakout_time_start = current_time >= start_time

while candle_start_time is True:
    print('time started')
while current_time > end_time:
    print('time extended')
while current_time < end_time:
    print('time extended 1')

1 Ответ

0 голосов
/ 04 ноября 2019

В примере я использую бесконечный цикл - while True - чтобы работать все время (24 часа в сутки). Он должен получить дату со склада, проверить время в данных и сохранить его где-нибудь (файл или база данных).

В конце концов он может запустить закомментированную часть кода, чтобы остановить его после 9:35, а затем вы должны запустить его следующимдень до 9:30. Вы можете запустить его вручную или использовать какой-нибудь планировщик для запуска, т.е. cronjob в Linux.

import datetime

# --- functions ---

def get_from_stock():
    # TODO: get current data from stock
    return {
        'ohlc': {'close': 75.95, 'high': 83.5, 'low': 64.6, 'open':75.95},
        'last_price': 75.0,
        'timestamp': datetime.datetime(2019, 11, 2, 11, 20, 15),
    }

# --- main ---

start_time = datetime.time(9, 30)
end_time   = datetime.time(9, 35)

while True:

    data = get_from_stock()

    data_time = data['timestamp'].time()

    if start_time <= data_time <= end_time:
        print('Time:', data_time)
        print('High:', data['ohlc']['high'])
        print('Low:', data['ohlc']['low'])
        print('TODO: save it')

    #if data_time > end_time:
    #    print('Time:', data_time)
    #    print('It is end for today. Run again tomorrow before 9:00 AM.')
    #    break
...