Постов с тегом "ISS": 11

ISS


Изучаем и парсим биржевую информацию с сайта Мосбиржи. Разбор кода на Python.

Информационно-статистический сервер Московской Биржи (ИСС или ISS) – это сервис, предоставляющий разнообразную биржевую информацию в режиме реального времени, а также итоги торгов и статистические данные.

Основные возможности ИСС:

  • Получение потоковых данных о ходе торгов.
  • Просмотр и экспорт итогов торгов.
  • Доступ к историческим данным по итогам торгов, ценам и прочим показателям.
  • Выгрузка списков всех инструментов, режимы торгов и их группы.
  • Мониторинг рыночной информации в различных разрезах.

Данные о ходе торгов в режиме online и итоги торгов доступны только по подписке, естественно платной.

На сайте мосбиржи есть специальный раздел “Программный интерфейс к ИСС“, на котором выложено Руководство разработчика (v.1.4), Описание метаданных и Описание методов.

С этих документов и надо начинать изучать ИИС. Кстати говоря Правила использования биржевой информации Московской Биржи четко определены и наглядно представлены в презентации.



( Читать дальше )

ISS Некоторые важные мелочи или мелочные важности

    • 08 декабря 2019, 21:13
    • |
    • _sg_
  • Еще
ISS — Некоторые важные мелочи или мелочные важности, кому как нравится ...

1. Определение истекших фьючей скачать невозможно. ISS их не помнит, у него короткая память
— только текущий и будущие.
Например:
Это работает:
iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ9.xml
iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ0.xml

А вот это уже — «Давай, До свидания!»
iss.moex.com/iss/engines/futures/markets/forts/securities/SiU9.xml
iss.moex.com/iss/engines/futures/markets/forts/securities/SiM9.xml

2. Не всегда, но иногда  даже то, что работает по будням, по выходным или праздничным дням уже не работает.

Как обнаружил?
По выходным, как правило, запускаю тесты, поэтому вылезают разные «прелести».
Не знаю, может быть, на дни «профилактики» случайно попадал. 

Желаю успехов в освоении ISS.


Вопрос по ISS Moex. Данные по опционам можно ли качать через ISS ?

    • 10 октября 2019, 20:22
    • |
    • _sg_
  • Еще
Существует ли возможность получать через ISS Moex данные по опционам, в частности хотя бы греки ?
Пусть даже с 15мин задержкой.
Единственноe, что мне удалось обнаружить в данных по опционам, это вот это:

<row SECID=«Si65000BJ9» BOARDID=«ROPD» BID="" OFFER="" SPREAD=«20» 
OPEN=«381» HIGH=«409» LOW=«374» LAST=«380»
QUANTITY=«20» LASTCHANGE=«5» SETTLEPRICE=«0» SETTLETOPREVSETTLE=«0» 
NUMTRADES=«51»
VOLTODAY=«267» VALTODAY=«17355000» VALTODAY_USD=«266600» 
UPDATETIME=«19:52:28» LASTCHANGEPRCNT=«1.33» 
BIDDEPTH="" BIDDEPTHT="" NUMBIDS="" OFFERDEPTH="" OFFERDEPTHT="" NUMOFFERS="" 
TIME=«19:52:18» SETTLETOPREVSETTLEPRC=«0» 
SEQNUM=«1570727249907» SYSTIME=«2019-10-10 20:07:29» OICHANGE="-228"/>

https://iss.moex.com/iss/engines/futures/markets/options/securities/Si65000BJ9.xml

Маловато будет ...


Американский астронавт сделал сатанинский знак

    • 21 июля 2019, 15:22
    • |
    • alexKa
  • Еще
Стартовала очередная миссия к ISS, МС-13, и вот при посадке в автобус американский астронавт делает сатанинский знак..

Американский астронавт сделал сатанинский знак


На видео на 0:47
Причем перед этим их наши православные попы обрызгали святой водой и перекрестили на дорожку..




Библиотечка для MOEX ISS

Написал библиотечку для асинхронной загрузки данных с MOEX ISS на Python. Большой выигрыш по скорости, когда нужно данные по десяткам или сотням бумаг загрузить. 

Пока реализованы запросы по перечню торгуемых бумаг и историческим котировкам. На следующей неделе собираюсь добавить загрузку свечек, информации по доступным свечкам и общего справочника MOEX ISS.

#пора_граммировать [7] ... авторизация на сайте МосБиржи #headers

— заходим на адрес https://passport.moex.com и регистрируемся. 
   запоминаем логин и пароль.
   подтверждаем почту.

— вместо login:password вбиваем свои данные
using System;
using System.Net;
using System.Text;

namespace AuthMoexSmpl
{
    class Program
    {
        static void Main(string[] args)
        { 
            string authLink = "https://passport.moex.com/authenticate";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(authLink);
            request.ContentType = "text/plain; charset=utf-8";
            request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes("login:password")); //свои данные
            request.PreAuthenticate = true;
            request.CookieContainer = new CookieContainer();                 
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;            
            for(int i=0; i < response.Headers.Count; ++i)  
	                Console.WriteLine("\nHeader Name:{0}, Value :{1}",response.Headers.Keys[i],response.Headers[i]);
        }
    }
}
D:\devel\net\AuthMoexSmpl>dotnet run

Header Name:Cache-Control, Value :no-store, must-revalidate, no-cache, ma

Header Name:Connection, Value :close

Header Name:Date, Value :Fri, 10 Nov 2017 19:53:12 GMT

Header Name:Pragma, Value :no-cache

Header Name:ETag, Value :"xxxxxx"

Header Name:Server, Value :nginx

Header Name:Set-Cookie, Value :MicexPassportCert=xxxxxxx; domain=.moex.com; path=/, _passport_se
m xxxxx; path=/; HttpOnly

Header Name:Status, Value :200 OK

Header Name:X-Runtime, Value :713

Header Name:X-Moex-Passport-Certificate, Value :xxxxxx

Header Name:X-Powered-By, Value :Phusion Passenger 4.0.57

Header Name:Access-Control-Allow-Credentials, Value :true

Header Name:Access-Control-Expose-Headers, Value :X-MicexPassport-Marker

#учусьучить





#пора_граммировать [6] ... авторизация на сайте МосБиржи #cookie

— заходим на адрес https://passport.moex.com и регистрируемся.
   запоминаем логин и пароль.
   подтверждаем почту.

— вместо login:password вбиваем свои данные
using System;
using System.Net;
using System.Text;

namespace AuthMoexSmpl
{
    class Program
    {
        static void Main(string[] args)
        { 
            string authLink = "https://passport.moex.com/authenticate";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(authLink);
            request.ContentType = "text/plain; charset=utf-8";
            request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes("login:password")); // вносим свои данные
            request.PreAuthenticate = true;
            request.CookieContainer = new CookieContainer();                 
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;            
            foreach (Cookie cook in response.Cookies) {
                Console.WriteLine("Cookie:");
                Console.WriteLine("{0} = {1}", cook.Name, cook.Value);
                Console.WriteLine("Domain: {0}", cook.Domain);
                Console.WriteLine("Path: {0}", cook.Path);
                Console.WriteLine("Port: {0}", cook.Port);
                Console.WriteLine("Secure: {0}", cook.Secure);
                Console.WriteLine("When issued: {0}", cook.TimeStamp);
                Console.WriteLine("Expires: {0} (expired? {1})", cook.Expires, cook.Expired);
                Console.WriteLine("Don't save: {0}", cook.Discard);    
                Console.WriteLine("Comment: {0}", cook.Comment);
                Console.WriteLine("Uri for comments: {0}", cook.CommentUri);
                Console.WriteLine("Version: RFC {0}" , cook.Version == 1 ? "2109" : "2965");                
                Console.WriteLine ("String: {0}", cook.ToString());
            }                   
        }
    }
}
D:\devel\net\AuthMoexSmpl>dotnet run
Cookie:
_passport_session = xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Domain: passport.moex.com
Path: /
Port:
Secure: False
When issued: 11.11.2017 01:55:42
Expires: 01.01.0001 00:00:00 (expired? False)
Don't save: False
Comment:
Uri for comments:
Version: RFC 2965
...

#учусьучить

#пора_граммировать [5] ... цена последней сделки по Si с биржи.

Для получения последней сделки нужно изменить порядок запроса на обратный добавив
reversed=1
и оставить только строчку номер 15 в запросе
limit=1
получим запрос вида
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?reversed=1&limit=1
Вариант автоматизации упрощенно:
using System;
using System.Net;
using System.IO;
using System.Text;

namespace GetLastPrice
{
    class Program
    {
        static void Main(string[] args)
        { 
            string newLine;
            string[] lastLine;
            string link = "https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?reversed=1&limit=1";
            int count = 0;           
            for (;;) {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link);
                request.ContentType = "text/plain; charset=utf-8";
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;        
                using (Stream responseStream = response.GetResponseStream())
                {                    
                    StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);                   
                    while ((newLine = sr.ReadLine()) != null) {                        
                        if (count == 14) {
                            if (newLine =="") break;
                            else {                        
                                lastLine =  newLine.Split(",");
                                Console.WriteLine("Volume is " + lastLine[6] +" at Price " + lastLine[5]);
                            }                                                   
                        }
                        count++;                                            
                    }                                                               
                }
                count = 0;
                response.Close();
            }            
        }
    }
}


( Читать дальше )

#пора_граммировать [4] тики с сайта МосБиржи, ну и минутки тоже :)

Если закинуть вот такую строчку в браузер, то получим тики по SiZ7 текущей сессии
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json
— если добавить 
?start=0&limit=100
то начиная с первой сточки (номер ноль) получим только первые 100 сделок:
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?start=0&limit=100
следующие 100 сделок:
?start=100&limit=100
Минутки получить можно так:
http://iss.moex.com/iss/engines/futures/markets/forts/boards/RFUD/securities/SiZ7/candles.json?from=2017-11-08&till=2017-11-08&interval=1&start=0
Если заменить .json --> .csv, то скачивается файл:

http://iss.moex.com/iss/engines/futures/markets/forts/boards/RFUD/securities/SiZ7/candles.json?from=2017-11-08&till=2017-11-08&interval=1&start=0
Программный пример:
using System;
using System.Net;
using System.IO;

namespace GetDataSmpl
{
    class Program
    {
        static void Main(string[] args)
        {   
            string link = "https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?start=0&limit=10";
            string dataLine; 
            int count = 0;           
            using (WebClient wc = new WebClient())
            {  
                Stream stream = wc.OpenRead(link);
                StreamReader sr = new StreamReader(stream);                
                while ((dataLine = sr.ReadLine()) != null) {
                    if (count >= 14 && count <= 23) Console.WriteLine(dataLine);
                    count +=1;
                }                        
                stream.Close();             
            }                
        }
    }
}


( Читать дальше )

....все тэги
UPDONW
Новый дизайн