История котировок в excel

Функция ИСТОРИЯАКЦИЙ восстанавливает исторические данные о финансовом инструменте и загружает их в виде массива, который перенесется, если будет получен конечный результат формулы. Это означает, что Excel будет динамически создавать соответствующий по размеру диапазон массива при нажатии клавиши ВВОД.

Важно: Для функции STOCKHISTORY требуется подписка Microsoft 365 персональный, Microsoft 365 для семьи, Microsoft 365 бизнес стандартный или Microsoft 365 бизнес премиум.

Технические подробности

Синтаксис

= ИСТОРИЯАКЦИЙ(stock, start_date, [end_date], [interval], [headers], [property0], [property1], [property2], [property3], [property4], [property5])

Аргументы функции ИСТОРИЯАКЦИЙ описаны ниже.

Аргумент

Описание

акция

Функция восстанавливает данные из исторических цен о финансовом инструменте, соответствующему данному значению. Введите символ деления в двойных кавычках (например, «MSFT») или ссылку на ячейку, содержащую тип данных Акции. При этом будут извлечены данные курса валют по умолчанию для инструмента. Вы также можете обратиться к определенному курсу, введя 4-значный код идентификатора (MIC) ISO, затем двоеточие, после которого следует символ деления (например, «XNAS:MSFT»). Подробнее об источниках данных.

start_date

Самая ранняя дата извлечения данных. Обратите внимание, что если интервал не равен 0 (ежедневно), первая точка данных может предшествовать start_date; она будет первой датой запрошенного периода.

end_date

Необязательный. Самая поздняя дата извлечения данных. По умолчанию используется значение start_date.

интервал

Необязательный. Указывает интервал, который представляет каждое значение данных следующим образом:

0 = ежедневно,
1 = еженедельно,
2 = ежемесячно.

Значение по умолчанию — 0.

headers

Необязательный. Указывает, должны ли отображаться заголовки следующим образом: 

0 = нет заголовков,
1 = показать заголовки,
2 = показать идентификатор и заголовки инструмента.

По умолчанию используется значение 1 (т. е. показывать заголовки). При включении заголовки представляют собой текстовые строки, являющиеся частью массива, возвращаемого функцией.

property0 — property5

Необязательный. Столбцы, извлекаемые для каждой акции следующим образом:

0 = дата,
1 = закрыть,
2 = открыть,
3 = высокий,
4 = низкий,
5 = том.

Если хотя бы один из них присутствует, в указанном порядке возвращаются только указанные столбцы. По умолчанию используется значение 0,1 (, т. е., Дата и Закрыть).

Примечания

  • Функция ИСТОРИЯАКЦИЙ не отмечает формат ячеек, в которые она переводится. При удалении формулы, ячейки, которые были заполнены, будет иметь общий формат.

  • При вводе аргументов свойства введите число для каждого свойства от 0 до 5 в том порядке, в котором они должны отображаться. Значение, введенное для каждого свойства, соответствует номеру свойства. Например, чтобы добавить дату, открыть и закрыть, введите 0,2,1. Эти свойства определены следующим образом:

    Value (Значение)

    Свойство

    Определение

    0

    Дата

    Если интервал — ежедневно или еженедельно, то первый допустимый торговый день в периоде.
    Если интервал равен месяцу, то первый день месяца, независимо от того, был ли он торговым днем.

    1

    Закрыть

    Цена закрытия за последний торговый день в периоде 

    2

    Открыт

    Цена открытия в первый торговый день периода 

    3

    Высокий

    Самый высокий день в периоде 

    4

    Низкий

    Самый низкий день в периоде 

    5

    Объем

    Количество акций, торгуемых в течение периода

  • Функция ИСТОРИЯАКЦИЙ относится к семейству Ссылки и массивы.

  • Аргументы даты могут быть датами, заключенными в двойные кавычки (например, «01-01-2020») или формула (например, TODAY()) или ссылка на ячейку с датой.

  • Возвращаемая дата может предшествовать указанной дате. Например, если в качестве даты начала и интервала задано значение 31 декабря 2019, то будет возвращен 1 декабря 2019, так как это дата начала для запрошенного периода.

  • Обратите внимание, что некоторые финансовые инструменты могут быть доступны как типы данных Акций, но исторические сведения будут недоступны. Например, это относится к наиболее популярным индексным фондам, включая S&P 500.

Советы

  • Если вы хотите получить самый высокий уровень в течение 3-месячного периода, это быстрее использовать ежемесячный интервал, чем ежедневный или еженедельный интервал. Например, =MAX(STOCKHISTORY(«XNAS:MSFT», «1/1/2022», «3/1/2022», 2, 0, 3)) вычислит максимальное значение в 3 точки данных (по одной за каждый месяц), данные только без заголовков для наибольшего торгового значения за каждый месяц. Если вместо этого в формуле используется еженедельный или ежедневный интервал, вы получите тот же результат, но в вычислении будет использоваться гораздо больше точек данных, что может привести к снижению производительности.

  • Если вы хотите увидеть 52-недельный максимум или минимум, часто быстрее использовать тип данных Stocks , у которого эти свойства доступны. Например, преобразуйте «xnas:msft» в тип данных stock в ячейке A1, а в ячейке B1 можно написать формулу =A1.[52 week high] , чтобы получить значение. Вы также можете настроить книгу для автоматического обновления этого значения, как описано здесь.

  • STOCKHISTORY, показывая исторические данные, обычно обновляется только после завершения торгового дня. Это означает, что вы не можете использовать STOCKHISTORY для получения данных о текущей торговой информации до закрытия рынка или после завершения дня в зависимости от рынка.

  • Если вы используете STOCKHISTORY с функцией, которая автоматически обновляется (например, СЕГОДНЯ), и если в книге включено автоматическое вычисление, при открытии книги компания STOCKHISTORY автоматически обновит данные. Это обновление будет происходить в фоновом режиме, и вы можете изменить книгу по мере необходимости, пока это обновление выполняется. Если книга использует большое количество вызовов функций STOCKHISTORY, это фоновое обновление будет продолжаться до тех пор, пока это необходимо для обновления данных. При желании вы можете закрыть книгу в любое время.

ИСТОРИЯАКЦИЙ() - новая функция EXCEL, которая загружает котировки акций, валюты, криптовалюты и биржевых индексов.

В Microsoft EXCEL 365 появилась новая финансовая функция ИСТОРИЯАКЦИЙ (STOCKHISTORY), которая позволяют автоматически загружать историю котировок валют,  акций, ETF и биржевых индексов. 

Содержание:
01:07​ - Параметры функции ИСТОРИЯАКЦИЙ
02:00​ - Загрузка истории цен акций, ETF и взаимных фондов
05:20​ - Пример загрузки истории взаимного фонда MFS Massachusetts Investors Fund (MITTX) с 1924 года (!)
08:12​ - Загрузка истории котировок акций и ETF Московской биржи
12:38​ - Загрузка других истории других параметров: цены открытия, объем торгов, high, low
14:10​ - Загрузка истории котировок валют и криптовалют USDRUB, BTCUSD (биткоин)
20:20​ - Загрузка данных биржевых индексов: NASDAQ 100, EURO STOXX 50


Доступные биржи (фондовые рынки):
NYSE, NASDAQ, Лондонская биржа - LSE, Шанхайская биржа – SSE, Московская биржа - MICEX и т.п 
Полный список поддерживаемых фондовых рынков: https://support.microsoft.com/en-us/o...​

Среди доступный ценных бумаг:
- акции, ETF и БПИФ, взаимные фонды
- валютные пары: USD/RUB, USD/EUR и др.
- криптовалюты: Биткоин (BTC/RUB), Эфириум (ETH/USD) и др.
- биржевые индексы: NASDAQ 100, EURO STOXX 50 и др.

Загрузка данных возможна без сторонних плагинов и макросов (VBA).
ВНИМАНИЕ: пока нововведение работает только в версии Microsoft 365 (ранее Office 365).


Загрузка фундаментальных характеристик и текущих данных в EXCEL:
https://rostsber.ru/publish/stocks/ex...​

Финансовые калькуляторы в формате EXCEL:
https://rostsber.ru/excel/​​

О загрузке исторических данных через библиотеку okama для Python:
<iframe width="560" height="315" src="https://www.youtube.com/embed/fX9kC2kFsMw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>​

Подписаться на канал проекта в YouTube:
http://www.youtube.com/c/RostSberRU?&...​

Подготовлено проектом "Рост Сбережений"
https://rostsber.ru/<br /><br />

p.s. я только разместил новость. Не специалист в табличках

 

Большинство из нас используют Microsoft Excel в повседневной жизни по-разному. Мы используем его для отслеживания задач, которые должны быть выполнены с использованием цветовой кодировки и людей, занимающихся бизнесом, используем его для отслеживания продуктов, которые были привезены и проданы, и каждый использует их тем или иным способом. Функции Excel облегчают нашу работу по минимизации выполняемой нами задачи. Существует множество встроенных формул, и вы даже можете создавать свои собственные пользовательские функции для расширения функциональности. Помимо использования его для обычных вещей, вы даже можете получить или получить котировки акций в Excel. Итак, давайте посмотрим, как получить котировки акций в Excel .

Получить котировки акций в Excel

Чтобы получить котировки акций в Excel, вам не нужно устанавливать какие-либо дополнительные дополнения к вашему листу Excel. Вы можете использовать MSN MoneyCentral Investor Stock Quotes, встроенное соединение с Excel и получить котировки акций. Я проведу вас через шаги, которым нужно следовать, чтобы достичь этого.

Откройте лист Excel и нажмите на вкладку «Данные». Затем нажмите «Соединения», после чего откроется «Соединения с книгой» и нажмите кнопку «Добавить».

Выберите «Котировки акций MSN MoneyCentral Investor» и дважды щелкните по нему.

Нажмите «Свойства», чтобы открыть всплывающее окно «Свойства подключения». Установите флажок «Включить фоновое обновление» и любые другие параметры, которые вам требуются. Нажмите «ОК» и «Закрыть».

Нажмите на вкладку «Данные» еще раз и нажмите «Существующие подключения». Выберите соединение, которое вы только что добавили, и нажмите кнопку «Открыть», или вы можете дважды щелкнуть по соединению.

Он открывает всплывающее окно «Импорт данных» и спрашивает вас, куда поместить данные. По умолчанию в качестве начальной ячейки отображается $ A $ 1 (ячейка as A1 ’). Вы даже можете выбрать диапазон ячеек, просто перетаскивая мышь над ячейками и нажимая кнопку «ОК».

Он попросит вас «ввести значение параметра» и добавить котировки акций, разделенные запятой. Установите флажки «Использовать это значение/ссылку для будущих ссылок» и «Обновлять автоматически при изменении значения ячейки».

Чтобы обновить данные, выберите ячейку с данными и нажмите на вкладку «Данные». Выберите «Обновить все», а затем «Обновить».

Он работает с Microsoft Excel 2007 и более поздними версиями, включая Excel 2013. Это простой способ получить котировки акций в Excel с помощью MSN Money. Вы даже можете просматривать и график и новости, касающиеся каждой котировки акций. Нет необходимости создавать какие-либо макросы или добавлять сторонние надстройки. Просто добавьте встроенное соединение, и оно просто тянет котировки акций в Excel.

Известно ли вам об этом методе получения биржевых котировок в Excel?

Теперь посмотрим, как можно добавить калькулятор Windows на панель быстрого доступа Excel.

Давайте что-нибудь проанализируем.. Например, историю торгов? Это и в принципе полезно, и скиллы набьются полезные… В общем план такой – научиться вытаскивать нужные данные с биржи, экспортировать в Excel, ну и что-нибудь с ними делать. Понятно, что не руками :) Поехали!

Подготовка.

Нам потребуется

а) Установленный питон с модулем requests (как установить читайте тут)

б) Установленный модуль openpyxl – но тут всё просто, запустите командную строку и вбейте pip install openpyxl

Проверка

После того, как вы все установили, давайте проверим, создаются ли валидные Excel файлы. Простейший пример (взятый с официального сайта) показывает, как создать новую книгу, внести туда данные и сохранить:

from openpyxl import Workbook
wb = Workbook()

# Выбрать активную книгу
ws = wb.active

# Запишем число 42 в ячейку А1
ws['A1'] = 42

# Добавим строку с данными
ws.append([1, 2, 3])

# В поле А2 запишем текущую дату и время
import datetime
ws['A2'] = datetime.datetime.now()

# Сохраним файл рядом со скриптом
import os

wb.save(os.path.dirname(os.path.abspath(__file__)) + "/sample.xlsx")

Копируем этот код, вставляем в IDLE (опять же, подробности тут), сохраняем под каким-нибудь именем (у меня это excel_test.py) и запускаем (F5). В папке рядом со скриптом должен появиться файл sample.xlsx. 

Можно открыть его экселем и посмотреть, что внутри:


Реклама



История торгов из Exmo в Excel

Ок, работает, писать данные можем. Теперь давайте попробуем забрать с exmo.me всю историю торгов. Точнее не так – всю историю Эксмо не дает, а дает максимум 10 000 последних торгов по паре.

Вот код – вставим в IDLE, сохраним как exmo_excel.py и запустим (о том, что такое API и как работать с ним на Exmo читайте в других статьях цикла – ссылки в конце статьи, над комментариями).

import urllib, http.client
import os
import time
import json
# эти модули нужны для генерации подписи API
import hmac, hashlib

from openpyxl import Workbook
from datetime import datetime, timezone

# ключи API, которые предоставила exmo
API_KEY = 'K-...'
# обратите внимание, что добавлена 'b' перед строкой
API_SECRET = b'S-...'

# базовые настройки
API_URL = 'api.exmo.com'
API_VERSION = 'v1'

# Свой класс исключений
class ScriptError(Exception):
    pass
class ScriptQuitCondition(Exception):
    pass

# все обращения к API проходят через эту функцию
def call_api(**kwargs):
    payload = {'nonce': int(round(time.time()*1000))}

    if kwargs:
        payload.update(kwargs)
    payload =  urllib.parse.urlencode(payload)

    H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512)
    H.update(payload.encode('utf-8'))
    sign = H.hexdigest()
    
    headers = {"Content-type": "application/x-www-form-urlencoded",
           "Key":API_KEY,
           "Sign":sign}
    conn = http.client.HTTPSConnection(API_URL, timeout=60)
    conn.request("POST", "/"+API_VERSION + "/" + kwargs['method'], payload, headers)
    response = conn.getresponse().read()
    
    conn.close()

    try:
        obj = json.loads(response.decode('utf-8'))

        if 'error' in obj and obj['error']:
            raise ScriptError(obj['error'])
        return obj
    except json.decoder.JSONDecodeError:
        raise ScriptError('Ошибка анализа возвращаемых данных, получена строка', response)

# Получим список всех пар, по которым торгует биржа
pairs_list = []
pairs = call_api(method='pair_settings')
for pair in pairs:
    pairs_list.append(pair) # сложим их в словарь

pairs_str = ','.join(pairs_list) # из словаря создадим строку, с парами, разделенными запятыми

# Получим историю торгов по всем парам
trades = call_api(method='user_trades', pair=pairs_str, limit=10000)
for pair in trades: # пройдемся по каждой паре
    if not trades[pair]: #пропускаем пары, по которым не было торгов
        continue
    # Теперь проходим по всем торгам этой пары
    print(pair, len(trades[pair]))

Должны увидеть список пар, по которым торговали, и кол-во полученных сделок по каждой их них. У меня это выглядит так:

Не лишним будет упомянуть, что есть торги по сути. Когда вы выставляете ордер на продажу, например 1 BTC, биржа подбирает для вас покупателей. Ваш ордер может быть исполнен в одну сделку – если кто-то сразу купит ваш биткоин целиком, либо в несколько – когда ваш биткойн раскупят по частям. Так вот, история торгов – это история именно таких сделок.

Вообще, стоило бы сравнить с историей торгов на сайте Эксмо, но там как будто специально неудобно сделано.. В общем, похоже на правду, на этом и остановимся пока. Если что, историю торгов можно смотреть тут (раздел сделки):

Теперь, собственно, нужно объединить оба скрипта, что бы получить историю торгов и выгрузить в эксель. Немного магии и вуаля:

import urllib, http.client
import os
import time
import json
# эти модули нужны для генерации подписи API
import hmac, hashlib

from openpyxl import Workbook
from datetime import datetime, timezone

# ключи API, которые предоставила exmo
API_KEY = 'K-...'
# обратите внимание, что добавлена 'b' перед строкой
API_SECRET = b'S-...'

# базовые настройки
API_URL = 'api.exmo.com'
API_VERSION = 'v1'

# Свой класс исключений
class ScriptError(Exception):
    pass
class ScriptQuitCondition(Exception):
    pass

# все обращения к API проходят через эту функцию
def call_api(**kwargs):
    payload = {'nonce': int(round(time.time()*1000))}

    if kwargs:
        payload.update(kwargs)
    payload =  urllib.parse.urlencode(payload)

    H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512)
    H.update(payload.encode('utf-8'))
    sign = H.hexdigest()
    
    headers = {"Content-type": "application/x-www-form-urlencoded",
           "Key":API_KEY,
           "Sign":sign}
    conn = http.client.HTTPSConnection(API_URL, timeout=60)
    conn.request("POST", "/"+API_VERSION + "/" + kwargs['method'], payload, headers)
    response = conn.getresponse().read()
    
    conn.close()

    try:
        obj = json.loads(response.decode('utf-8'))

        if 'error' in obj and obj['error']:
            raise ScriptError(obj['error'])
        return obj
    except json.decoder.JSONDecodeError:
        raise ScriptError('Ошибка анализа возвращаемых данных, получена строка', response)

# Получим список всех пар, по которым торгует биржа
pairs_list = []
pairs = call_api(method='pair_settings')
for pair in pairs:
    pairs_list.append(pair) # сложим их в словарь

pairs_str = ','.join(pairs_list) # из словаря создадим строку, с парами, разделенными запятыми

# Создадим Excel файл
wb = Workbook()
ws = wb.active
# Вставим заголовки
ws.append(["Дата сделки", "Пара сделки", "ID ордера", "ID сделки", "Тип сделки", "Кол-во по сделке", "Цена сделки", "Сумма сделки"])

# Получим историю торгов по всем парам
trades = call_api(method='user_trades', pair=pairs_str, limit=10000)
for pair in trades: # пройдемся по каждой паре
    if not trades[pair]: #пропускаем пары, по которым не было торгов
        continue
    # Теперь проходим по всем торгам этой пары
    for trade in trades[pair]:
        # Мы бы могли использовать метод dict.values(), но нам нужны данные в определенном порядке, причем каждый раз для каждого массива, так что немного усложним код
        # Форматируем и вставляем строку с данными в Excel
        ws.append([
            datetime.fromtimestamp(trade['date'], timezone.utc), # дата сделки
            pair, # Пара сделки
            trade['order_id'], # ID ордера
            trade['trade_id'], # ID сделки
            'Покупка' if trade['type'] == 'buy' else 'Продажа',
            float(trade['quantity']), # Кол-во по сделке
            float(trade['price']), # Цена сделки
            float(trade['amount']) * (-1 if trade['type'] == 'buy' else 0.998), # сумма сделки, если buy то отрицательная - так удобнее считать потом
        ])
    
# Сохраняем файл
wb.save(os.path.dirname(os.path.abspath(__file__)) + "/exmo_excel.xlsx")
print('Работу закончил')

Вставляем этот код в IDLE, сохраняем, запускаем.. У вас должен появиться Excel-файл exmo_excel.xlsx рядом со скриптом. Откроем, посмотрим.

Я поставил фильтр по паре LTC_RUB, что бы еще раз акцентировать внимание на сделках, так в файле все торги по всем парам (точнее, последние 10 000 торгов). В первой колонке время сделки (по времени биржи), в остальных вроде понятно, объясню про ID ордера и ID сделки.

Смотреть стоит по времени, т.е. снизу вверх. 14 августа я на почти 150р купил 0, 618LTC по курсу 242,38. Для этого я создавал отложенный ордер (52466257), который был исполнен в рамках одной сделки (5227092).

После этого я, видимо, выставил отложенный ордер на продажу купленного (52466294), который исполнился опять же одной сделкой.

После этого я создал отложенный ордер на покупку (62752648), который был исполнен частями –обратите внимание, что тут две строки с одним и тем же номером ордера и одной и той же ценой, но разными суммами, временем и id сделки. Т.е. сначала кто-то купил почти всё, а потом кто-то еще докупил, что осталось.

Ну а потом сработала еще одна продажа купленного.

Если сложить все суммы сделки (вот почему покупку мы делали отрицательной), то получим сальдо или как там его – мне больше нравится слово профит, хотя и «прибыль» тоже ничего. В данном случае вроде бы 63 копейки прибыли, но….. Тут, насколько я вижу, хотя надо бы и проверить, сумма указывается ДО вычета комиссии биржи – 0.2%.

Если еще раз обратите внимание, то первую сделку я провел за 150 рублей, купив 0,618LTC, а продаю 0,617LTC – потому что часть купленного в LTC съела комиссия (рубли не псотрадали). Когда же я продаю купленное, комиссия берется с рублей – но тут я не вижу, что бы это отражалось. Поэтому, наверное, более точно было считать так (дополнил столбец руками):

Для положительных сумм сделок мы вычитаем комиссию 0.2% (формула видна на рисунке), отрицательные считаем как есть – так правильно. Итого, профит составил 2,8 копейки, юхууу))

Не помню, что я тестил на этой паре год назад, и какие настройки прибыльности стояли, но в общем имейте в виду такую выдачу инфы, что через API, что на сайте.

Если хотите, можете сразу выводить в эксель прибыль за вычетом комиссии. Для этого строку

float(trade['amount']) * (-1 if trade['type'] == 'buy' else 1),

нужно заменить на

float(trade['amount']) * (-1 if trade['type'] == 'buy' else 0.998),

итог будет правильным:

В общем, делайте с экселем теперь что хотите, стройте графики или сводные таблицы, инструмент для получения данных у вас есть.


Реклама



История торгов из Yobit в Excel

Ну и как бонус давайте сделаем тоже самое для биржи yobit.net. Тут уже будет меньше комментариев, т.к. по сути ничего не меняется, только немного кода. Более детально о том, как работать с API yobit, читайте так же по ссылкам в конце статьи.

В общем, вот код, вбивайте свои ключи, запускайте.. Он будет работать мучительно долго, т.к. во первых очень много пар, а во вторых, после каждой пары добавлено time.sleep(1), что бы вас Yobit не забанил.. Хотя, он может быть и так не забанит, так что можете удалить эту строку и все пойдет шустрее, но это на свой страх и риск.

import os
import json
import requests
import math
import time
import urllib, http.client
import hmac, hashlib

from openpyxl import Workbook
from datetime import datetime, timezone

# Вписываем свои ключи
API_KEY = '...'
API_SECRET = b'...'

"""
    Каждый новый запрос к серверу должен содержать увеличенное число в диапазоне 1-2147483646
    Поэтому храним число в файле поблизости, каждый раз обновляя его
"""
nonce_file = "./nonce"
if not os.path.exists(nonce_file):
    with open(nonce_file, "w") as out:
        out.write('1')
# Будем перехватывать все сообщения об ошибках с биржи
class YobitException(Exception):
    pass
        
def call_api(**kwargs):

    # При каждом обращении к торговому API увеличиваем счетчик nonce на единицу
    with open(nonce_file, 'r+') as inp:
        nonce = int(inp.read())
        inp.seek(0)
        inp.write(str(nonce+1))
        inp.truncate()

    payload = {'nonce': nonce}

    if kwargs:
        payload.update(kwargs)
    payload =  urllib.parse.urlencode(payload)

    H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512)
    H.update(payload.encode('utf-8'))
    sign = H.hexdigest()
    
    headers = {"Content-type": "application/x-www-form-urlencoded",
           "Key":API_KEY,
           "Sign":sign}
    conn = http.client.HTTPSConnection("yobit.net", timeout=60)
    conn.request("POST", "/tapi/", payload, headers)
    response = conn.getresponse().read()
    
    conn.close()

    try:
        obj = json.loads(response.decode('utf-8'))

        if 'error' in obj and obj['error']:
            raise YobitException(obj['error'])
        return obj
    except json.decoder.JSONDecodeError:
        raise YobitException('Ошибка анализа возвращаемых данных, получена строка', response)

res = requests.get('https://yobit.net/api/3/info') # получаем данные info
res_obj = json.loads(res.text) # переводим полученный текст в объект с данными

pairs = [pair for pair in res_obj['pairs']] # создадим массив названий пар

# Создадим Excel файл
wb = Workbook()
ws = wb.active
# Вставим заголовки
ws.append(["Дата сделки", "Пара сделки", "ID ордера", "ID сделки", "Тип сделки", "Цена сделки", "Сумма сделки"])

for pair in pairs:
    try:
        print ('Получаем историю торгов по паре %s' % pair, '*'*30)
        data = call_api(method="TradeHistory", pair=pair)
        if(data.get('return')):
            for t in data['return']:
                trade = data['return'][t]
                ws.append([
                    datetime.fromtimestamp(int(trade['timestamp']), timezone.utc), # дата сделки
                    pair, # Пара сделки
                    trade['order_id'], # ID ордера
                    t, # ID сделки
                    'Покупка' if trade['type'] == 'buy' else 'Продажа',
                    float(trade['rate']), # Цена сделки
                    float(trade['amount']) * (-1 if trade['type'] == 'buy' else 1), # сумма сделки, если buy то отрицательная - так удобнее считать потом
                ])
        else:
            print('Торгов не было')
        #time.sleep(1)
    except YobitException as e:
        print("Облом:", e)
    
wb.save(os.path.dirname(os.path.abspath(__file__)) + "/yobit_excel.xlsx")
print('Работу закончил')

Когда оно всё доработает, рядом с файлом появится файл yobit_excel.xslx, можете открывать и делать выводы. Опять же, если нужно вычитать комиссию, то воспользуйтесь советом выше, для эксмо. Если что-то не будет работать или будет работать не так, пишите, поправим.

Удачи!

На прошлой неделе в бета-канале Excel для Office 365 дебютировала новая функция STOCKHISTORY. Функция может извлекать исторические цены на акции и обменные курсы с дневным, недельным или ежемесячным интервалом.

STOCKHISTORY — это пример одной из новых формул динамического массива. Одна формула разольется в соседних ячейках. Обзор динамических массивов см. В статье Excel 2019: динамические массивы могут распространяться.

Осторожно

STOCKHISTORY будет доступен только в версиях Office 365 по подписке. Если у вас есть Excel 2013, Excel 2016, Excel 2019 (или в будущем Excel 2022), у вас не будет доступа к службе STOCKHISTORY.

Вот пример формулы STOCKHISTORY, возвращающей месячные цены закрытия для цены закрытия акций Coca-Cola: =STOCKHISTORY(A1,"1/1/1975",TODAY(),2,1)

Месячные цены закрытия с STOCKHISTORY

Вы можете использовать аргументы в функции STOCKHISTORY для обеспечения гибкости. Стоит изучить различные варианты. Аргументы представлены в следующем порядке:

  • Фондовая: это может быть текст в кавычках, например «IBM» или указывающий на ячейку, например A1.
  • Start_Date: заключите дату начала в кавычки или укажите на ячейку, содержащую дату. Как вы увидите в приведенном выше примере, если вы укажете дату начала до того, как акции торговались, результаты будут начинаться с самой старой доступной даты.
  • End_Date: если вы не укажете этот параметр, по умолчанию будет использоваться сегодняшняя дата. Обратите внимание, что функция не предоставляет результатов внутри дня, поэтому в большинстве случаев последняя дата будет вчерашним закрытием. STOCKHISTORY показывает сегодняшнюю цену закрытия только через много часов после закрытия рынка.
  • Интервал: это обеспечивает большую гибкость. Введите 0 для ежедневного, 1 для еженедельного или 2 для ежемесячного
  • Заголовки: введите 0, чтобы вернуть данные без заголовков столбцов. Используйте 1 для одной строки заголовков, как показано выше. Используйте 2, чтобы получить заголовки, как показано ниже.
    Аргументы функции STOCKHISTORY
  • После первых пяти аргументов вы можете указать до 6 дополнительных аргументов, чтобы указать, какие поля вы хотите вернуть, и порядок. Если вы не укажете их, вы получите дату и цену закрытия.
    Аргументы функции STOCKHISTORY

Вы можете указать значения в любом порядке. Например, одна из очень старых встроенных биржевых диаграмм в Excel требует даты, объема, открытия, максимума, минимума, закрытия. В этом случае аргументы с 6-го по 10-й будут 0,5,2,3,4,1.

Аргументы функции STOCKHISTORY

STOCKHISTORY поддерживает отдельные акции, валютные пары, ETF, индексные фонды, паевые инвестиционные фонды и облигации.

Чтобы узнать больше, посмотрите наше видео на YouTube.

Одна из особенностей STOCKHISTORY заключается в том, что она автоматически обеспечивает форматирование чисел на лету. Это новая функция в Excel. Узнайте больше о FNV здесь: https://techcommunity.microsoft.com/t5/excel-blog/announcing-stockhistory/ba-p/1404338.

Поскольку эта функция сейчас находится в стадии бета-тестирования, вы должны принять участие в программе предварительной оценки Office, как описано здесь.

Понравилась статья? Поделить с друзьями:
  • История как использовать microsoft word
  • История изменения ячеек excel
  • История изменения документов word
  • История изменения excel таблицы
  • История изменений в excel google