Постов с тегом "Ninjatrader": 126

Ninjatrader


Поводыри. Смотрим за нефтью и индексом доллара без задержек с помощью демки от NinjaTrader

Я торгую Сишку, редко Ришку. Предпочитаю один инструмент, привыкаешь чувствовать его. В общем натаскиваю свой нейромоторный интерфейс на один инструмент и не распыляю внимание. Поскольку на наш рынок очень сильно влияет нефть и доллар, то слежу за ними. Зачастую есть корреляция с нашими инструментами, как минимум можно объяснить какую-то движуху нашего рынка и ответы прекрасно видны в нефти или долларе. Из нефти смотрю Brent и WTI одновременно. Но, увы, не напрямую, а через фьючерсы. Поскольку роботы и арбитражеры чутко реагируют на колебания, то достаточно смотреть за фьючерсом на нефть CL и фьючерсом на индекс доллара DX. Brent в Нинзе можно смотреть лишь на платном аккаунте. Но Br дает и наша биржа (да, понимаю, что это наш фьючерс и он отличается от их, но арбитражеры всё выравнивают ведь, в рамках минуток и пятиминуток не критично). Т.е. Brent я смотрю с нашей биржи, а CL и DX в Нинзе.

Если кто-то торгует на нашей бирже и ещё не использует оперативные забугорные данные влияющие на наш рынок, которые не дают наши брокеры, пост будет полезен. Также пост будет полезет тем коллегам, кто каждые две недели регистрирует новый мейл для доступа к Нинзе :).

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

ninjatrader прошу совета

Друзья подскажите пожалуйста:
1. через Dorman Trading или Phillipi Capital. в чем разница.
2. я вижу в России. как проходит вывод денег и как решать вопрос с валютным контролем и тд

 

спасибо! 


Тестер в Ниньзя Трейдер для инструментов Московской биржи

Вчера вечером, когда этот ролик уже был залит на канал, мне сообщили, что выложили первую тестовую версию нового коннектора Ниньзи 7 к Московской бирже — http://ninjafutures.ru/threads/torgovlja-na-rossijskom-rynke-cherez-ninjatrader.1472/page-10#post-29454




Мост NinjaTrader -> OEC Trader 2

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

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

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

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

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

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

mzFootprint Tutorial - MZpack 3 for NinjaTrader 8

mzFootprint Tutorial — MZpack 3 for NinjaTrader 8
(на англ. языке)


Мост 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);


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

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