Блог им. hate2trd

#пора_граммировать [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();
            }            
        }
    }
}
 
D:\devel\net\GetLastPrice>dotnet run
Volume is  1 at Price  59686
Volume is  1 at Price  59689
Volume is  1 at Price  59689
Volume is  1 at Price  59689
Volume is  1 at Price  59689
Volume is  3 at Price  59689
Volume is  3 at Price  59689
Volume is  3 at Price  59689
Volume is  3 at Price  59689
Volume is  2 at Price  59688
Volume is  3 at Price  59688


#учусьучить
★7
dotnet под виндой? не знал
avatar

Андрей К

avatar

crazyFakir

crazyFakir, буду знать, спс
avatar

Андрей К

задержку побороть бы
AlexStringer, 
это платно на любой бирже мира.
рынок то финансовый :)
avatar

crazyFakir

crazyFakir, задержанные данные они вроде как дают.

Но не факт, что не поставят айпи в блек-лист, если их начать нагружать в промышленных масштабах...

avatar

ch5oh

ch5oh, это странное рассуждение.
— доступ к задержанным данным открыт.
— если количество запросов будет напрягающим, а это бывает  как из-за ошибок, так и при недостаточной квалификации, то вполне можно получить бан. пояснить поддержке ситуацию и исправить свой код. защита от ддос и техноспама — функция на стороне сервера.
— исс имеет целью раздавать данные в «промышленных» масштабах.  он так и называется — исс.
avatar

crazyFakir

А есть возможность получать тип сделки (купля/продажа)?
Можно ли получать сделки частями в обратном (хронологическом) порядке? Например, по тысячи в несколько итераций…
avatar

tranquility

tranquility, 
А есть возможность получать тип сделки (купля/продажа)?
нет, это в планах, но сроки не говорят.
Можно ли получать сделки частями в обратном (хронологическом) порядке? Например, по тысячи в несколько итераций…
само-собой, ставьте &limit=1000 и тяните, контролируя по номеру сделки &tradeno=nn
avatar

crazyFakir

crazyFakir, спасибо за оперативный ответ! С tradeno поиграться пока не получается, похоже меня там забанили, надеюсь что временно. Я несколько раз за минуту выполнил запрос через браузер с limit=1000 и теперь ответ приходит, заголовки все есть, но сделок — нет. Еще странно было, что с limit=10 приходил ответ либо с одной сделкой, либо вообще без сделок. Потом limit=1000 что-то выдавало, а теперь вот все, хватит, похоже…
avatar

tranquility

tranquility, сервер может быть на обслуживании в выходные
завтра закидывайте сюда свою строку запроса — поразбираемся
Я несколько раз за минуту выполнил запрос через браузер с limit=1000
99% что никто вас не банил. незачем им это.
запросов может быть по несколько в секунду, другое дело, что в этом смысла особого нет
avatar

crazyFakir

tranquility, кстати, сделки можно забирать только за текущую сессию, те если речь о сделках, то это в рабочее время
avatar

crazyFakir

crazyFakir, если данные только за текущую сессию, это не так интересно. Мне тогда проще их самому в предыдущий день записать, а в текущий считать, проанализировать и использовать. Не так удобно, конечно, но на данный момент понятнее и надежнее. А вот если еще и предыдущих дней хочется с десяток проанализировать, то тогда, во-первых, это надо 10 дней до этого сидеть данные писать, а потом еще выделять нужные файлы, упорядочивать… Хотя, последнее — это дело техники, главное неудобство — это что данные надо сначала записать. Если эти сервисы биржи эту проблему не решают, то, получается, лично мне они не очень полезны.
avatar

tranquility

tranquility, 
ну а мне до всего этого какое дело?
это посты для тех кто хочет, но не знает как начать работать с исс.
искателям халявы тут не рады.
avatar

crazyFakir

crazyFakir, согласен, мой предыдущий пост можно было ограничить одним первым предложением.
avatar

tranquility


....все тэги
UPDONW