Постов с тегом "linux": 41

linux


#пора_граммировать [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();
            }            
        }
    }
}


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

#пора_граммировать [3] делаем C# сразу для/на Windows <==> Linux

Нетрудно сделать версию консольной проги по стандарту  2.0 для запуска на Windows или Linux:

— каталог Debug наполнялся содержанием при
dotnet run

Для релиза:

— в каталоге проекта делаем

   для win7:
dotnet publish -c Release -r win7-x64
   для Ubuntu 14.04:
dotnet publish -c Release -r ubuntu.14.04-x64

полный список платформ Windows, Linux, MacOS X

Забираем релизы в каталоге Release проекта.




#учусьучить

Торгуем из под Linux Часть 4 - Финал.

    • 17 августа 2017, 16:25
    • |
    • Svips
  • Еще

Первая часть
Вторая часть
Третья часть

Всем привет.

Вот мы и закончили свой проект перевода своих торговых решений на операционную систему Linux. За шесть месяцев было написанно с нуля все что нужно для нашего стиля торговли и контроля рисков. Поставленные и решенные задачи:

  — Иметь унифицированный терминал для торговли разных бирж
  — Иметь сервер рискменеджера для контроля рисков
  — Независить от платформы клиента(трейдера), виндовс, линукс, андроид, макос и тд.
  — Возможность одновременной торговли на одном счете нескольких трейдеров\роботов

Весь комплекс прошел боевое тестирование и успешно внедрен в повседневную работу. Всем кто следил за проектом и поддерживал, огромное спасибо!

Ну и небольшое видео как это было:



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

Торгуем из под Linux Часть 3.

    • 07 марта 2017, 11:53
    • |
    • Svips
  • Еще


Первая часть
Вторая часть


Всем привет.

Прошло чуть больше месяца как мы стартанули переписывать все ПО под новую концепцию. Как вы помните основные посылы были следующие:
  — Написать нативный кроссплатформеный сервер для проптрейдинговой деятельности
  — Написать Веб простейшую торговую платформу для проптрейдинговой деятельности

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

Лицо или группа лиц которая хочет торговать с одного аккаунта Квика и иметь при этом рискменеджера. Т.е. по сути, Квик является датафидом и исполнителем заявок. Он подключается к нашему серверу и работаетает с ним. Клиенты — проптредеры подключаются через вебклиента к нашему серверу и совершают сделки в рамках своих лимитов, которые контролирует сервер. Такая своеобразная возможность дать в ДУ без предоставления доступа к счету и приэтом 100% контролировать риски трейдеров. Сервер на нашей стороне. Тредеров добавляем сами, и каждому выставляем лимит потерь на день и рабочий сайз. В итоге трейдер не может за день потерять больше чем лимит.

Буквально вчера закончили тесты первой альфаверсии с минимальным функционалом.
  — Сервер: принимает и раздает стакан и часовой чарт, принимает и отсылает информацию по ордерам, мониторит риски трейдеров.
  — ВебКлиент: принимает и отображает стакан и часовой чарт, выставляет и снимает ордера, принимает информацию по ним.

На данный момент платформа работает стабильно, поэтому переводим всех своих трейдеров на нее. Дальше уже будем дорабатывать остальной функционал.

Если интересно, ставьте плюсы, будем постить дальнейший ход дел )
Конструктивная критика и предложения приветствуются.
Всем профитов!

Ну и скриншот текущего клиента:

DirexTrade Web Client

 


Установка Quik 7 (7.5) на Linux

Имеем:

CentOS 6.7 и желание установить Quik для двух разных пользователей.
Не буду описывать саму установку Quik'a — в нете полно статей. Вкратце — ставим wine, качаем установщик, жмем Далее несколько раз.
Установка для двух пользователей вносит необходимость установить Quik 2 раза в разные папки.

Проблемы с которыми столкнемся:
1. Кракозябры — неверная локаль в системе.
2. Квик не видит ключи. Или после установки второго экземпляра первый забыл где его ключи.

Решения:

1. Запускаем экзишник через вайн с явным указанием локали ru_RU.
   LANG=ru_RU wine /home/vlad/.wine/drive_c/Open_Broker_QUIK/info.exe > /dev/null 2>&1 &

2. В настройках Quik(F9) можно в разделе Программа-> Шифрование можно указать где брать ключи. Так вот. ЭТО НЕ РАБОТАЕТ(

В этом же разделе строкой выше есть серый(неизменяемый) путь к qrypto.cfg (Используемый файл настроек). Именно этот файл несет смысловую нагрузку.

Я его сделал таким:

SECRING=.\secring.txk
PUBRING=.\pubring.txk

Т.е. ключи кладем в корневую директорию с Quik'ом.

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

Торгуем из под Linux Часть 2.

    • 25 января 2017, 16:10
    • |
    • Svips
  • Еще

Первая часть.

Всем привет.
Ну что, расскажем что в итоге у нас получилось и к чему пришли и идем. Первое с чем надо было определиться это сам дистрибутив. Перепробовали кучу. Требования были следующие:
  — Легковесный
  — Версии LTS или стабильный
 Просмотрели:
 Arch Linux — Всем понравился, но слишком много проблем может возникать при апдейтах и «минимальных» чихах. Нет времени на устранение этих проблем.
 CentOS — Понравилась, но как то не зашла.
 Debian — Как не странно вообще не пошла у нас. Даже не стали копать.
 Linux Mint — Слишком «тяжелая» овер 9ГБ в установке
 Linux Ubuntu и ежесней Kubuntu и тд — Слишком «тяжелая» овер 9ГБ в установке
 Slackware — Понравилась всем, но тяжелая, так же овер 9ГБ в установке
 Ubuntu Server — Вот это подошло на 100%. Легкая, до 700МБ в установке. Легко настраивается. Хорошее сообщество. LTS и тд. Вобщем как основу оси выбрали ее.

Выбор DE — Графической среды. Тут у нас было сразу два фаворита 1)



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

Дело было вечером, делать было нечего. Или торгуем из под Linux

    • 14 октября 2016, 16:51
    • |
    • Svips
  • Еще
dirextrade
Всем привет.

Рынок сейчас скучный для нас. Ручная торговля стала  настолько медленной, что в голову стали лесть всякие дурные мысли )))
Если вы помните, то с начала года мы запустили проект по пересадки наших роботов на ARM процессоры и работу их под операционной системой Linux. Эта миссия завершилась успешно.

И вот, сидя очередной день и смотря на то, как РТС пилит в коридоре 500пп мы стали мечтать и вспоминать как хотелось бы изначально торговать из под Linux. Ну гики мы, что поделать ))) Помнится, как многие юзвери на каждом форуме брокера задают один и тот же вопрос. Есть ли терминал под Linux? Да и шеф тут недавно озадачился тем, что оси наши winXP как бы уже устарели. А пересаживаться на десятку или что то другое из мира виндовс уже ну совсем не хочется...

Прикинув палец к носу, и поняв, что 60% для осуществления этой мечты у нас уже готово, стали думать. Считать. Сравнивать. Оказалось, что в офисе всего две машины под виндой. Это непосредственно сервер рискменеджера с квиком. И одна машина с приводом на которой совершаются сделки руками. Хм…

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

По следам .Net Core 1.0

Для начала, хотел бы сказать спасибо пользователю crazyFakir для отслеживания темы c# в Линукс. Последняя его заметка рассказала нам об официальном релизе шарпа в Линукс.

  Для чего?

      Ну наверное для того, чтобы расширить возможности c++. Это не говорит о том, что с++ не все силен, просто нам теперь дают возможность более быстро решать задачи в виде большого количества оберток с заглавной вывеской .Net. Я честно пытался решить массу задач на c++, но бросил эти затеи, оставшись на c# под Windows. Игра в данном случае не стоит свеч.

  Когда использую C#

     Шарп использую для обслуживания трейдинга. Я очень много выкачиваю данных для анализа. А именно:
  • Выкачивание cme отчетов и парсинг pdf. Складирование все БД;
  • Парсинг yohoo, nymex для ведения истории ОИ опционов американских акций;
  • Парсинг micex на предмет все возможных данных, складирование все в БД;
  • Выкачивание и парсинг с ftp micex, складирование все в БД;
  • Парсинг всевозможных банковских курсов валют;
  • … другой разбор рыночных данных.


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

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