Pull to refresh
0
Send message
тут вместо цены BID лучше использовать LAST. А то в выходные BID пустой, а цена последней сделки всегда непустая
Ещё один способ, это на отедльном листе загрузить все котировки, например, цены последних сделкок:

=IMPORTHTML("http://iss.moex.com/iss/engines/stock/markets/shares/boards/tqbr/securities.html?iss.meta=on&iss.only=marketdata&marketdata.columns=SECID,LAST"; "table";1)

А потом на другом листе с помощью VLOOKUP находить по тикеру соответствующую цену.

И можно добавить макрос, который перезаписывает формулу, чтобы принудительно обновить котировки:

function CopyPaste() {
var spreadsheet = SpreadsheetApp.getActive();
var startsheet = spreadsheet.getActiveSheet();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('TICK'), true);
spreadsheet.getRange('E1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
Utilities.sleep(1000);
spreadsheet.getCurrentCell().setFormula('=IMPORTHTML("http://iss.moex.com/iss/engines/stock/markets/shares/boards/tqbr/securities.html?iss.meta=on&iss.only=marketdata&marketdata.columns=SECID,LAST"; "table";1)');
spreadsheet.setActiveSheet(startsheet);
spreadsheet.getRange('A16').activate();
};
И ещё один способ как получить цену последней сделки, напр. для AFKS

=IMPORTXML("https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/AFKS.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=LAST"; "//@LAST")

это вариант для русской локали, а для американской вместо последей ";" ставим ","
О, спасибо тебе, добрый человек! Не хватает репутации, чтобы поставить + тебе.

Итак, для получения цены BID (лучшая котировка на покупку для оценки портфеля) для тикера, например, из ячейки C3, вместо кривой формулы:

=GOOGLEFINANCE("MCX:" & C3)

которая не работает с привелигированными акциями, ещё и округляет дробные значения (у ФСК, ТГК-1 и др.) до бесполезных значений, используем такую формулу:

=SUBSTITUTE( IMPORTxml("https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,BID"; "//row[@SECID='" & C3 & "']/@BID") ;".";",")

а в ваших примерах вместо CONCATENATE проще использовать &
все доступные поля со значениями можно же увидеть по
iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=securities
и тут нет текущей котировки (пусть с 15мин задержкой)

<row SECID="AFKS" BOARDID="TQBR" SHORTNAME="Система ао" PREVPRICE="18.7" LOTSIZE="100" FACEVALUE="0.09" STATUS="A" BOARDNAME="Т+: Акции и ДР - безадрес." DECIMALS="3" SECNAME="АФК "Система" ПАО ао" REMARKS="" MARKETCODE="FNDT" INSTRID="EQIN" SECTORID="EQ-N" MINSTEP="0.001" PREVWAPRICE="18.372" FACEUNIT="SUR" PREVDATE="2020-02-19" ISSUESIZE="9650000000" ISIN="RU000A0DQZE3" LATNAME="AFK Sistema" REGNUMBER="1-05-01669-A" PREVLEGALCLOSEPRICE="18.7" PREVADMITTEDQUOTE="18.7" CURRENCYID="SUR" SECTYPE="1" LISTLEVEL="1" SETTLEDATE="2020-02-25"/>

а только котировка на конец предыдущего торгового дня…
По ссылке iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOTE же выдаются данные на конец предыдущего торгового дня. А есть ссылка для получения актуальных данных? Пусть с 15мин задержкой.

Information

Rating
Does not participate
Registered
Activity