Постов с тегом "C#": 142

C#


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


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

#пора_граммировать [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 проекта.




#учусьучить

Изучение TRANSAQ или QLua

Есть желание изучить TXmlConnector и QLua библиотеки для создания около рыночного проекта. Кто так же только думает об этом, но не нашел единомышленников, как говорится велком )) а т.к. перехожу на новый (для себя) язык программирования C#, то приветствуются к участию так же новички в программировании и желающие изучить тему кодинга и алготрейдинга на C# ))

Мост NinjaTrader -> OEC Trader 2

По мотивам прошлого поста.

Выбрал два пути для реализации: TCP/IP и RabbitMQ. Сейчас в процессе выбора между, но пока что флоп в пользу первого решения. От хелоуворлда текстовиков я отказался, хотя ninjatrader оказывается напрямую предлагает часть функционала реализовывать через файлы. (0_о)

Почему TCP/IP — потому что коллега пообещал на пальцах показать как это работает.
Почему RabbitMQ — ну уж ооооочень хорошо описан, для филологов.

Есть еще масса массовых масс решений. Именно в такой формулировке. Но… или задротные, или оверкил, или недоступные пока что моему левелу. Но судя по отзывам коллег, для моей реализации оба решения подходят идеально.

Кстати, похвалили за код. Типа опрятный, обложенный тестами, описанный, задокументированный… Прям аж приятно. ) Стоит напомнить, что я всерьез взялся за вожжи мягко говоря недавно. )

Вот еще бы кто подсказал простой путь к сердцу OEC API (надо при получении ответа на GET открывать/закрывать ордера, вся математика в NT). ))) Коннектор там запилить я смог, а вот ордерпостилка не получается, не смотря на примеры…

Мост NinjaTrader -> OEC Trader

Господа кодеры, прошу идейного совета, но с практическими направлениями. Есть задача портировать генерируемые стратегией в NT трейды на OEC Trader. Т.к. я сишарплю, а парни за стенкой ноудджиесят, получить у них качественный совет не получилось.

Текущее решение сделано в режиме хелоуворлда — пишем генерируемые трейды StreamWriter'ом в ТХТ, потом слушаем ТХТ файл FileSystemWatcher'ом и торгуем в ОЕС.

Когда работает одна стратежка, то все выглядит чин-чин, но ессно когда одновременно работают 2+ стратежки, то при вызове StreamWriter по концу часа несколькими идеями код матерится (файл блаблабла занят другим процессом). Делать многопоточный кастыль для передачи трейдов через ТХТ? Мне кажется это некошерно… Смотрю в сторону WCF… Но там не нашел применимых примеров. Там только калькуляторы, которые я не могу в мозгу перевернуть в то, что мне нужно.

Так вот вопрос — абстрагируясь от NT и ОЕС (они умеют обычный C# без проблем), что лучше выбрать для решения задачи? Если аргументы в пользу ТХТ+Thread, то я готов подвинуться религией. Если в сторону WCF, то пните в нормальный пример. Не калькулятор, а где через службу одна прога отправляет что-то как команду, а вторая прога глотает как команду.

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

Кодинг

#region History
Первый подход к коду я совершил в 9-м классе, когда были такие черные YAMAHA в домах Юного техника (кто в курсе о чем я — плюсуем). Это был Бейсик и Турбо Паскаль. Но тогда я понял что «это не мое», и забыл.

Второй подход был в 2010-м году, когда я с коллегой решил запилить первого робота. Он пилил, я придумывал. ) Ессно, всё ничего не получилось. ) Хотя был получен бесценный опыт, пройдены поля граблей и на лбу появилась титановая пластина. Тогда я научился более менее читать код, но попытки что-то закодить приводили к тому, что я не мог толком понять даже как появляется этот долбанный Hello World.

Потом был 2012-й, тогда я всерьёз сошел с ума, и написал целых три программулины. Одна умела парсить тики в нужные ТФ, вторая — это знаменитый All Prices, третья была… Уж и не вспомню. Сказать что этот код тогда написал я — нет. Меня пытался выучить этому ремеслу один очень хороший человек, и я буквально под диктовку писал код. Естественно, без его сопровождения I could barely make it to Hello World. Зато научился делать кнопочки в

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

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