Постов с тегом "c#": 144

c#


Кодинг

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

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

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

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

Производительность роботов на C# (NinjaTrader).

    • 23 марта 2017, 00:26
    • |
    • Dzam
  • Еще

Производительность роботов на C# (NinjaTrader).

 Производительность роботов на C# (NinjaTrader).
Перед тем, как использовать в своем роботе переменные типа Dictionary или List, если у вас производится частое обращение к ним, обязательно проведите анализ на производительность. Вот мой кусочек анализа.

Для примера описываем переменные:

private List<KeyValuePair<int, string>> listArray;
private Dictionary<int, string> dictArray;

По сути будем иметь набор связок Integer и String. Содержание в данном случае не особо важно. Важно то, что это содержание одинаково в обеих переменных.
А теперь просто заполним эти переменные одинаковыми записями:

// Переменные для замера времени выполнения
sw1 = new Stopwatch();
sw2 = new Stopwatch();

// Инициализация переменных
listArray = new List<KeyValuePair<int, string>>();
dictArray = new Dictionary<int, string>();

// Стартуем замер производительности
sw1.Start();
for (int i = 0; i < 1000000; i++)
{
//Добавляем переменную в массив
    listArray.Add(new KeyValuePair<int, string>(i, "test"));
}

// Останавливаем замер производительности
sw1.Stop();
// Выводим результат
Print("List: " + sw1.ElapsedMilliseconds);
// Очищаем список
listArray.Clear();


// Стартуем второй счетчик производительности
sw2.Start();
// Запускаем второй цикл
for (int i = 0; i < 1000000; i++)
{
    dictArray.Add(i, "test");
}

// Останавливаем счетчик
sw2.Stop();
// Выводим результат
Print("Dictionary: " + sw2.ElapsedMilliseconds);


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

C# Plaza2 вопрос по ошибкам

Всем привет.

Дописал в плазовский коннектор получение данных с фондового рынка.
Но начала появляться мистика...
Вечером биржа отключает потоки фондового рынка.
После отключения потоков фондового рынка, я пытаюсь их восстановить, а вдруг ошибка в слушателе.
Если приложение работало долго, например, сутки, то иногда(!) при восстановлении слушателей,
возникает блокировка основного потока, на несколько секунд. Что приводит к еще массе проблем.

Сталкивался кто с подобной ситуацией ?
Подскажите, а то голову уже сломал…

Предновогоднее обновление QuikSharp

Хочу поделиться новостью о предновогоднем обновлении библиотеки QuikSharp.

Обновление привнесло ряд новых функций, а также демонстрационное приложение на WinForm, о котором так часто просили пользователи.

Берем тут: https://github.com/finsight/QuikSharp

QuikSharp — это динамически подключаемая библиотека, для обеспечения связи ваших роботов, написанных на C#, с терминалом Quik.

QuikSharp — это «Open source-проект», который развивается благодаря участию других пользователей. Отдельный «респект» хочу выразить автору проекта, т.к. это именно то, что я долго искал когда понял, что уперся в некоторые существенные ограничения QLua.
Легче всего с этой библиотекой будет освоиться тем, что уже пробовал реализовать свои торговые стратегии на QLua, т.к. большинство функций взяты именно из QLua. Но по сравнению с QLua, мы получаем значительно большие возможности, в том числе по производительности. Когда у меня количество одновременно запущенных роботов на QLua превысило десяток, то я столкнулся с очень большими проблемами производительности. Квик стал жрать память в каких-то неимоверных объемах, а загрузка ЦП выросла до 80% (в спокойное время). Перейдя на QuikSharp (правда, перед этим пришлось заняться изучением C#) я одномоментно решил большинство проблем производительности, получил удобный инструмент для создания пользовательских интерфейсов, а также более удобное средство разработки самих роботов. Сейчас у меня одновременно крутятся в реальном времени более 4-х десятков роботов (если считать отдельным роботом сочетание ТС и конкретного инструмента), и при этом я не испытываю НИКАКИХ проблем с производительностью (терминал и роботы крутятся на ноутбуке).

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

Есть ли такой Вьювер?

    • 16 ноября 2016, 20:51
    • |
    • iuiu
  • Еще
Ребзы, хай!
Есть ли такой Вьювер по типу ЛЧИвьювера, чтобы он:
1. Брал исторические данные тиков по конкретному инструменту из csv/txt файла(ов);
2. Брал данные своих(чужих) сделок из csv/txt файла;
3. И отображал динамически эту торговлю, как кинцо, с отображением сделок на экране?
Ну и плюс к этому фильму: чтобы можно было остановиться, отмотать назад, отмотать вперед, менять ТФ свечек(баров) от секуды и выше, отображать в отдельном окне таблицу всех сделок и там же отмечать входы выходы (согласно таблицы сделок), менять скорость этого фильма как в большую, так и в меньшую сторону?


Как видео фильм по историческим данным на основе статистики сделок. 

Может есть такое, а то я уже решил C# изучить, чтобы поглядеть на все это, но может есть готовый Вьювер такой?
А если, кто возьмется написать, сколько будет стоить?

В идеале, на основе этого вьювера, потом сделать тестер, как на исторических данных, так и на реалтайм из Квика(к примеру).

Нужен жизненный совет.

Мне 28 лет.
Пришло ощущение того, что развитие мое как-то застопорилось. Надо предпринимать какие-то меры.
В следующем году буду свободен от работы 2 месяца (работодатель частично оплатит дополнительный отпуск). Есть желание подтянуть программирование (С#). Читаю Джефри Рихтера CLR via C# и других авторов. Профильное образование есть. Практики маловато. Что лучше посвятить это время самостоятельному изучению или попробовать устроится на это время на стажировку (трамплин) без оплаты на вакансию junior software engineer или кофе варить)) в какую-нибудь IT-компанию?
Программирование полезная штука. К тому же в перспективе рассматриваю вариант заработка этим делом себе на жизнь.

Прошу совета. Может кто-то скажет, что все это глупо и надо рвануть на пару месяцев в Таиланд.

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

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

  Для чего?

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

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

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


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

>>> C# для Linux , MacOS : официальный релиз 1.0

We are excited to announce the release of .NET Core 1.0, ASP.NET Core 1.0 and Entity Framework Core 1.0, available on Windows, OS X and Linux! .NET Core is a cross-platform, open source, and modular .NET platform for creating modern web apps, microservices, libraries and console applications.

(для нас) Речь идет об официальной поддержке консольных приложений С# на линукс и макос, те можно будет делать консольных (с веб-мордой) роботов для линукс и макос используя C#. 
Ждем официальных заяв от брокеров и сервисов.

ссылко









QuikSharp. Какие порты слушает Quik?

Кто использует  QuikSharp помогите.
Строка кода из QuikSharp.

_responseClient.Connect(«localhost», 34130);

Выбрасывает SocketException.
«подключение не установлено т.к сервер отверг запрос на подключение 127.0.0.1:34130»
Пробовал в рабочий день.
В Система -> Соединения    прописан порт 15100. но это не то совсем.
Не коннектится к порту в чем может быть проблема?
Может я какие настройки в Квике не прописал?
Заранее всем спасибо.

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