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

C#


#пора_граммировать [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. Зато научился делать кнопочки в

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

Производительность роботов на 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 вопрос по ошибкам

Всем привет.

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

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

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