• Demo счет NinjaTrader, регистрируется в брокерской компании NinjaTrader Brokerage . NinjaTrader™, LLC
    Ссылка на демо счет NinjaTrader
    Фид на соединении Continuum/CQG.
    Для справки: Continuum - это брэнд CQG, и ни чем они не отличаются друг от друга.
  • Сколько я реально плачу комиссии?
    Подробнее по ссылке

Вопросы программирования

Привал

Well-Known Member
NinjaTrader
#1
Код:
				if ( Instrument != null)
				{
					Print( "Истечение контракта по " + Instrument.ToString() 
					+ " " + Instrument.Expiry.ToLongDateString());
				}
Выдает
Истечение контракта по ES 09-12 Globex 1 сентября 2012 г.

Что нужно сделать что бы получать правильную информацию ?

Описание контракта
 

broker_mirus

Administrator
Член команды
Помогли тебе - помоги другим!
NinjaTrader
#2
Привал сказал(а):
Код:
				if ( Instrument != null)
				{
					Print( "Истечение контракта по " + Instrument.ToString() 
					+ " " + Instrument.Expiry.ToLongDateString());
				}
Выдает
Истечение контракта по ES 09-12 Globex 1 сентября 2012 г.

Что нужно сделать что бы получать правильную информацию ?

Описание контракта
Сложно сказать, откуда берется 1 сентября. В Instrument Manager стоит ролловер 13ого числа.
 

RRK

New Member
NinjaTrader
#3
Всем добрый день!
Пробовал устанавливать Гоми индикатор, только с ним возни очень много. Как говориться - "без бутылки не разберешься сразу". ::smile24.gif:: Говорят связано это с тем, что он не может использовать таймсерии которые сохраняются в файлах истории Ниньзи. (Правда я этим разговорам не поверил, как это может у такого продвинутого продукта такое быть?) Поэтому поступающие данные он якобы записывает специальным рекордером, чтобы потом использовать в своих индикаторах.
Между тем почитав руководство нашел следующуй образец кода:

Код:
Examples
protected override void OnMarketData
(MarketDataEventArgs e)
{
// Print some data to the Output window
if (e.MarketDataType == MarketDataType.Last)
Print("Last = " + e.Price + " " + e.
Volume);
else if (e.MarketDataType == MarketDataType.Ask)
Print("Ask = " + e.Price + " " + e.Volume);
else if (e.MarketDataType == MarketDataType.Bid)
Print("Bid = " + e.Price + " " + e.Volume);
}
Из приведенного примера, весьма похоже, что программный доступ к таймсериям в Ниньзе есть, в том числе и к Бидам и Аскам, их ценовым и объемным значениям. Если их распечатать можно, то почему бы и в индиктар не записать? Тогда становиться непонятно, зачем написали такой замудренный код для пакета Гоми-индикаторов?
 

RRK

New Member
NinjaTrader
#5
vladko сказал(а):
Это доступ только к реал-тайм данным. На истории нет такого, потому и надо записывать.
Но ведь в Ниньзе есть функция закачки исторических данных в том числе и объемов (отдельно по бидам и аскам), причем в тиковой форме. Вот здесь, ниже привел скрин, т.е. в базе данных Ниньзи все это есть. Там есть Биды, Аски, Ласты. Как говориться закачал тики и используй в коде. Не понимаю что мешает эти данные использовать. Может есть какой-то нюанс, в связи с которым база данных Ниньзи не доступна для индикаторов?
 

Вложения

#6
Во-первых именно что отдельно. А нужно все вместе. Ласт, Аск, Бид.
Во-вторых необходимые функции просто не работают на истории (GetCurrentAsk, например).
 

RRK

New Member
NinjaTrader
#7
vladko сказал(а):
Во-первых именно что отдельно. А нужно все вместе. Ласт, Аск, Бид.
Во-вторых необходимые функции просто не работают на истории (GetCurrentAsk, например).
Ну и ну! Честное слово, слабоватый язык в Ниньзе. Такие очевидные функции до сих пор еще не сделали. Может в 8-й Ниньзе появяться?
То что файлы отдельно, это не так страшно, их можно программно синхронизировать и прочитать в один массив, лишь бы была функция чтения исторических данных.
 
#8
RRK сказал(а):
Честное слово, слабоватый язык в Ниньзе.
Это не язык слабоват (он мощнейший), а просто закрыт доступ к некоторым функциям пока.

RRK сказал(а):
То что файлы отдельно, это не так страшно, их можно программно синхронизировать и прочитать в один массив, лишь бы была функция чтения исторических данных.  
Нельзя их программно синхронизировать на 100%. Информации о времени тика недостаточно (нужен миллисекундный таймштамп). Да и функции чтения исторических данных как таковой тоже нету. Можно только взять все данные что есть на графике.
На сегодня у меня есть решение этой проблемы только для пользователей фида от iqfeed.net (что является оффтопиком на данном форуме. если интересно - в личку).
 

RRK

New Member
NinjaTrader
#9
А вот интересно, ценовые индикаторы ведь строяться по историческим данным, к примеру какой-нибудь осцилятор. Т.е. ценовые данные получается доступны из истории, иначе откуда тогда ценовый осцилятор берет данные? Получается, что не доступны из истории только данные по объемам (бидам, аскам)?
 
#10
RRK сказал(а):
Получается, что не доступны из истории только данные по объемам (бидам, аскам)?  
По отдельности все доступно (можно построить график по бидам или аскам), нельзя только привязать их к цене ласт.
 

RRK

New Member
NinjaTrader
#11
В общем понятно, что ничего не понятно! ::smile24.gif:: Я то привык к языку MQL, и отсутствие очевидных функций в Ниньзе, которые само с собой разумеются в MQL, вызвало мое удивление, к тому же, как Вы говорите, что язык в Ниньзе мощнейший. В любом случае спасибо, что прояснили кое-какие моменты. Меня Ниньзя заинтересовала, тем что в нее поступают биржевые данные, которых нет в Метатрейдерах. Вот и захотелось по эксперементировать на Ниньзе, а они оказывается не так доступны, как хотелось бы.
 

RRK

New Member
NinjaTrader
#12
vladko сказал(а):
RRK|15:24 сказал(а):
Получается, что не доступны из истории только данные по объемам (бидам, аскам)?  
По отдельности все доступно (можно построить график по бидам или аскам), нельзя только привязать их к цене ласт.
А в каких индикаторах используется цена Ласт? И зачем она нужна? Разве не достаточно Бидов и Асков, например для построения горизонтальных профилей объемов, тех же кластерных графиков по подобию футпринта? Достаточно эти биды и аски впихнуть в бар, которые по времени удовлетворяют его открытию и закрытию.
 
#13
Ласт используется во всех индикаторах. Аск и бид нужен (в Gome) только для косвенного определения куда отнести объем тика: в покупки или продажи).
Для построения горизонтальных профилей объемов и тех же кластерных графиков по подобию футпринта (исключая дельту) аски и биды вовсе не нужны. Хватает тиков ласт.
 

RRK

New Member
NinjaTrader
#14
vladko сказал(а):
Ласт используется во всех индикаторах. Аск и бид нужен (в Gome) только для косвенного определения куда отнести объем тика: в покупки или продажи).
Для построения горизонтальных профилей объемов и тех же кластерных графиков по подобию футпринта (исключая дельту) аски и биды вовсе не нужны. Хватает тиков ласт.
Чем дальше заходит разговор, тем больше становиться не понятного. ::sad24.gif:: Если цены ласт хватает, как тогда узнать по какой цене (бид или аск) прошел этот ласт? Ведь ласт в Ниньзе несет в себе только время, цену и объем, но в нем нет где этот ласт оказался - на биде или аске, а то и между ними. Чувствую я, что дело это запутанное, просто так не разберешся. Вроде понятие есть как работает стакан, а как начинаешь углубляться, так много вопросов возникает непонятных.
 
#15
Так знание о том где находится ласт по отношению к аску или биду и нужно в данном случае для построения дельты. Для объемного горизонтального профиля и профиля по барам аски и биды не нужны.
 

RRK

New Member
NinjaTrader
#16
Vladko, подскажи пожайлуста, как интерпретировать данные из базы Ниньзи на следующих скринах. Или может, где-нибудь есть справочник по Менеджеру данных, где расписано, что означают таймсерии по этим скринам. Я то поначалу понял, что эти данные беруться с ленты!? Или это не так?
 

Вложения

RRK

New Member
NinjaTrader
#20
vladko сказал(а):
А что непонятно?
Что это за объем на ластах? Я так понимаю, что цена ласт всегда бывает или на биде или на аске. Тогда весь объем укладывается на биды и аски. А тут оказывается еще есть какой-то объем ластов. Может я что-то не понимаю в работе стакана? Видимо есть какие-то нюансы?